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

Langage PHP Discussion :

[Système] Vérifier exécution


Sujet :

Langage PHP

  1. #1
    Membre régulier Avatar de Jiraiya42
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    671
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 671
    Points : 114
    Points
    114
    Par défaut [Système] Vérifier exécution
    Bonjour,

    Je voudrais que lorsqu'une personne entre des données dans un champ text ça vérifie si le champ existe déjà, s'il n'existe pas j'exécute un INSERT et s'il existe un UPDATE mais ça marche pas ce que j'ai fais, j'ai mis:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
     
                   <?
                        require ("connect.php");
                        mysql_connect (SERVEUR, NOM, PASSE) or die(mysql_error);
                        mysql_select_db (BASE) or die(mysql_error);
     
                        $num = $_POST['num'];
                        $lib = $_POST['lib'];
     
                        $select = "SELECT lib FROM partie WHERE numpart='$num';";
                        $resselect = @mysql_query ($select);
     
                        if ($resselect = "")
                            {
                                $insert = "INSERT INTO partie VALUES ('$num','$lib');";
                                $resinsert = @mysql_query ($insert);
     
                                if ( mysql_errno())
                                   {
                                      echo "<p align=center><font family='Comic Sans MS' size=12>Echec</font></p>";
                                   }
                                else
                                   {
                                      echo "<p align=center><font family='Comic Sans MS' size=12>Mis à jour</font></p>";
                                   }
                            }
                        else
                            {
                                $update = "UPDATE partie SET libpart=$lib WHERE numpart=$num;";
                                $resupdate = @mysql_query ($resupdate);
     
                                if ( mysql_errno())
                                   {
                                      echo "<p align=center><font family='Comic Sans MS' size=12>Echec</font></p>";
                                   }
                                else
                                   {
                                      echo "<p align=center><font family='Comic Sans MS' size=12>Mis à jour</font></p>";
                                   }
                            }
                    ?>
    Quelqu'un voit où je fais fausse route svp ?

    Merci d'avance...

  2. #2
    Membre actif
    Profil pro
    Étudiant
    Inscrit en
    Avril 2006
    Messages
    237
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2006
    Messages : 237
    Points : 283
    Points
    283
    Par défaut
    A la place de INSERT ou UPDATE essaye REPLACE

  3. #3
    Membre régulier Avatar de Jiraiya42
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    671
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 671
    Points : 114
    Points
    114
    Par défaut
    Non c'est pareil, ç me met toujours le "Echec" que je demandais sauf que la requete est valide car dans phpmyadmin je test la requete et elle marche

  4. #4
    Membre actif Avatar de renaudjuif
    Inscrit en
    Avril 2006
    Messages
    325
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 325
    Points : 258
    Points
    258
    Par défaut
    enlève le ";" à la fin de ta requête:
    ca marche seulement dans phpMyAdmin

  5. #5
    Membre confirmé
    Profil pro
    Développeur Web
    Inscrit en
    Avril 2006
    Messages
    430
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Avril 2006
    Messages : 430
    Points : 557
    Points
    557
    Par défaut
    Salut,

    et si tu affiches directement dans ton code l'erreur retournée par mysql lors de l'exec de ta query ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    echo mysql_error();
    ++

  6. #6
    Membre confirmé
    Profil pro
    Développeur Web
    Inscrit en
    Avril 2006
    Messages
    430
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Avril 2006
    Messages : 430
    Points : 557
    Points
    557
    Par défaut
    de plus, il faudrait que tu testes le nombre de lignes retournées avec

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    $resselect = @mysql_query ($select);
    if (!mysql_num_rows($resselect)) {
       // insert ...
    }
    else {
      // update ...
    }
    au lieu de faire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    $resselect = @mysql_query ($select);
    if ($resselect = "") {
       ...
    }
    car dans resselect tu auras toujours une ressource comme resultat (si resultat trouvé), ou false en cas d'erreur.

  7. #7
    Membre confirmé
    Profil pro
    Développeur Web
    Inscrit en
    Avril 2006
    Messages
    430
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Avril 2006
    Messages : 430
    Points : 557
    Points
    557
    Par défaut
    enfin, je viens de voir un autre gros bug aussi

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    if ($resselect = "")
    ca assigne la valeur "" à $resselect ...

  8. #8
    Membre régulier Avatar de Jiraiya42
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    671
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 671
    Points : 114
    Points
    114
    Par défaut
    Citation Envoyé par bkill
    enfin, je viens de voir un autre gros bug aussi

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    if ($resselect = "")
    ca assigne la valeur "" à $resselect ...
    Merci pour toutes vos réponses j'ai mis "==" à la place de "=" et la le INSERT marche, par contre si j'entre le meme numéro qu'avant, en modifiant le texte (voulant tester le UPDATE) et là ça me met "Echec" mais je vois pas trop pourquoi, quelqu'un peut m'aider svp ?

    Merci d'avance...

  9. #9
    Membre confirmé
    Profil pro
    Développeur Web
    Inscrit en
    Avril 2006
    Messages
    430
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Avril 2006
    Messages : 430
    Points : 557
    Points
    557
    Par défaut
    Comme j'ai déjà dis plus haut, remplace déjà le

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    if ($resselect == "") {
      // insert
    }
    else {
      // update
    }
    par

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    if (!mysql_num_rows($resselect)) {
      // insert 
    }
    else {
      // update
    }
    Enfin, le debugging n'est pas une science infuse en soi, c'est quelque chose qui se fait étape par étape, en insérant du code supplémentaire pour faire des echo par exemple, et voir là où l'on passe... Etant donné que tu affiche le meme message en cas d'erreur d'insert ou d'update, tu ne sais pas si t'es en insert ou update. Donc je te conseille fortement de rajouter des affichages de tes données avant le if, et de changer les messages d'erreur suivant que t'es dans le update ou le insert, par exemple. Ca aidera déjà.

  10. #10
    Membre régulier Avatar de Jiraiya42
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    671
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 671
    Points : 114
    Points
    114
    Par défaut
    J'ai mis ça:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
     
                    <?
                        require ("connect.php");
                        mysql_connect (SERVEUR, NOM, PASSE) or die(mysql_error);
                           mysql_select_db (BASE) or die(mysql_error);
     
                        $num = $_POST['num'];
                        $lib = $_POST['lib'];
     
                        $select = "SELECT lib FROM partie WHERE numpart='$num';";
                        $resselect = @mysql_query ($select);
     
                        if ($resselect == "")
                            {
                                $insert = "INSERT INTO partie VALUES ('$num','$lib');";
                                $resinsert = @mysql_query ($insert);
     
                                if ( $resinsert == false )
                                    {
                                        echo "<p align=center><font family='Comic Sans MS' size=12>Echec Insert</font></p>";
                                    }
                                 else
                                    {
                                        echo "<p align=center><font family='Comic Sans MS' size=12>Mis à jour</font></p>";
                                    }
                            }
                        else
                            {
                                $update = "UPDATE partie SET libpart='$lib' WHERE numpart='$num'";
                                $resupdate = @mysql_query ($resupdate);
     
                                if ( $resupdate == false )
                                    {
                                        echo "<p align=center><font family='Comic Sans MS' size=12>Echec Update</font></p>";
                                    }
                                 else
                                    {
                                        echo "<p align=center><font family='Comic Sans MS' size=12>Mis à jour</font></p>";
                                    }
                            }
                    ?>
    Et quand je test l'update ça me met "Echec Insert" donc il s'arrete trop tôt il ne va pas jusqu'au update mais je comprends pas pourquoi... quelqu'un voit svp ?

  11. #11
    Membre confirmé
    Profil pro
    Développeur Web
    Inscrit en
    Avril 2006
    Messages
    430
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Avril 2006
    Messages : 430
    Points : 557
    Points
    557
    Par défaut
    Tu seras un amour si tu me changes (par pitié ) ce

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    if ($resselect == "") {
    par

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    if (!mysql_num_rows($resselect)) {
    Si tu ne veux pas, je retourne sur un autre post

  12. #12
    Membre régulier Avatar de Jiraiya42
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    671
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 671
    Points : 114
    Points
    114
    Par défaut
    Citation Envoyé par bkill
    Tu seras un amour si tu me changes (par pitié ) ce

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    if ($resselect == "") {
    par

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    if (!mysql_num_rows($resselect)) {
    Si tu ne veux pas, je retourne sur un autre post
    Si si je veux bien, je le fais

  13. #13
    Membre régulier Avatar de Jiraiya42
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    671
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 671
    Points : 114
    Points
    114
    Par défaut
    J'ai mis:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
     
                    <?
                        require ("connect.php");
                        mysql_connect (SERVEUR, NOM, PASSE) or die(mysql_error);
                           mysql_select_db (BASE) or die(mysql_error);
     
                        $num = $_POST['num'];
                        $lib = $_POST['lib'];
     
                        $select = "SELECT lib FROM partie WHERE numpart='$num';";
                        $resselect = @mysql_query ($select);
     
                        if (!mysql_num_rows($resselect))
                           {
                                 $insert = "INSERT INTO partie VALUES ('$num','$lib');";
                              $resinsert = @mysql_query ($insert);
     
                              if (!mysql_num_rows($resinsert))
                                   {
                                    echo "<p align=center><font family='Comic Sans MS' size=12>Echec Insert</font></p>";
                                 }
                               else
                                 {
                                    echo "<p align=center><font family='Comic Sans MS' size=12>Mis à jour</font></p>";
                                 }
                           }
                        else
                           {
                                 $update = "UPDATE partie SET libpart='$lib' WHERE numpart='$num'";
                              $resupdate = @mysql_query ($resupdate);
     
                              if (!mysql_num_rows($resupdate))
                                   {
                                    echo "<p align=center><font family='Comic Sans MS' size=12>Echec Update</font></p>";
                                 }
                               else
                                 {
                                    echo "<p align=center><font family='Comic Sans MS' size=12>Mis à jour</font></p>";
                                 }
                           }
                    ?>
    Et ça m'a mit le même message d'erreur "Echec Insert" mais avec des warnings en plus

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Warning: mysql_num_rows(): supplied argument is not a valid MySQL result  resource in c:\program files\easyphp1-7\www\site livre\func_webmaster.php  on line 50
    
    Warning: mysql_num_rows(): supplied argument is  not a valid MySQL result resource in c:\program files\easyphp1-7\www\site  livre\func_webmaster.php on line 55
    
    Il va toujours pas dans le update, je comprends pas

  14. #14
    Membre confirmé
    Profil pro
    Développeur Web
    Inscrit en
    Avril 2006
    Messages
    430
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Avril 2006
    Messages : 430
    Points : 557
    Points
    557
    Par défaut
    Okay, ca nous fait déjà avancer un peu... ca veut dire que ta requete select un peu plus haut a merdé.

    Toujours dans le meme esprit de debugging, ajoute un
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    echo $select;
    echo mysql_error();
    juste avant ton if ...
    Tu verras bien si ton select est bon, et surtout l'erreur renvoyée par mysql...
    Ce genre de manip devrait devenir automatique, à force

    Et ceci dit, je n'ai pas demandé que tu remplaces ton $resupdate == false et $resinsert == false avec le mysql_num_rows... C'était juste le premier if ($resselect == "") que je voulais que tu changes...
    Les deux autres ne rentrent pas dans le meme cas!
    Pour faire court, le mysql_num_rows te retourne le nombre de rows que t'as eu après un SELECT par exemple. Dans le cas du INSERT ou UPDATE, ca ne marche plus!

  15. #15
    Membre régulier Avatar de Jiraiya42
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    671
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 671
    Points : 114
    Points
    114
    Par défaut
    Citation Envoyé par bkill
    Okay, ca nous fait déjà avancer un peu... ca veut dire que ta requete select un peu plus haut a merdé.

    Toujours dans le meme esprit de debugging, ajoute un
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    echo $select;
    echo mysql_error();
    juste avant ton if ...
    Tu verras bien si ton select est bon, et surtout l'erreur renvoyée par mysql...
    Ce genre de manip devrait devenir automatique, à force
    C'est fait. Ca m'a mit

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT libpart FROM partie WHERE numpart='2';
    Warning:  mysql_num_rows(): supplied argument is not a valid MySQL result resource in  c:\program files\easyphp1-7\www\site livre\func_webmaster.php on line  72
    Et par contre ça me met "Echec Update" maintenant

  16. #16
    Membre régulier Avatar de Jiraiya42
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    671
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 671
    Points : 114
    Points
    114
    Par défaut
    Citation Envoyé par bkill
    Et ceci dit, je n'ai pas demandé que tu remplaces ton $resupdate == false et $resinsert == false avec le mysql_num_rows... C'était juste le premier if ($resselect == "") que je voulais que tu changes...
    Les deux autres ne rentrent pas dans le meme cas!
    Pour faire court, le mysql_num_rows te retourne le nombre de rows que t'as eu après un SELECT par exemple. Dans le cas du INSERT ou UPDATE, ca ne marche plus!
    Ah oki, je savais pas ça, j'ai de nouveau modifié, il n'y a plus de warning mais toujours "Echec Update"

  17. #17
    Membre confirmé
    Profil pro
    Développeur Web
    Inscrit en
    Avril 2006
    Messages
    430
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Avril 2006
    Messages : 430
    Points : 557
    Points
    557
    Par défaut
    Et bien continue encore dans le meme esprit... une fois dans le if de l'update, fais un echo de la requete, et de mysql_error() pour voir ce qu'il se passe
    A partir de là tu as toutes les clés en mains pour trouver la solution à ton problème je pense.

  18. #18
    Membre régulier Avatar de Jiraiya42
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    671
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 671
    Points : 114
    Points
    114
    Par défaut
    Citation Envoyé par bkill
    Et bien continue encore dans le meme esprit... une fois dans le if de l'update, fais un echo de la requete, et de mysql_error() pour voir ce qu'il se passe
    A partir de là tu as toutes les clés en mains pour trouver la solution à ton problème je pense.
    Ca y est j'ai fais ton style de recherche d'erreur et ça marche tout bien merci beaucoup

  19. #19
    Membre confirmé
    Profil pro
    Développeur Web
    Inscrit en
    Avril 2006
    Messages
    430
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Avril 2006
    Messages : 430
    Points : 557
    Points
    557
    Par défaut
    Citation Envoyé par Jiraiya42
    Ca y est j'ai fais ton style de recherche d'erreur et ça marche tout bien merci beaucoup
    Cool
    mais pour info, ce n'est pas mon style de recherche d'erreur, mais une technique couramment utilisée dans le monde du développement

    N'oublie pas de passer ce post en [Résolu], si c'est ok pour toi!

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

Discussions similaires

  1. Réponses: 1
    Dernier message: 31/05/2007, 02h54
  2. Réponses: 7
    Dernier message: 30/03/2006, 15h43
  3. Réponses: 5
    Dernier message: 29/11/2005, 17h35
  4. [Système] PHP & exécution d'un commande sur Linux
    Par carlos20 dans le forum Langage
    Réponses: 8
    Dernier message: 12/11/2005, 12h26
  5. [Système] Pb exécution d'une commande externe
    Par licorne dans le forum Langage
    Réponses: 9
    Dernier message: 19/10/2005, 16h34

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