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

 MySQL Discussion :

Suppression d'informations via DELETE FROM


Sujet :

MySQL

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

    Informations forums :
    Inscription : Décembre 2006
    Messages : 47
    Points : 16
    Points
    16
    Par défaut Suppression d'informations via DELETE FROM
    Bonjour,

    Débutant en programmation et tâtonnant (ça fait beaucoup d'approximations) avec Mysql, je suis les diverses doc que je trouve sur le net afin de monter un site exploitant une base de données sous mysql (via wamp).

    Dans un de mes formulaires j'ai un tableau qui liste les info contenues dans une table, j'ai un bouton qui permet de lancer la requête:

    DELETE FROM ph_programme WHERE id_prg='$id'
    requête qui doit supprimer un enregistrement programme en fonction de son id.

    la requête fonctionne apparemment car l'enregistrement n'apparait plus dans mon tableau (interface web), quoiqu'une ligne vide soit toujours apparente (c'est ça qui m'a mis la puce à l'oreille).
    L'inconvénient c'est que dans phpmyadmin la ligne a bien été supprimée, en fait je dirai plutôt qu'elle a été remplacé par une ligne vide.

    Par exemple j'avais une ligne:
    id (auto-increment) nom_prg etc
    1 Diamant

    Après suppression:
    2 vide (ainsi que les autres champs)

    Ce qui montre qu'une ligne vide est créée....
    Quelqu'un aurait-il une explication et une solution pour ne pas avoir ce petit inconvénient (qui peut prendre de grande proportion dans le cas de grosse base,non?)?


    Merci par avance.

  2. #2
    Membre à l'essai
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    47
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 47
    Points : 16
    Points
    16
    Par défaut
    Je suis confu !

    J'ai trouvé la réponse, enfin une possibilité du moins.

    J'ai fait le suppression à la mano directement sur phpmyadmin et j'ai remarqué une différence entre la requête de myadmin et celle de ma page.

    j'ai donc modifié ma requête:
    de - DELETE FROM ph_programme WHERE id_prg='$id'
    à - DELETE FROM ph_programme WHERE id_prg='$id' LIMIT 1

    Quelqu'un pourrait m'expliquer?

    Merci par avance.

  3. #3
    Membre expert
    Avatar de Maljuna Kris
    Homme Profil pro
    Retraité
    Inscrit en
    Novembre 2005
    Messages
    2 613
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 72
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Novembre 2005
    Messages : 2 613
    Points : 3 950
    Points
    3 950
    Par défaut
    Saluton,
    Le fonds du problème m'échappe, une requête DELETE, nativement, ne crée pas de ligne (fût-elle vide).
    L'absence de LIMIT, loin de pouvoir générer une ligne vide, pourrait supprimer plusieurs lignes si id_prog n'était pas UNIQUE dans la table.
    Il faut peut-être chercher du côté d'un trigger AFTER DELETE qui insèrerait une ligne vide. Bref c'est assez bizarre comme affaire.

    Par contre, si la colonne id_prg est une vraie clé primaire UNSIGNED NOT NULL AUTOINCREMENT, il ne faut pas encapsuler $id entre quotes dans le code de la requête.

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

    Informations forums :
    Inscription : Décembre 2006
    Messages : 47
    Points : 16
    Points
    16
    Par défaut
    Pour être franc, je ne fais qu'adapter un code existant qui fonctionne.
    J'ai simplement modifier les noms de champ de table et de pages par mes info...
    (je ne réinventerai pas la roue et encore moins en programmation...)

    Je peux transmettre le code si ca peut aider.
    Je conçois que la création de ligne après un DELETE est suspect...paradoxale, mais c'est un constat, après l'envoie d'un DELETE sur une ligne ayant l'id - (d'après mes souvenir c'est une clef primaire) certain que elle soit en NOT NULL et auto increment, je ne saurais être catégorique (à moins de pouvoir vérifier) sur UNSIGNED. - 20 par exemple j'ai une une ligne 21 vide qui sera visible sur ma page et sur phpmyadmin.

    Les côtes sur $id, je ne saurai argumenter.
    Le fait que id_prg soit en auto increment ne me protège-t-il pas d'une suppression de plusieurs ligne ? une seule id_prog en principe non?

Discussions similaires

  1. Réponses: 2
    Dernier message: 21/06/2006, 14h14
  2. [MySQL] suppression-modification base via php
    Par mangamanga dans le forum PHP & Base de données
    Réponses: 5
    Dernier message: 16/06/2006, 21h52
  3. Suppression de fichier via Perl
    Par Maniac dans le forum Langage
    Réponses: 8
    Dernier message: 13/06/2006, 09h21
  4. DELETE FROM t where t.id IN (SELECT id FROM t....)
    Par davcha dans le forum Langage SQL
    Réponses: 4
    Dernier message: 05/01/2006, 15h19
  5. delete from
    Par Isildur dans le forum SQL
    Réponses: 46
    Dernier message: 13/05/2004, 10h50

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