Se connecter avec
S'enregistrer | Connectez-vous

Encore un problème en php

Dernière réponse : dans Programmation

Encore moi :p 

Voilà maintenant j'ai un problème quand je veux modifier ou supprimer une news.
Quand j'en supprimes une, les autres aussi sautent... :/ 
Alors là il y a la liste si vous voulez tester : la liste
Et là la page de news

Voici le code :
  1. if (isset($_GET['supprimer_news']))
  2. {
  3.  
  4. mysql_query('DELETE FROM news WHERE id=' . $_GET['supprimer_news']);
  5. }
  6. ?>
  7.  
  8. <table><tr>
  9. <th>Modifier</th>
  10. <th>Supprimer</th>
  11. <th>Titre</th>
  12. <th>Date</th>
  13. </tr>
  14.  
  15. <?php
  16. $retour = mysql_query('SELECT * FROM news ORDER BY id DESC');
  17. while ($donnees = mysql_fetch_array($retour))
  18. {
  19. ?>
  20.  
  21. <tr>
  22. <td><?php echo '<a href="rediger_news.php?modifier_news=' . $donnees['id'] . '">'; ?>Modifier</a></td>
  23. <td><?php echo '<a href="liste_news.php?supprimer_news=' . $donnees['id'] . '">'; ?>Supprimer</a></td>
  24. <td><?php echo stripslashes($donnees['titre']); ?></td>
  25. <td><?php echo date('d/m/Y', $donnees['timestamp']); ?></td>
  26. </tr>


Merci beaucoup ^^

Autres pages sur : probleme php

Lassé par la pub ? Créez un compte

En effet sa supprime tout à chaque fois...

Essaye avec cette requête :
mysql_query('DELETE FROM news WHERE id=' . $_GET['supprimer_news'].' LIMIT 1');

Ensuite vérifie aussi que ton id est en auto_increment, ou que tu lui affecte bien une valeur unique pour chaque news

Citation :

Ensuite vérifie aussi que ton id est en auto_increment, ou que tu lui affecte bien une valeur unique pour chaque news

J'crois bien que ça vient de là puisque j'ai essayé de le faire mais j'ai pas réussi

Tu peux me le dire avec phpmyadmin ou autrement ? Merci encore

Lorsque que tu est dans la page de structure de ta table news, clic sur Modifier pour le champ ID.

Ensuite dans la colonne Extra tu met auto_increment et le problème sera reglé.

Enfin à chaque fois que tu insérera une bouvelle news, dans ta requête tu ne fournira aucune valeur pour le champ Id, MySQL se chargera de lui affecter la valeur qui va bien.

Euh j'ai un message d'erreur :

Erreur

requête SQL:

ALTER TABLE `news` CHANGE `id` `id` INT( 11 ) NOT NULL AUTO_INCREMENT

MySQL a répondu:D ocumentation
#1075 - Incorrect table definition; there can be only one auto column and it must be defined as a key

:-?

Ha oui désolé je n'avais pas pensé à ça : il faut que tu mette ton champ Id en clé primaire. Pour cela exécute simplement cette requête :

ALTER TABLE `news` ADD PRIMARY KEY ( `id` ) ;

Tu peux également la créée en utilisant l'interface graphique de PMA :
- Dans le tableau nommé Index en dessous de la structure de ta table
- Clic sur exécuter
- Nom de la clé : PRIMARY
- Type de clé : PRIMARY
- Champ : Id
- Taille : laisse vide

Et sa règle le problème tu pourras définir ton auto_increment tranquillement :) 

Ho encore une petite chose, je veux mettre un peu le même principe mais pour la partie dowload, jusque là tout va bien mais j'aimerais à la place de la date (à coté du titre donc) mettre un lien de téléchargement... j'ai créé un nouveau champ lien dans la table, j'ai mis le <imput blablabla> dans le formulaire à la page Rediger un dowload (login : idnaute, mdp:test) , j'ai mis le <?php...> dans la page principale...
Mais comme vous le voyez à la place du lien, il y a un nombre...

code exacte de la page rédiger :
  1. <?php
  2. mysql_connect("localhost", "plop_plop", "171090");
  3. mysql_select_db("plop_heu");
  4.  
  5. if (isset($_GET['modifier_dld']))
  6. {
  7.  
  8. $retour = mysql_query('SELECT * FROM dld WHERE id=' . $_GET['modifier_dld']);
  9. $donnees = mysql_fetch_array($retour);
  10.  
  11.  
  12. $titre = $donnees['titre'];
  13. $contenu = $donnees['contenu'];
  14. $id_dld = $donnees['id'];
  15. $lien = $donnees['lien'];
  16. }
  17. else
  18. {
  19.  
  20. $titre = '';
  21. $contenu = '';
  22. $id_dld = 0;
  23. $lien = '';
  24. }
  25. ?>
  26.  
  27. <form action="liste_dld.php" method="post">
  28. <p>Titre : <input type="text" size="30" name="titre" value="<?php echo $titre; ?>" /></p>
  29. <p>Lien : <input type="text" size="30" name="lien" value="<?php echo $lien; ?>" /></p>
  30. <p>
  31. Contenu :
  32.  
  33. <textarea name="contenu" cols="50" rows="10">
  34. <?php echo $contenu; ?>
  35. </textarea>
  36.  
  37. <input type="hidden" name="id_dld" value="<?php echo $id_dld; ?>" />
  38. <input type="submit" value="Envoyer" />
  39. </p>
  40.  
  41. etc...


Et le code de la page dld.php :
  1. <?php
  2. mysql_connect("localhost", "plop_plop", "171090");
  3. mysql_select_db("plop_heu");
  4. $retour = mysql_query('SELECT * FROM dld ORDER BY id DESC LIMIT 0, 5') or die(mysql_error());
  5. while ($donnees = mysql_fetch_array($retour))
  6. {
  7. ?>
  8. <b> <?php echo $donnees['titre']; ?></b>
  9. <em><?php echo $donnees['lien']; ?></em>
  10.  
  11. <p>
  12.  
  13. <?php
  14.  
  15. $contenu = nl2br(stripslashes($donnees['contenu']));
  16. echo $contenu;
  17. ?>
  18. </p>
  19.  
  20. <?php
  21. }
  22. ?>



Merci encore une fois d'avance ^^

Le nombre qui s'affiche ressemble fort à un Timestamp donc vérifie bien le type de tes champs.

Edit : Peut être que tu t'es trompé dans ta requête qui insère les D/L... je n'y avais même pas penssé : vérifie bien l'ordre d'insertion des champs dans ta requête peut être en as-tu inversé deux.
Lassé par la pub ? Créez un compte
Tom's guide dans le monde