Effacer ligne base de données

Discussion dans 'Développement d'un site Web ou d'une appli mobile' créé par Stefano, 29 Mai 2008.

  1. Stefano
    Stefano WRInaute discret
    Inscrit:
    12 Février 2006
    Messages:
    244
    J'aime reçus:
    0
    Bonjour,

    Je préviens que je suis un autodidacte (encore niveau débuttant) en php.

    Voici mon problème j'ai créé un petit script php avec un formulaire pour pouvoir mettre en ligne des actualités.

    Il marche très bien. Or, pour l'instant dès que l'événement est passé je me connecte à la base de données et je l'efface manuellement. Mais ce n'est pas très pratique. Je pensais donc créer un petit formulaire où écrire l'id de l"actualité à effacer.

    Voici mes problème :

    le petit script pour effacer, pourtant banale ne marche pas du tout :

    Code:
    <?php
    define('CONF_ONLY', true);
    include("./config.php");
    mysql_connect($dbhost , $dbuser , $dbpasswd);
    mysql_select_db($dbname);
    $sql = 'DELETE * FROM `t_mus` WHERE `idann` ='$id' ;';
    $result = mysql_query($sql);   
    if($result)
    {
    echo("La suppression à été correctement effectuée") ;
    }
    else
    {
    echo("La suppression à échouée") ;
    }
    
         mysql_close();
    ?>
    
    Il se connecte bien à la base de données mais :

    - il n'efface rien du tout. Si je remplace '$id' par l'id de l'actu à supprimer rien ne se passe. Et pourtant le même script avec select affiche les infos de cette table.

    - deuxième gros problème. Si j'arrive à faire marche cette instruction, je ne sais pas comment relier ce script à un formulaire pour que je lui donne l'id à supprimer.

    Si vous avez des suggestions, je vous en remercie par avance.
     
  2. FloBaoti
    FloBaoti WRInaute impliqué
    Inscrit:
    30 Avril 2006
    Messages:
    640
    J'aime reçus:
    0
    Ton problème est le SQL à priori, pas le PHP.

    Un DELETE en SQL supprime forcément toute une "ligne", donc il ne faut pas spécifier les champs à supprimer.
    La syntaxe est donc : DELETE FROM table WHERE condition;
     
  3. Stefano
    Stefano WRInaute discret
    Inscrit:
    12 Février 2006
    Messages:
    244
    J'aime reçus:
    0
    Bonjour,

    t_mus est la table, je n'ai justement pas spécifié le champs.

    J'ai donc élimine le *

    $sql = 'DELETE FROM `t_mus` WHERE `idann` =$id;';

    Mais cela ne marche pas :(
     
  4. BadProcESs
    BadProcESs WRInaute passionné
    Inscrit:
    28 Juillet 2003
    Messages:
    1 821
    J'aime reçus:
    0
    As-tu un message d'erreur ?
    As-tu essayé de tester la requête dans l'administration de la base de données ?
     
  5. YoyoS
    YoyoS WRInaute accro
    Inscrit:
    14 Septembre 2006
    Messages:
    3 226
    J'aime reçus:
    0
    Toujours essayer sa requête dans un simple client sql avant toute intégration au code, et ceci pour n'importe quel langage. ex: l'onglet sql de phpmyadmin
     
  6. FloBaoti
    FloBaoti WRInaute impliqué
    Inscrit:
    30 Avril 2006
    Messages:
    640
    J'aime reçus:
    0
    * signifie tous les champs en SQL. Donc tu avais bien spécifié "tous les champs".

    Ensuite, une erreur PHP : '$id'
    La concaténation se fait avec des points : '.$id.'
     
  7. Stefano
    Stefano WRInaute discret
    Inscrit:
    12 Février 2006
    Messages:
    244
    J'aime reçus:
    0
    DELETE FROM `t_mus` WHERE `idann` =6

    comme ça, ça marche....
     
  8. e-kiwi
    e-kiwi WRInaute accro
    Inscrit:
    23 Décembre 2003
    Messages:
    13 198
    J'aime reçus:
    1
    il te suffit de faire echo $sql en php pour voir ton erreur ;)
     
  9. Stefano
    Stefano WRInaute discret
    Inscrit:
    12 Février 2006
    Messages:
    244
    J'aime reçus:
    0
    Merci,

    Mais rien ne s'affiche. Voilà tout le code dans post.php:

    Code:
    <?php
    include("/config.php");
    
    // Insertion dans la base
    $id = $_GET["idann"];     
    mysql_connect($dbhost , $dbuser , $dbpasswd);
    mysql_select_db($dbname);
    
    $sql = 'DELETE FROM `t_mus` WHERE `idann` =$id LIMIT 1;';
    $result = mysql_query($sql);   
    if($result)
    {
    echo("La suppression à été correctement effectuée") ;
    }
    else
    {
    echo("La suppression à échouée") ;
    }
    
     mysql_close();
    ?> 
    
    Il ne reconnait pas idann, car si je remplace le bon chiffre
    ça marche.

    L'idann est fourni par un formulaire :

    Code:
    <form name="f2" onSubmit="return check2()"  METHOD="POST" ACTION="form.php">
    <table border=0 cellpadding=3 width="549" align="center" cellspacing="0" bgcolor="#e8e8e8">
    <tr>
    <td width="144"><span style="font-size: 10pt;"><font face="Arial"><b>ID</b> :</td>
    <td width="387"> 
    <input type="text" name="idann" value="" size=30>
    </td>
    </tr>
    <tr> 
    <td width="144"> 
    <input type="reset" name="reset" value="Effacer">
    </td>
    <td align=RIGHT width="387"> 
    <input type="submit" name="  O K  " value="  OK !  ">
    </td>
    </tr>
    </table>
    </form>

    Peut-être que le problème est là.

    Est-ce la fonction $_get qui récupère l'information ?

    Merci encore.
     
  10. e-kiwi
    e-kiwi WRInaute accro
    Inscrit:
    23 Décembre 2003
    Messages:
    13 198
    J'aime reçus:
    1
    >> $sql = 'DELETE FROM `t_mus` WHERE `idann` =$id LIMIT 1;';

    apres ca tu met : echo $sql;

    et tu aura ta requete telle qu'elle est éxécutée (et tu verras que $id est à la palce de sa valeur)
     
  11. YoyoS
    YoyoS WRInaute accro
    Inscrit:
    14 Septembre 2006
    Messages:
    3 226
    J'aime reçus:
    0
    Tu vas la mettre ta requete dans phpmyadmin ou pas ? lol
     
  12. webac
    webac WRInaute occasionnel
    Inscrit:
    4 Mars 2005
    Messages:
    385
    J'aime reçus:
    0
    REMPLACE
    $id = $_GET["idann"];
    PAR
    $id = $_POST["idann"];
     
  13. mahdivitche
    mahdivitche WRInaute impliqué
    Inscrit:
    6 Janvier 2008
    Messages:
    869
    J'aime reçus:
    0
    peut étre le probleme dans la relation des tables
     
  14. seebz
    seebz WRInaute impliqué
    Inscrit:
    15 Avril 2007
    Messages:
    722
    J'aime reçus:
    0
    Simple quote , double quote !

    Code:
    $sql = "DELETE FROM `t_mus` WHERE `idann`=$id"; 
     
  15. Stefano
    Stefano WRInaute discret
    Inscrit:
    12 Février 2006
    Messages:
    244
    J'aime reçus:
    0
    Oui, je l'ai fait et donc ce n'est pas un problème de requête :

    .


    DELETE FROM `t_mus` WHERE `idann` =$id LIMIT 1;La suppression à échouée :(

    très bonne suggestion car si je mets echo $id apparait le bon chiffre donc on est sur la bonne voie et je me demande pourquoi quand il se trouve après idann= il n'est pas remplacé :x
     
  16. Stefano
    Stefano WRInaute discret
    Inscrit:
    12 Février 2006
    Messages:
    244
    J'aime reçus:
    0
    Bingo ! :D :D :D :D Merci beaucoup !
     
  17. astanos
    astanos Nouveau WRInaute
    Inscrit:
    17 Mars 2008
    Messages:
    8
    J'aime reçus:
    0
    Euh... à prioris les simple/double quotes ne changent rien. Ce n'était pas plutôt le ; en trop juste après le LIMIT 1?

    Code:
    $sql = 'DELETE FROM `t_mus` WHERE `idann` =$id LIMIT 1;'; 
     
  18. YoyoS
    YoyoS WRInaute accro
    Inscrit:
    14 Septembre 2006
    Messages:
    3 226
    J'aime reçus:
    0
    Si on met un LIMIT 1 , il serait pas plus judicieux de mettre aussi un ORDER by pour être sure que le premier supprimé soit bien celui désiré ?
     
  19. e-kiwi
    e-kiwi WRInaute accro
    Inscrit:
    23 Décembre 2003
    Messages:
    13 198
    J'aime reçus:
    1
    >> Euh... à prioris les simple/double quotes ne changent rien

    ca change tout pourtant

    $id=1

    echo "$id"; -> 1
    echo '$id'; -> $id
     
  20. Stefano
    Stefano WRInaute discret
    Inscrit:
    12 Février 2006
    Messages:
    244
    J'aime reçus:
    0
    Une bonne idée. Même si dans la même page où se trouve le formulaire, avant celui-ci, je fais afficher toutes les actualités de la section avec leur "ID" bien en gras, histoire de ne pas faire de bêtises.
     
  21. YoyoS
    YoyoS WRInaute accro
    Inscrit:
    14 Septembre 2006
    Messages:
    3 226
    J'aime reçus:
    0
    Mais l'id est unique ? si oui, pourquoi mettre un LIMIT 1 ?
     
Chargement...
Similar Threads - Effacer ligne base Forum Date
GA permet-il d'effacer _ga, _gid et _gat ? Google Analytics 28 Octobre 2021
Letsencrypt renew plusieurs ndd et effacer un ndd ? Administration d'un site Web 8 Juillet 2021
Effacer des pages anciennes et des pages de bonnes "qualités" Problèmes de référencement spécifiques à vos sites 18 Mai 2016
Comment effacer des pages piratées indexées ? Débuter en référencement 14 Décembre 2014
effacer sujet dans une table mysql Développement d'un site Web ou d'une appli mobile 7 Janvier 2013
Effacer le cache Développement d'un site Web ou d'une appli mobile 29 Août 2012
Comment effacer l'historique sur les moteurs de recherche ? Annuaires et moteurs 20 Juillet 2012
Comment effacer JavaScript de Google Analytics sous prestashop? Google Analytics 5 Février 2012
effacer les archives du who.is Développement d'un site Web ou d'une appli mobile 3 Août 2011
Fichier index.html en cache impossible à effacer Crawl et indexation Google, sitemaps 10 Novembre 2010
Comment effacer un message déplacé dans Pb PHPBB 3? Administration d'un site Web 21 Février 2010
Effacer un sous-domaine prend combien de temps? Développement d'un site Web ou d'une appli mobile 19 Décembre 2009
Comment effacer des pages indexées ?! Débuter en référencement 3 Mars 2009
Effacer une référence dans google pour un blog Problèmes de référencement spécifiques à vos sites 4 Février 2009
Faire des recherches google en série, puis effacer les traces? Référencement Google 21 Janvier 2009
'DELETE FROM' c'est pas sensé effacer ? [RESOLU] Développement d'un site Web ou d'une appli mobile 17 Janvier 2009
Google: effacer un domaine synonyme de l'index ? Débuter en référencement 24 Décembre 2008
éffacer les doublon Administration d'un site Web 5 Novembre 2008
Effacer l'ID Google Chrome Le café de WebRankInfo 15 Octobre 2008
Mysql: Effacer tout ce qui est au-dessus d'une limite Développement d'un site Web ou d'une appli mobile 7 Août 2008