IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Requêtes MySQL Discussion :

Probleme de mise à jour et de modification d'une base


Sujet :

Requêtes MySQL

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    20
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 20
    Points : 10
    Points
    10
    Par défaut Probleme de mise à jour et de modification d'une base
    Bonjour,
    Je recontre un probleme avec la mise à jour de la base de donnée. En effet, ca ne prend pas en compte quand je veux faire un update de mes informations.

    voici l'update :

    mysql_query("UPDATE Information SET Annees='" . $Annees . "', date='" . $date . "', lieu='" . $lieu . "', nom_sortie='" . $nom_sortie . "', classe='" . $classe . "', profs='" . $profs . "', resume='" . $resume . "' WHERE id=" . $_POST['id_texte']);

    Il ne me fait aucune erreur mais ne change rien du tout dans la base

    J'ai la meme erreur pour l'ajout d'information :

    mysql_query("INSERT INTO Information VALUES('', '" . $Annees . "', '" . $date . "', '" . $classe . "''', '" . $nom_sortie . "', '" . $lieu . "', '" . $profs . "', '" . $resume . "')");


    Merci d'avance pour vos réponses et n'hésitez pas à me demander si ce n'est pas tres clair ou si vous voulez plus d'information ^^

  2. #2
    Membre actif Avatar de Ryan Sheckler
    Homme Profil pro
    Moine
    Inscrit en
    Novembre 2005
    Messages
    196
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Tarn (Midi Pyrénées)

    Informations professionnelles :
    Activité : Moine

    Informations forums :
    Inscription : Novembre 2005
    Messages : 196
    Points : 219
    Points
    219
    Par défaut
    Bonjour,

    Dans un premier temps, pour éclaircir, je te propose

    1- de définir ta requête dans une variable.

    2- d'ôter toutes ces concaténations inutiles.

    Tu verras plus clair, s'il y a un problème de ponctuation ou autre.


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $ma_requête = "UPDATE Information SET Annees='$Annees', date='$date'', lieu='$lieu', nom_sortie='$nom_sortie', classe='$classe', profs='$profs', resume='$resume' WHERE id='$_POST['id_texte']'";
    Ensuite seulement tu fais l'appel.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    mysql_query($ma_requête);
    Qu'obtiens-tu ?

  3. #3
    Rédacteur
    Avatar de pcaboche
    Homme Profil pro
    Inscrit en
    Octobre 2005
    Messages
    2 785
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Singapour

    Informations forums :
    Inscription : Octobre 2005
    Messages : 2 785
    Points : 9 716
    Points
    9 716
    Par défaut
    Quand tu fais un:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    INSERT INTO Information VALUES('', ...
    Je parie que la première valeur correspond à l'identifiant (avec auto_increment). Plusieurs personnes on eu un problème en procédant ainsi: il ne faut pas spécifier de chaîne vide quand tu as un champ en auto_increment (plusieurs exemple sur ce forum).

    Sinon, quel est exactement le message d'erreur renvoyé par MySQL (renvoyé par la fonction mysql_error() )? Tu n'as pas de problème avec les majuscules dans le nom de tes tables? Moi oui (ça dépend de ta configuration).

  4. #4
    Membre à l'essai
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    20
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 20
    Points : 10
    Points
    10
    Par défaut re
    Alors,

    Pour répondre à Mikanou quand j'exécute les lignes de commande que tu as proposé, il me sort :
    Parse error: parse error, unexpected T_ENCAPSED_AND_WHITESPACE, expecting T_STRING or T_VARIABLE or T_NUM_STRING in /home/rtel/etu/rt2004/eherrera/www/ext/site/sitebd/liste_texte.php on line 55

    Ensuite les lignes que j'avais tapé avant ne font aucune erreur !! mais elles ne font rien non plus donc

    Pas facile pas facile

  5. #5
    Membre actif Avatar de Ryan Sheckler
    Homme Profil pro
    Moine
    Inscrit en
    Novembre 2005
    Messages
    196
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Tarn (Midi Pyrénées)

    Informations professionnelles :
    Activité : Moine

    Informations forums :
    Inscription : Novembre 2005
    Messages : 196
    Points : 219
    Points
    219
    Par défaut
    J'ai peut être introduis une erreur mais je voulais dire qu'il faut diviser, simplifier.

    Par exemple : enlever les concaténations.
    Et faire un test en tentant de modifier là ou l'ID est égal à 1, par exemple, comme dans l'exemple ci-dessous.

    Si avec ça, ça fonctionne, tu peux aller plus à fond et récupérer ton ID dans une variable, comme avant.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    $ma_requête = "UPDATE Information SET Annees='$Annees', date='$date', lieu='$lieu', nom_sortie='$nom_sortie', classe='$classe', profs='$profs', resume='$resume' WHERE id=1";
     
    mysql_query($ma_requête);

  6. #6
    Rédacteur
    Avatar de pcaboche
    Homme Profil pro
    Inscrit en
    Octobre 2005
    Messages
    2 785
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Singapour

    Informations forums :
    Inscription : Octobre 2005
    Messages : 2 785
    Points : 9 716
    Points
    9 716
    Par défaut
    Et puis, si tu as la possibilité, tu testes ta requête sous phpMyAdmin avant, et quand elle marche, tu l'adaptes et l'intègres à ton code PHP.

  7. #7
    Membre à l'essai
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    20
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 20
    Points : 10
    Points
    10
    Par défaut re
    Alors,

    En simplifiant comme tu as dis, j'ai toujours le même problème que ma base ne fait pas de mise à jour.
    Ce qui revient au code que j'avais taper précédement.

    L'erreur ne vient peut être pas de la mais je ne vois vraiment pas ou cela peut être puisqu'aucune erreur est générée...


    Ce code sous mysql fonctionne :
    "UPDATE Information SET Annees='" . $Annees . "', date='" . $date . "', lieu='" . $lieu . "', nom_sortie='" . $nom_sortie . "', classe='" . $classe . "', profs='" . $profs . "', resume='" . $resume . "' WHERE id=1";

    Mais uniquement sous mysql , en le mettant sur le site impossible de modifier ou de mettre à jour.

    Persistons persistons, on l'aura

  8. #8
    Membre actif Avatar de Ryan Sheckler
    Homme Profil pro
    Moine
    Inscrit en
    Novembre 2005
    Messages
    196
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Tarn (Midi Pyrénées)

    Informations professionnelles :
    Activité : Moine

    Informations forums :
    Inscription : Novembre 2005
    Messages : 196
    Points : 219
    Points
    219
    Par défaut
    • 1- Va dans phpMyAdmin.

      2- Sélectionne la base en question.

      3- Va sur la table que tu souhaites travailler.

      4- Clique sur "browse" pour visualiser les enregistrement.

      5- Sélectionne une des lignes que tu visualise.

      6- Clique, au niveau de la ligne, sur le bouton "Edit" (éditer).

      7- Modifie une ou plusieurs valeurs et enregistre.


    Est-ce que ça fonctionne ?

  9. #9
    Membre à l'essai
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    20
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 20
    Points : 10
    Points
    10
    Par défaut re
    ui ui la modification prend effet,

    Mais l'erreur ne vient pas de la alors si ca fonctionne sous phpmyadmin non ?

  10. #10
    Rédacteur
    Avatar de pcaboche
    Homme Profil pro
    Inscrit en
    Octobre 2005
    Messages
    2 785
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Singapour

    Informations forums :
    Inscription : Octobre 2005
    Messages : 2 785
    Points : 9 716
    Points
    9 716
    Par défaut Re: re
    Ben oui: si ça marche sous phpMyAdmin, c'est que la requête est juste, donc l'errreur vient d'ailleurs...

  11. #11
    Membre régulier
    Profil pro
    Inscrit en
    Juin 2004
    Messages
    225
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2004
    Messages : 225
    Points : 97
    Points
    97
    Par défaut
    as tu essayé d'afficher ta requete : echo $marequete ??

    NL

  12. #12
    Membre à l'essai
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    20
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 20
    Points : 10
    Points
    10
    Par défaut re
    Voici le code en question

    <?
    require('connect.php');

    //-----------------------------------------------------
    // Vérification 1 : est-ce qu'on veut un nouveau texte ?
    //-----------------------------------------------------

    if (isset($_POST['titre']) AND isset($_POST['contenu']) AND isset($_POST['lieu']))
    {
    $nom_sortie = addslashes($_POST['nom_sortie']);
    $lieu = addslashes($_POST['lieu']);
    $profs = addslashes ($_POST['profs']);
    // On vérifie si c'est une modification de texte ou pas

    if ($_POST['id_texte'] == 0)
    {
    // Ce n'est pas une modification, on crée une nouvelle entrée dans la table
    mysql_query("INSERT INTO information VALUES('" . $nom_sortie . "', '" . $lieu . "', '" . $profs . "')");
    }

    else
    {
    // C'est une modification, on met juste à jour le titre et le contenu
    mysql_query("UPDATE Information SET nom_sortie='" . $nom_sortie . "', lieu='" . $lieu . "', profs='" . $profs . "' WHERE id=" . $_POST['id_texte']);
    }
    }

    //--------------------------------------------------------
    // Vérification 2 : est-ce qu'on veut supprimer un texte ?
    //--------------------------------------------------------

    if (isset($_GET['supprimer_texte'])) // Si on demande de supprimer un texte
    {
    // Alors on supprime le texte correspondant
    mysql_query('DELETE FROM Information WHERE id=' . $_GET['supprimer_texte']);
    }
    ?>

    <table align=center>
    <tr>
    <th>Modifier</th>
    <th>Supprimer</th>
    <th>Nom de la sortie</th>
    <th>Lieu</th>
    </tr>

    <?
    $retour = mysql_query("SELECT * FROM Information ORDER BY id DESC",$lien);
    while ($donnees = mysql_fetch_array($retour)) // On fait une boucle pour lister les revues
    {
    ?>

    <tr>
    <td><? echo '<a href="inserer_texte.php?modifier_texte=' . $donnees['id'] . '">'; ?>Modifier</a></td>
    <td><? echo '<a href="liste_texte.php?supprimer_texte=' . $donnees['id'] . '">'; ?>Supprimer</a></td>
    <td><? echo stripslashes($donnees['nom_sortie']); ?></td>
    <td><? echo stripslashes($donnees['lieu']); ?></td>
    </tr>

    <?
    } // Fin de la boucle qui liste les revues
    ?>

    </table>

    </body>
    </div>
    </div>
    <div id="break"></div>
    </body>

    nine la requête marche mais son exécution non

    Ceci est le code des mises à jours ou modification

    Et voila la page qui l'appelle :

    <?
    require('connect.php');

    if (isset($_GET['modifier_texte'])) // Si on demande de modifier un texte
    {
    // On récupère les infos du texte correspondant
    $connection = mysql_connect('localhost', 'root');
    $retour = mysql_query("SELECT * FROM Information WHERE id='". $_GET['modifier_texte']."'", $connection);
    $donnees = mysql_fetch_array($retour);

    // On place le titre et le contenu dans des variables simples
    $nom_sortie = stripslashes($donnees['nom_sortie']);
    $resume = stripslashes($donnees['resume']);
    $date = stripslashes($donnees['date']);
    $classe = stripslashes($donnees['classe']);
    $profs = stripslashes($donnees['profs']);
    $lieu = stripslashes($donnees['lieu']);
    $id_texte = $donnees['id']; // Cette variable va servir à se souvenir que c'est une modification
    }
    else // C'est qu'on rédige un nouveau texte
    {
    // Les variables $titre et $contenu sont vides, puisque c'est un nouveau texte
    $nom_sortie = '';
    $resume = '';
    $lieu = '';

    $id_texte = 0; // La variable vaut 0, donc on se souviendra que ce n'est pas une modification
    }
    ?>

    <form action="liste_texte.php" method="post">
    <p>Nom de la sortie : <input type="text" size="30" name="Nom de la sortie" value="<? echo $nom_sortie; ?>" /></p>

    <p>
    Resume :<br />
    <textarea name="resume" cols="50" rows="10">
    <? echo $resume; ?>
    </textarea><br />

    <p>Annees :
    <select name="annees">
    <option value="2003/2004" <? echo $lieu = '2003/2004'; ?>>2003/2004</option>
    <option value="2004/2005" <? echo $lieu = '2004/2005';?>>2004/2005</option>
    <option value="2005/2006" <? echo $lieu = '2005/2006';?>>2005/2006</option>
    <option value="2006/2007" <? echo $lieu = '2006/2007'; ?>>2006/2007</option>
    </select>
    </p>


    <input type="hidden" name="id_texte" value="<? echo $id_texte; ?>" />
    <input type="submit" value="Envoyer" />

    </p>
    </form>

    </body>
    </html>




    Enfin voici plus précisément la page directement qui est en ligne

    http://kheops.unice.fr/~eherrera/ext/site/sitebd/liste_texte.php

  13. #13
    Rédacteur
    Avatar de pcaboche
    Homme Profil pro
    Inscrit en
    Octobre 2005
    Messages
    2 785
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Singapour

    Informations forums :
    Inscription : Octobre 2005
    Messages : 2 785
    Points : 9 716
    Points
    9 716
    Par défaut
    Je pense que ma réponse va te scier: au lieu d'écrire ceci:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    INSERT INTO information VALUES('$nom_sortie', '$lieu', '$profs')
    il faut écrire cela:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    INSERT INTO information(nom_sortie, lieu, profs)
    VALUES('$nom_sortie', '$lieu', '$profs')
    Est-ce que tu vois pourquoi?

    (Edit: suppression de guillemets en trop)

  14. #14
    Membre actif Avatar de Ryan Sheckler
    Homme Profil pro
    Moine
    Inscrit en
    Novembre 2005
    Messages
    196
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Tarn (Midi Pyrénées)

    Informations professionnelles :
    Activité : Moine

    Informations forums :
    Inscription : Novembre 2005
    Messages : 196
    Points : 219
    Points
    219
    Par défaut
    Je devine que tu as ... easy php 1.8.0.1, est-ce exact ?

  15. #15
    Membre à l'essai
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    20
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 20
    Points : 10
    Points
    10
    Par défaut
    Citation Envoyé par pcaboche

    Est-ce que tu vois pourquoi?
    Heu non je vois pas trop pourquoi faire cela mais je te rappelle qu'apparament la fonction que j'ai marche, je pense comme d'autres que l'erreur n'est pas forcément dans la requête puisque phpmyadmin l'excécute bien.

    Et ui j'utilise easyphp chez moi, et quand jsuis à l'iut nous avons notre serveur sous apache.

    Quand ca veut pas ca veut pas !!

  16. #16
    Rédacteur
    Avatar de pcaboche
    Homme Profil pro
    Inscrit en
    Octobre 2005
    Messages
    2 785
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Singapour

    Informations forums :
    Inscription : Octobre 2005
    Messages : 2 785
    Points : 9 716
    Points
    9 716
    Par défaut
    Citation Envoyé par flambo88
    Et oui j'utilise easyphp chez moi, et quand jsuis à l'iut nous avons notre serveur sous apache.
    Je pense que l'erreur est toute simple alors: avec la configuration d'easyPHP, MySQL accepte que les noms des tables contiennent des majuscules, alors que ce n'est pas forcément le cas sur ton serveur sous linux à l'IUT.

    C'est d'autant plus embêtant qu'avec la méthode de conception Merise, on dit de mettre des majuscules dans les noms des entités.

    Autre petit détail, tu fais un:
    $connection = mysql_connect('localhost', 'root');
    Je ne pense pas qu'à l'IUT, tu aies les droits "root".

    Bref, j'essaye de comprendre ce qui ne va pas (même si ça veux dire envisager beaucoup de raisons différentes)

  17. #17
    Rédacteur
    Avatar de pcaboche
    Homme Profil pro
    Inscrit en
    Octobre 2005
    Messages
    2 785
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Singapour

    Informations forums :
    Inscription : Octobre 2005
    Messages : 2 785
    Points : 9 716
    Points
    9 716
    Par défaut
    Citation Envoyé par pcaboche
    Je pense que ma réponse va te scier: au lieu d'écrire ceci:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    INSERT INTO information VALUES('$nom_sortie', '$lieu', '$profs')
    il faut écrire cela:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    INSERT INTO information(nom_sortie, lieu, profs)
    VALUES('$nom_sortie', '$lieu', '$profs')
    Est-ce que tu vois pourquoi?
    Parce que dans ta table "information", tu as un champ id, alors que quand tu tu fais ton INSERT, tu ne précise pas ton id, car il est auto-incrémenté (et ne me dit pas: "ça marche avec EasyPHP, donc y'a pas d'erreur dans ma requête" parce que je pense que tes profs s'en fichent pas mal que ça marche chez toi: ce qui les interesse, c'est que ça marche à l'IUT !).


    Enfin, dans tes script PHP, tu dois faire SYSTEMATIQUEMENT des tests pour vérifier si tes mysql_connect, mysql_query et autres ont bien marché. En cas d'erreur, faire un mysql_error() pour afficher l'erreur qui s'est produite...

  18. #18
    Membre à l'essai
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    20
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 20
    Points : 10
    Points
    10
    Par défaut re
    Enfin,

    Je ne compare pas easyphp au serveur de l'IUT. Tu as raison sur le fait qu'on utilise pas 'root' à l'IUT mais quand j'ai posté les fichiers, j'ai mis ceux que j'avais chez moi.

    Enfin, au moment ou tu postais le message en disant qu'il y avait peutre être un problème de majuscule, j'étais entrain de vérifier les lignes... et effectivement il y a eu un problème de majuscule !

    Mais quand tu m'as dis
    INSERT INTO information VALUES('$nom_sortie', '$lieu', '$profs')
    J'ai appris que en procédant comme ca on avait pas forcément un ordre à donner dans la base, mais en fesant le code que j'avais avant il fallait bien tout mettre dans le même ordre que la tab.


    Donc le problème de mise à jour et de modification est résolu.

    Merci à ceux qui m'ont aidé (surtout toi ca pcaboche)
    à bientot je pense vu que j'ai pas encore fini de faire pleins d'erreurs stupides ^^ :p

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [AC-2010] Mise à jour de la structure d'une base
    Par docjo dans le forum Requêtes et SQL.
    Réponses: 7
    Dernier message: 09/08/2011, 13h32
  2. Probleme de mise à jour de données
    Par sylvanians dans le forum Forms
    Réponses: 1
    Dernier message: 23/05/2006, 12h15
  3. Réponses: 10
    Dernier message: 28/12/2005, 21h52
  4. Probleme de mise à jour de mes Edit Box
    Par bibi_64 dans le forum MFC
    Réponses: 2
    Dernier message: 02/11/2005, 22h49
  5. probleme de mise à jour de BD
    Par k_boy dans le forum Décisions SGBD
    Réponses: 2
    Dernier message: 30/05/2004, 21h58

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo