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

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  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.

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

Discussions similaires

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

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