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 :

La suppression d'enregistrement no good ! [MySQL]


Sujet :

PHP & Base de données

  1. #1
    Membre éprouvé
    Avatar de jlb59
    Homme Profil pro
    Retraité
    Inscrit en
    Août 2004
    Messages
    1 024
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 72
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2004
    Messages : 1 024
    Par défaut La suppression d'enregistrement no good !
    Bonjour à tous,

    J'ai réussi à supprimer TOUS les enregistrements d'une base.
    Bon, pour ça, c'est OK !

    Maintenant, je voudrais supprimer un enregistrement choisi.
    Supp.php :
    Code php : 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
    <?PHP
    mysql_connect("localhost", "root", ""); 
    mysql_select_db("search"); 
    ?>
     
    <form method="post" action="$suppression.php">
    <table border="0" width="600">
    <tr><td></td><td><b>Domaine</b></td><td><b>Rubrique</b></td><td><b>Mots-clés</b></td></tr>
    <?PHP
    mysql_select_db("search"); 
     
    $reponse = mysql_query("SELECT * FROM search ORDER BY domaine DESC");
     
    while ($donnees = mysql_fetch_array($reponse) )
    {
    ?>
     
    <tr>
    <td><input type="checkbox" name="id" id="id" value="<?PHP echo $donnees['id']; ?>"</td>
    <td><?PHP echo $donnees['domaine']; ?></td>
    <td><?PHP echo $donnees['rubrique']; ?></td>
    <td><?PHP echo $donnees['motscles']; ?></td>
    </tr>
     
     
    <?PHP
    }
    mysql_close();
    ?>
    <input type="submit" value="Supprimer" />
    </table>
    </form>
    Supprime.php :
    Code php : 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
    <?php
    mysql_connect("localhost", "root", "");
     
    $id = $_POST['id'];
    $domaine = count($id);
     
    $boucle = 0;
    while($boucle <= $domaine-1){
    $idsupp=$id[$boucle];
    mysql_query("DELETE FROM search WHERE id = $idsupp");
    $boucle++;
    }
     
    mysql_close();
     
        echo ("[ <a href=\"javascript:history.go(-1)\">Retour page précédente</a> ]");
     
    ?>
    Apparemment, ça va puisque je n'ai pas d'erreur ! Le hic, c'est la suppression de l'enregistrement choisi.

    Dans le tableau, les checkbox correspondent aux ID et à côté, leur contenu.
    Donc, quand je sélectionne une case (donc un ID) et que je clique sur un bouton "Supprimer", cela m'amène à la page "supprime.php" qui se charge de répérer l'ID sélectionné et de le supprimer.

    Seulement voilà, l'ID sélectionné n'est pas détruit, donc, je reste tel quel dans la base.

    J'ai bien regardé le script, mais j'ai rien vu d'anormal.

    Peut-être que vous pourriez m'aider et me dire où ça ne colle pas ?

    Merci de votre aide.

  2. #2
    Membre Expert
    Avatar de yiannis
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    1 494
    Détails du profil
    Informations personnelles :
    Âge : 60
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 1 494
    Par défaut
    Bonjour,

    Es tu sur de ta connexion (mysql_error()) ?
    Ou se trouve ta fonction mysql_select_db() dans ta page Supp.php?
    As tu fait un echo de ta requête ?

    Tout cela est plus un problème PHP que MySQL

  3. #3
    Modératrice
    Avatar de Celira
    Femme Profil pro
    Développeuse PHP/Java
    Inscrit en
    Avril 2007
    Messages
    8 633
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeuse PHP/Java
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2007
    Messages : 8 633
    Par défaut
    En plus des remarques de yiannis, j'ajoute que l'action de ton formulaire ne me parait pas très correcte :
    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    <form method="post" action="$suppression.php">
    une variable $suppression hors balises <?php ?> a peu de chances de fonctionner.

    Je te recommande d'ajouter des echos un peu partout dans ton code, notamment un print_r($_POST) au début de supprime.php pour saoir quelles sont les variables envoyées par le formulaire et un echo $id_supp dans ta boucle pour savoir quelles id doivent être supprimées.
    Bon courage
    Modératrice PHP
    Aucun navigateur ne propose d'extension boule-de-cristal : postez votre code et vos messages d'erreurs. (Rappel : "ça ne marche pas" n'est pas un message d'erreur)
    Cherchez un peu avant poser votre question : Cours et Tutoriels PHP - FAQ PHP - PDO une soupe et au lit !.

    Affichez votre code en couleurs : [CODE=php][/CODE] (bouton # de l'éditeur) et [C=php][/C]

  4. #4
    Membre éprouvé
    Avatar de jlb59
    Homme Profil pro
    Retraité
    Inscrit en
    Août 2004
    Messages
    1 024
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 72
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2004
    Messages : 1 024
    Par défaut
    Citation Envoyé par Celira Voir le message
    une variable $suppression hors balises <?php ?> a peu de chances de fonctionner.
    Désolé, j'aurais dû préciser. Ce n'est pas une variable mais simplement un caractère (indépendant du PHP) pour le nom du fichier, mais je l'ai changé et c'est pas ça qui a résolu mon problème.

    Je me suis aperçu que quand les ID se suivent en partant de "1" à "x", la suppression se fait bien.
    Par contre, si je veux en refaire une autre, là, y a rien qui se passe ????

    Par exemple, si je veux supprimer l'ID 5 (affichage de 2 à x), rien n'est pris en compte.
    Çà doit être un problème d'indexation dans le fichier Supprime.php, mais où !!!!
    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
    <?php
    mysql_connect("localhost", "root", "");
    mysql_select_db("search"); 
     
    $id = $_POST['id'];
    $domaine = count($id);
     
    $boucle = 0;
    while($boucle <= $domaine-1){
    $idsupp=$id[$boucle];
    mysql_query("DELETE FROM search WHERE id = $idsupp");
    $boucle++;
    }
     
    mysql_close();
     
        echo ("[ <a href=\"javascript:history.go(-1)\">Retour page précédente</a> ]");
     
    ?>

  5. #5
    Membre éprouvé
    Avatar de jlb59
    Homme Profil pro
    Retraité
    Inscrit en
    Août 2004
    Messages
    1 024
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 72
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2004
    Messages : 1 024
    Par défaut
    Citation Envoyé par yiannis Voir le message
    Bonjour,

    Es tu sur de ta connexion (mysql_error()) ?
    Absolument !

    Citation Envoyé par yiannis Voir le message
    Ou se trouve ta fonction mysql_select_db() dans ta page Supp.php?
    3ème ligne.

    Citation Envoyé par yiannis Voir le message
    As tu fait un echo de ta requête ?

    Tout cela est plus un problème PHP que MySQL
    L'echo n'est pas nécessaire et je me doute bien que c'est un problème MySQL, c'est pour cela que j'ai besoin de votre aide !!!

    J'ai expliqué à Celira ce qui se passait; si tu peux lire ce post !

  6. #6
    Modératrice
    Avatar de Celira
    Femme Profil pro
    Développeuse PHP/Java
    Inscrit en
    Avril 2007
    Messages
    8 633
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeuse PHP/Java
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2007
    Messages : 8 633
    Par défaut
    Je dirais dans ce cas que le problème vient de ta boucle. Donc à défaut de pouvoir pourquoi ta boucle ne fonctionne pas correctement, je te propose une alternative utilisant foreach :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    $id = $_POST['id'];
    foreach ($id as $idsupp) {
      echo "id à supprimer : $idsupp <br/>"; //echo pour le test
      mysql_query("DELETE FROM search WHERE id = $idsupp") or die (mysql_error());
    }
    Modératrice PHP
    Aucun navigateur ne propose d'extension boule-de-cristal : postez votre code et vos messages d'erreurs. (Rappel : "ça ne marche pas" n'est pas un message d'erreur)
    Cherchez un peu avant poser votre question : Cours et Tutoriels PHP - FAQ PHP - PDO une soupe et au lit !.

    Affichez votre code en couleurs : [CODE=php][/CODE] (bouton # de l'éditeur) et [C=php][/C]

  7. #7
    Membre éprouvé
    Avatar de jlb59
    Homme Profil pro
    Retraité
    Inscrit en
    Août 2004
    Messages
    1 024
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 72
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2004
    Messages : 1 024
    Par défaut
    Merci Celira,

    J'ai déjà essayé avec ce genre de boucle mais sans résultat.

    Maintenant, il est possible que ce ne soit pas exactement le même script.
    Je vais essayer le tien très bientôt et te tiendrai au courant.

  8. #8
    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
    Sais-tu qu'il manque la balise de fermeture de l'un de tes champs input dans ton formulaire ?

    As-tu fait ceci dans ta page Supprime.php ?
    Ca te permet de voir le contenu des variables POST donc de voir si tes id ont bien été envoyés.

  9. #9
    Membre éprouvé
    Avatar de jlb59
    Homme Profil pro
    Retraité
    Inscrit en
    Août 2004
    Messages
    1 024
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 72
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2004
    Messages : 1 024
    Par défaut
    Citation Envoyé par Chengj Voir le message
    Sais-tu qu'il manque la balise de fermeture de l'un de tes champs input dans ton formulaire ?

    As-tu fait ceci dans ta page Supprime.php ?
    Ca te permet de voir le contenu des variables POST donc de voir si tes id ont bien été envoyés.
    Avec tout le monde qui répond à mon post, je l'en remercie beaucoup d'ailleurs, tu t'adresses A QUI exactement ?

    Je te demande ça parce que je n'ai pas vu ce que a mis !!!!!

  10. #10
    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
    Ben à toi, auteur de ce post ;p.

  11. #11
    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 : 41
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mars 2008
    Messages : 1 895
    Par défaut
    Bah cherche pas... tu fais les delete à partir de checkbox cochées ou non, c'est bien ça ?

    Tu as : name="id"

    donc $_POST["id"] renverra toujours la dernière valeur cochée et non pas ce que tu voudrais.

    Pour palier à ce problème écris : name="id[]" value="'.$requete['id'].'"

    Tu récupéreras un tableau qu'il te suffira de parcourir pour supprimer ce qui a été coché :

    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    foreach( $_POST["id"] AS $value ) {
       mysql_query("DELETE FROM ma_table WHERE id = '".$value."'") or die(mysql_error());
    }

  12. #12
    Membre éprouvé
    Avatar de jlb59
    Homme Profil pro
    Retraité
    Inscrit en
    Août 2004
    Messages
    1 024
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 72
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2004
    Messages : 1 024
    Par défaut
    Citation Envoyé par Chengj Voir le message
    Ben à toi, auteur de ce post ;p.
    T'est vraiment sympa de m'apporter ton aide, mais vraiment "print_r($_POST);" je le vois pas !!!

    Tu sais qui a posté ça ?

  13. #13
    Membre éprouvé
    Avatar de jlb59
    Homme Profil pro
    Retraité
    Inscrit en
    Août 2004
    Messages
    1 024
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 72
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2004
    Messages : 1 024
    Par défaut
    Citation Envoyé par darkstar123456 Voir le message
    Bah cherche pas... tu fais les delete à partir de checkbox cochées ou non, c'est bien ça ?

    Tu as : name="id"

    donc $_POST["id"] renverra toujours la dernière valeur cochée et non pas ce que tu voudrais.

    Pour palier à ce problème écris : name="id[]" value="'.$requete['id'].'"

    Tu récupéreras un tableau qu'il te suffira de parcourir pour supprimer ce qui a été coché :

    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    foreach( $_POST["id"] AS $value ) {
       mysql_query("DELETE FROM ma_table WHERE id = '".$value."'") or die(mysql_error());
    }
    Merci de ton intervention darkstar123456, mais avec tous les changements de code pour avoir un résultat satisfaisant, je ne sais plus quoi exactement !
    Sur des sites ils disent de faire comme ça, sur ce forum l'un me dit de faire comme ça, l'autre me dit autre chose, toi tu me dis encore de coder différemment, je m'y perds un peu, surtout que c'est tout nouveau pour moi.

    Je dis ça, c'est peut-être aussi de ma faute (il ne faut pas courir 2 lièvres à la fois), comme j'ai essayé plusieurs manières de manipuler la base (update, drop, insert, etc.), je m'y perds un peu.
    Je vais me reposer un peu et voir tout ça plus clairement !

    Demain sera un autre jour !...

  14. #14
    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 : 41
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mars 2008
    Messages : 1 895
    Par défaut
    Quand tu te seras bien reposé, je te conseille d'essayer ma méthode

  15. #15
    Membre éprouvé
    Avatar de jlb59
    Homme Profil pro
    Retraité
    Inscrit en
    Août 2004
    Messages
    1 024
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 72
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2004
    Messages : 1 024
    Par défaut
    Citation Envoyé par darkstar123456 Voir le message
    Quand tu te seras bien reposé, je te conseille d'essayer ma méthode
    Je suppose que si tu me dis ça, c'est parce que tu es sûr de ton coup !
    Je vais essayer avec ton code et te dirais quoi !

  16. #16
    Membre averti
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    17
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 17
    Par défaut
    Salut tout le monde !
    Bon je viens de lire tous les messages plus haut et c'est vrai que pour un novice ça se complique assez vite
    J'ai installé la suppression de fiche aussi mais de cette manière ...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <a href="delete.php?ref='.$donnees['ref'].'&amp;effacer=oui">Effacer la fiche</a>
    Ensuite ...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    if (isset($_GET['ref']) AND isset($effacer))
    {$requete_efface = mysql_query("DELETE FROM ma_base WHERE ref = '".$_GET['ref']."'") or die("Effacement impossible");}
    J'ai même fait avec une confirmation. Mais pour expliquer j'essaie de résumer.
    Voià, moi ça marche nikel ! J'espère que ça pourra t'aider.
    A+

  17. #17
    Membre éprouvé
    Avatar de jlb59
    Homme Profil pro
    Retraité
    Inscrit en
    Août 2004
    Messages
    1 024
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 72
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2004
    Messages : 1 024
    Par défaut Foreach en erreur
    Citation Envoyé par darkstar123456 Voir le message
    Quand tu te seras bien reposé, je te conseille d'essayer ma méthode
    Voilà, j'ai essayé et j'ai loupé !

    Je suis conscient que ton code fonctionne, mais il y a probablement une incohérence à faire entre le fichier du choix des id et celui de l'exécution :
    Fichier de choix des id
    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
    <form method="POST" action="_suppression.php">
    <table border="1" width="600">
    <tr><td></td><td>Titres</td><td>Mots-clés</td></tr>
    <?PHP
    mysql_connect("localhost", "root", ""); 
    mysql_select_db('recherche');
     
    $reponse = mysql_query("SELECT * FROM recherche ORDER BY id");
     
    while ($donnees = mysql_fetch_array($reponse) )
    {
    ?>
    <tr>
    <td><input type="checkbox" name="id" id="id" value="<?PHP echo $donnees['id']; ?>"</td>
    <td><?PHP echo $donnees['titre']; ?></td>
    <td><?PHP echo $donnees['motscles']; ?></td>
    </tr>
    <?PHP
    }
    mysql_close();
    ?>
    <input type="submit" value="Supprimer" />
    </table>
    </form>
    Fichier d'exécution
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    mysql_connect("localhost", "root", ""); 
    mysql_select_db('recherche');
     
    $id = $_POST['id'];
     
    //ERREUR : Warning: Invalid argument supplied for foreach() in G:\SiteQI98\recherche\$$$mysql\_suppression.php on line 12
    foreach( $_POST["id"] AS $value ) {
       mysql_query("DELETE FROM recherche WHERE $id = '".$value."'") or die(mysql_error());
    }
    Est-ce que tu vois queique chose d'anormal ?
    Parce qu'avec le peu que je connaisse, je vois mal !

    Merci de ta réponse.

  18. #18
    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 : 41
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mars 2008
    Messages : 1 895
    Par défaut
    Tu n'as pas modifié le name de ton input checkbox

    Tu as laissé :
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    <td><input type="checkbox" name="id" id="id" value="<?PHP echo $donnees['id']; ?>"</td>

    Alors qu'il faut écrire :
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    <td><input type="checkbox" name="id[]" id="id" value="<?PHP echo $donnees['id']; ?>"</td>

    PS :
    Si tu ne vois aucune différence voilà ce que tu as écrit : name="id"
    voilà ce qu'il faut écrire : name="id[]"


  19. #19
    Membre éprouvé
    Avatar de jlb59
    Homme Profil pro
    Retraité
    Inscrit en
    Août 2004
    Messages
    1 024
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 72
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2004
    Messages : 1 024
    Par défaut
    Merci d'avoir vu ça darkstar123456.

    Effectivement, y a plus cette erreur, par contre, maintenant j'ai ça
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Champ 'Array' inconnu dans where clause
    Je n'ai vu qu"un "ARRAY", c'est dans le choix par Checkbox
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    while ($donnees = mysql_fetch_array($reponse) )
    J'ai regardé et il y a un sacré choix à faire concernant "mysql_fetch_array".

    J'ai pas tout compris parce que j'ai du mal à assimiler les fonctions à choisir pour telle ou telle commande !

    J'ai essayé les fonctions "mysql_fetch_xxx" et je me suis aperçu qu'il n'y en a que 2 qui ne génère pas d'erreur à l'affichage "..._array" et "..._assoc"'.
    Mais quand je veux supprimer, dans les 2 cas, j'ai toujours l'erreur que j'ai indiquée.
    Ce que j'ai du mal à comprendre c'est qu'il n'y a pas de champs "Array" spécifié. C'est peut-être un mauvais positionnement !

    A ton avis ?

    PS : Merci pour le MP, tes explications ont été limpides.

  20. #20
    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 : 41
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mars 2008
    Messages : 1 895
    Par défaut
    Alors petit astuce, le message d'erreur provient de mysql_error()

    Il faut donc regarder la requête mysql (mysql_query()), il y a effectivement une erreur mais que je n'avais pas vu.

    Procédons comme si on ne l'avait pas vu histoire de mieux comprendre comment détecter une erreur

    Il dit qu'il ne connait pas de champ Array() dans la clause WHERE et bien examinons ce que tu as écrit plus haut :
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    mysql_connect("localhost", "root", ""); 
    mysql_select_db('recherche');
     
    $id = $_POST['id'];
     
    //ERREUR : Warning: Invalid argument supplied for foreach() in G:\SiteQI98\recherche\$$$mysql\_suppression.php on line 12
    foreach( $_POST["id"] AS $value ) {
       mysql_query("DELETE FROM recherche WHERE $id = '".$value."'") or die(mysql_error());
    }
    }

    On va directement voir autour du WHERE et on constate qu'il est écrit :
    WHERE $id = '".$value."'

    Or tu dis plus haut :
    $id = $_POST['id'];

    Ce qui n'est pas correct, car la clause WHERE mySQL compare la valeur d'un champ spécifié à une certaine valeur ! Ecrire
    $id = "id";
    aurait été correct, bien qu'inutile.

    Voici la correction :
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    mysql_connect("localhost", "root", ""); 
    mysql_select_db('recherche');
     
    $id = $_POST['id'];
     
    //ERREUR : Warning: Invalid argument supplied for foreach() in G:\SiteQI98\recherche\$$$mysql\_suppression.php on line 12
    foreach( $_POST["id"] AS $value ) {
       mysql_query("DELETE FROM recherche WHERE id = '".$value."'") or die(mysql_error());
    }
    }

    "id" est bel et bien le nom de ton champ et non une variable

    PS : Si j'ai pas été très clair, hésite pas x)

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. Suppression d'enregistrements joints
    Par zephyr59 dans le forum Access
    Réponses: 6
    Dernier message: 04/05/2006, 23h44
  2. [ADO] Suppression des enregistrements
    Par kmaniche dans le forum C++Builder
    Réponses: 4
    Dernier message: 25/04/2006, 12h12
  3. Suppression des enregistrements maitre/détail
    Par pierrot67 dans le forum Bases de données
    Réponses: 12
    Dernier message: 31/03/2006, 13h39
  4. Réponses: 3
    Dernier message: 01/12/2005, 11h17
  5. Réponses: 6
    Dernier message: 11/10/2004, 16h43

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