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

PHP & Base de données Discussion :

fonction update en php avec mysql [MySQL]


Sujet :

PHP & Base de données

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    148
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 148
    Par défaut fonction update en php avec mysql
    Bonjour,

    j'utilise ce script:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    if (mysql_result($requete,0,7)>=$note_date)
    		{
    			$trouve=true;
    		}
    		else
    		{
    			$sql="UPDATE note SET Date='$note_date' WHERE Id='mysql_result($requete,0,0)'";
    			mysql_query($sql) or die ('Erreur : '.mysql_error() ); 
    			$maj=true;
    		}
    j'ai une autre condition plus tard qui fait:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    else if (mysql_query($sql) == false) 
    				{
    					die ("Impossible de créer l'enregistrement.</span></h3> Message d'erreur: ". mysql_error()."<br><br>"."Cliquez ici pour contacter l'administrateur du site. Merci de mentionner le message affiché ci-dessus");
    				}
    				else if ($maj == true)
    				{
    					echo "MAJ !";
    					echo ("</span></h3>");
    					echo ("<br><br>");
    					echo ("<span><p class=\"p1\">Enregistrer une nouvelle note</a></span></p>");
    				}
    très bizarre,

    quand je veux enregistrer une note à une date plus récente, il devrait donc lancer le update.

    il m'indique simplement (maj --> comme si tout était OK)

    je comprend pas trop

    quand je regarde ma base sql --> rien a changé
    Il devrait me dire erreur... s'il y en avait une non ?

    Par contre, si la date est supérieur, il m'indique bien qu'elle est déjà présente dans la base

    une idée ?

    Merci

  2. #2
    Membre Expert Avatar de darkstar123456
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2008
    Messages
    1 895
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mars 2008
    Messages : 1 895
    Par défaut
    hmmm tu ne peux pas tester 2 fois le mysql_query() comme ça.... parce qu'il va essayer deux fois de faire la requête.

    Si tu souhaites vraiment tester, il vaut mieux écrire :

    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
     
    $monTest = mysql_query($sql);
     
    // reste du code
     
     
    if( !$monTest ) { // équivalent à if( $monTest == false )
       // ton code si la requête ne s'est pas exécutée
    }

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    148
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 148
    Par défaut
    re, toujours avec mon problème,

    j'ai épuré mon code...
    Donc quand je fais une insertion, tout se passe bien mais quand j'essaie une modification là il m'indique opération réussie mais ma table n'a pas été modifiée.

    en surfant je suis tombé sur les transaction mysql, et on parle de la fonction "mysql_query("COMMIT");"

    j'ai essayé mais ça marche po !!

    voici mes 2 bouts de code:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    mysql_query("UPDATE notes SET Date='$note_date' WHERE Id='mysql_result($requete_note_doublon,0,0)'");
    mysql_query("COMMIT");
    ou
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    $sql_update="UPDATE note SET Date=$note_date WHERE Id='mysql_result($requete_note,0,0)'";
    mysql_query("COMMIT");
    et pour les 2 j'avais rajouté:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    if (mysql_query($sql_update) == false) 
    {
    die ("Impossible de créer la modification.</span></h3> Message d'erreur: ". mysql_error()."<br><br>"."Cliquez ici pour contacter l'administrateur du site. Merci de mentionner le message affiché ci-dessus");
    }
    else
    {
    echo "Modification effectué avec succès !";
    echo mysql_affected_rows();
    echo ("</span></h3>");
    echo ("<br><br>");
    echo ("<span><p class=\"p1\">Enregistrer un nouvel article ou revenir au menu général</span></p>");
    }
    Dans le premier j'ai une erreur:
    "Message d'erreur: Query was empty"


    dans le 2nd, j'ai
    "Modification effectué avec succès !0", il m'affiche aucune ligne modifié
    (le 0)

    j'ai laissé par défaut le moteur utilisé par les tables (myisam)


    et je répète, quand je fais un ajout dans la table ça marche impec

    Une idée ??

    Merci de votre aide

  4. #4
    Membre Expert Avatar de darkstar123456
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2008
    Messages
    1 895
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mars 2008
    Messages : 1 895
    Par défaut
    Vérifie la synthaxe de ton mysql_result
    string mysql_result ( resource $result , int $row [, mixed $field ] )
    La 3ieme valeur doit être un nom de champ, et je doute que ton champ s'appelle "0"


    Sinon, lors de l'appel de ta page où tu fais ton UPDATE, tu ne récupères pas ton ID ? il serait plus simple d'écrire :
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    mysql_query("UPDATE notes SET Date='$note_date' WHERE Id='".$_GET["id"]."'");

  5. #5
    Membre chevronné
    Profil pro
    Responsable de service informatique
    Inscrit en
    Septembre 2004
    Messages
    352
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Responsable de service informatique

    Informations forums :
    Inscription : Septembre 2004
    Messages : 352
    Par défaut
    Au lieu de faire ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $sql_update = "UPDATE note SET Date=$note_date WHERE Id='mysql_result($requete_note,0,0)'";
    Il faudrait faire ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    $id = mysql_result($requete_note,0,0);
    $sql_update = "UPDATE note SET Date=$note_date WHERE Id='$id'";
    Sinon la requête SQL va donner ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    UPDATE note SET Date='2008/06/21' WHERE Id='mysql_result(100,0,0)'

  6. #6
    Membre Expert Avatar de darkstar123456
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2008
    Messages
    1 895
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mars 2008
    Messages : 1 895
    Par défaut
    effectivement ! j'y avais même pas fait attention tiens bon, j'avoue ! j'utilise jamais le mysql_result

  7. #7
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    148
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 148
    Par défaut
    bonsoir,

    un grand merci à vous deux,
    c'est effectivement là que cela coinçait.

    il m'a fallut de mettre cette petite mysql_result dans une variable
    pour que cela fonctionne.

    Mais j'ai 2 autres questions:

    cette variable (et d'une façon générale) est il nécessaire de l'initialiser ?
    genre:

    et secundo:

    l'utilisation des ' ' pour entourer une variable est il nécessaire ?
    je teste les 2 et ne voit pas la différence .

    Merci

  8. #8
    Membre confirmé Avatar de tentsuken
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    89
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 89
    Par défaut
    Si je me trompe pas

    $variable = " du texte" ;
    $variable = ' des chiffre' ;
    $variable = ducode ;

  9. #9
    Membre chevronné
    Profil pro
    Responsable de service informatique
    Inscrit en
    Septembre 2004
    Messages
    352
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Responsable de service informatique

    Informations forums :
    Inscription : Septembre 2004
    Messages : 352
    Par défaut
    1/ Il vaut mieux initialiser toutes ses variables pour éviter des comportements imprévus.

    2/ Dans une requête SQL, tu es obligé d'entourer tes valeurs avec des '' surtout pour les données de type chaîne de texte et date.

  10. #10
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    148
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 148
    Par défaut
    OK

    merci pour votre aide

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

Discussions similaires

  1. [MySQL] compiler php avec mysql 5.1.24
    Par fafarun dans le forum PHP & Base de données
    Réponses: 1
    Dernier message: 24/04/2008, 09h29
  2. compilation de php avec mysql, dg , jpeg
    Par vbcasimir dans le forum Applications et environnements graphiques
    Réponses: 0
    Dernier message: 22/01/2008, 15h30
  3. recompiler php avec Mysql
    Par clancy182 dans le forum Apache
    Réponses: 2
    Dernier message: 16/10/2006, 11h38
  4. Configuration PHP avec MySQL - FC5 ?
    Par Poseidon62 dans le forum Applications et environnements graphiques
    Réponses: 4
    Dernier message: 28/06/2006, 11h04
  5. [SGBD] Problème requete PHP avec MySQL
    Par TomZ dans le forum Requêtes
    Réponses: 5
    Dernier message: 12/06/2006, 01h40

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