afficher les news de la + récente à la + ancienne

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : afficher les news de la + récente à la + ancienne

par iclo » 31 oct. 2006, 13:21

Ryle: tout à fait d'accord avec toi, mais pour débuter en php, la solution d'un formulaire par news est quand même plus simple à mettre en oeuvre. :wink:

par 2501gigi » 31 oct. 2006, 11:57

Merci iclo mais entre temps je vient juste de trouver.





Merci a tous.
<?php echo '<a href="notesNews.php?supprimer_news=' . $row_RTnews['IDTn'] . '">'; ?>Supp</a> </div></td>
et apres il suffit de recup

if (isset($_GET['supprimer_news'])) // Si on demande de supprimer une news
{
    // Alors on supprime la news correspondante
    mysql_query('DELETE FROM tnews WHERE IDTn=' . $_GET['supprimer_news']);
header("Location: notesNews.php");
}
je sais pas si meilleur solution mais sa marche

par Ryle » 31 oct. 2006, 11:56

il te faut un formulaire par news, tout simplement.
C'est effectivement une solution, mais c'est pas un peu lourd que de multiplier les formulaires pour un seul champ à chaque fois ?

par iclo » 31 oct. 2006, 11:31

Attention, ce n'est pas parce que tu rencontres un problème avec la solution précédente qu'il faut tout jeter et recommencer différemment.

Tu étais prêt de la solution avec le champ hidden.

Réfléchis bien : tu veux pouvoir supprimer une news en cliquant sur un bouton, il te faut un formulaire par news, tout simplement.

par 2501gigi » 31 oct. 2006, 10:54

Est ce que un truc comme sa sa marche
<form action="notesNews.php&IDTn= <?php $IDTn =$row_RTnews['IDTn'] ?>"

par 2501gigi » 30 oct. 2006, 13:15

Merci ryle je vois comment on fait a peut pres pour les cases a cocher mais j'aimerais essaye t'a premiere soluce mais je vois pas comment on fait.

Peut tu m'aider.

par Ryle » 30 oct. 2006, 12:55

C'est du au fait que dans ta boucle tous tes champs ont le même nom et tous sont envoyés lorsque que tu fais le submit de ton formulaire. Il ne faudrait envoyé que celui que tu souhaites supprimer.

Le plus simple serait de modifier ton bouton pour qu'au lieu de soumettre tout le formulaire, il appelle simplement l'url notesNews.php?SuppNews=Supp&IDTn=xx avec l'id qui va bien.

Sinon ce que tu peux faire c'est mettre des cases à cocher à côté de chaque news à la place des champs cachés et de ne laisser qu'un seul bouton supprimer (qui enverra tout le formulaire) à la fin de la liste. Ainsi seuls les id des cases qui ont été cochés seront envoyés et seront donc à supprimer... :)

par 2501gigi » 30 oct. 2006, 12:25

Merci iclo, c'est vrai je n'avais pas penssé a ca, tandis que pour dreamwear j'ai commencé avec sa, je mis suis habitué, bon c'est sur je ne comprend pas tout mais bon.

Revenon a nos moutons, voila j'ai fais un truc comme sa mais je n'en suis pas sur pour le champs hidden:

Code : Tout sélectionner

<input name="IDTn" type="hidden" id="IDTn" value="<?php $IDTn =$row_RTnews['IDTn']; echo $IDTn ; ?>">
car quand j'appuis sur le bout supp sa me passe dans post un truc comme ca:

/notesNews.php?IDTn=14&SuppNews=Supp.&IDTn=13&IDTn=11&IDTn=10&IDTn=9&IDTn =8&IDTn=7&IDTn=6&IDTn=4&IDTn=3

A quoi c'est du?


Merci

par iclo » 29 oct. 2006, 22:09

Soyons méthodique (il faut avoir de bonnes bases pour aller de l'avant)

Utiliser une session, ne t'évitera pas de devoir les supprimer dans la base de donnée, donc ce sera encore plus compliqué à gêrer.
Pourqoi ne pas utiliser des champs date pour sotcker des dates ? si par la suite tu souhaites ajouter des fonctionnalités: par exemple afficher les news d'un mois précis, ça va vite devenir complétement ingérable. Je ne saurais trop te conseiller de directement utiliser les types qui conviennent le mieux, pour éviter les mauvaises surprises par la suite.

Utiliser la date comme identifiant unique, ne me parait pas être ce qui il y a le mieux: que se passera-t-il si un jour du dois avoir plusieurs news le même jour.
Il vaudrait beaucoup mieux avoir un champ id, autoincrémenté (et donc unique) C'est ce champs qui servira à identifier la news à supprimer.
En résumé :

- Tu affiches tes news avec un formulaire, contenant notamment l'id de la news dans un champ caché.
- Dans le script qui est appelé par le formulaire, tu récupere l'id et tu l'utilise dans ton delete.

Ps : utiliser Dreamweaver pour débuter en php, ne me parait pas la meilleure solution, utiliser des automatismes, c'est par après que ça devient intéressant, pour éviter de faire ce qui est triviail, et qu'on sait déja parfaitement faire, et donc quand on peut avoir un contrôle sur le code généré.

par 2501gigi » 29 oct. 2006, 20:42

Bon et si j'utilisais une session ou j'enregistrerais chaqhe nouvelle news
Puis apres avec une boucle for j'afficherais toutes les news(enfin les 5 dernieres) puis vu que j'aurais les infos dans la session sa sera plus facile des les supprimer.

Mais bon j'ai un peut regarder sa a l'air galere a faire , quand pensez vous?

Puisque aparamant il n'y a pas de soluce.

par 2501gigi » 29 oct. 2006, 16:53

Salut ryle le champs daten n'est pas un champ date mais varchar) car si tu regarde mon code c'est sa que j'enregistre.
$date=date("d-m-Y à G:i:s"); 

Et quand a ta dernire phrase c'est sa que je demander comment fait on pour passer cette info.

par Ryle » 29 oct. 2006, 16:28

Si tu jette un coup d'oeil aux valeurs contenues dans ta base de données (et si ton champ daten est bien un champ date) tu remarqueras que le format des dates dans mysql est "aaaa-mm-jj"

Pour supprimer les valeurs par rapport à une date précise, il te faut donc spécifier ta date à ce format là :)

Quant à la date que tu veux passer, dans ton formulaire il n'y a aucune info de date à supprimer. Tu dois avoir quantité de bouton modif et suppr, mais aucun qui ne permet de savoir quel élément modifier ou supprimer... à creuser un peu plus ;)

par 2501gigi » 29 oct. 2006, 13:25

Bon voila le code de ma page , car moi je n'en peut plus.
J'enleve ,je rajoute,je deplace et je crois cas force je ne sais plus ou j'en suis.

Bon voila si vous pouvais m'aider sinon tand pis:
Voir se qui cloche ,je n'arrive pas a supprimer une news:

Edit: j'ai trouvait la moitier de la soluce c'etait mon image qui ne soumetté pas mon formulaire tout con mais bon;
Par conte dans ma requete DELETE si je met une date presise que et dans une news sa marche sinon je crois que c'est parceque je n'arrive pas a faire passé les date dans mon POST que sa ne marche pas.

j'essaye encore je vais bien trouver.
if ($SuppNews == "Supp."){
mysql_select_db ($database_Debaseconnect,$Debaseconnect);
$deleteNews = "DELETE FROM tnews WHERE DATEn = '5 '";
$Result7 = mysql_query($deleteNews, $Debaseconnect) or die(mysql_error());
header("Location: notesNews.php");}
Et mon formulaire :
 <form action="notesNews.php" method="get" name="formSuppnews" >
            <table width="617" border="1" cellspacing="0" cellpadding="0">
              <?php while ($row_RTnews = mysql_fetch_assoc($RTnews))  {?>
              <tr>
                  <td width="159" bgcolor="#FFFFFF"><div align="center"><?php $DATEn = $row_RTnews['DATEn'];  echo $DATEn; ?></div></td>
                  <td width="347" bgcolor="#FFFFFF"><?php $TITnew=$row_RTnews['TITnew']; echo $TITnew; ?></td>
                  <td width="51" bgcolor="#FFFFFF"><div align="center">
                    <input name="ModifNews" type="submit" id="ModifNews" value="Modif.">
                  </div></td>
                  <td width="50" bgcolor="#FFFFFF"><div align="center">
                    <input name="SuppNews" type="submit" id="SuppNews" value="Supp.">
                  </div></td>
              </tr>
              <?php }  ?>
            </table>
          </form>
Bon merci d'avance.

par 2501gigi » 29 oct. 2006, 10:25

Alors il n'y a personne pour m'aider dommage car moi j'ai chercher mais je n'arrive pas a trouver il y a quelque faute mais sa je les aient reglés,
mon je pense que sa viend que je ne passe pas la date dans mon POST quand j'appuis sur le bouton supprimer.

par 2501gigi » 28 oct. 2006, 16:11

DAns un soucis de clarté enfin si on peut dire voia le code de ma page.
Enfin pas tout mais les chose importante.

La c'est la ou j'initialise la plupart de mes valeurs:


.
<?php
mysql_select_db($database_Debaseconnect, $Debaseconnect);
$query_RTnews = "SELECT * FROM tnews ORDER BY IDTn DESC";
$RTnews = mysql_query($query_RTnews, $Debaseconnect) or die(mysql_error());
$totalRows_RTnews = mysql_num_rows($RTnews);


if (!isset($_POST['action2'])) $action2=""; else $action2 = $_POST['action2'];
if (!isset($_POST['action'])) $action=""; else $action = $_POST['action'];
if (!isset($_POST['message'] )) $Tn=""; else $Tn=$_POST['message'];
if (!isset($_POST['TitreNews'] )) $Ttn=""; else $Ttn=$_POST['TitreNews'];
if (!isset($_POST['suppNews'] )) $suppNews=""; else $suppNews=$_POST['suppNews'];
if (!isset($_SERVER['IDTn'] )) $IDTn=""; else $IDTn=$_SERVER['IDTn'];
if (!isset($_SERVER['$DATEn'] )) $DATEn=""; else $DATEn=$_SERVER['DATEn'];

$date=date("d-m-Y à G:i:s");
$Textnews= addslashes($Tn);
$TitreTexteNews= addslashes($Ttn);


if ($action=="Ajouter"){ 
mysql_select_db ($database_Debaseconnect,$Debaseconnect);
		$insertListe = "INSERT INTO tnews (DATEn,TITnew,TEXnew) VALUES ('$date','$TitreTexteNews','$Textnews')";
		$Result6 = mysql_query($insertListe, $Debaseconnect) or die(mysql_error());


header("Location: notesNews.php");}



if ($suppNews == "SUPPRIMER"){
mysql_select_db ($database_Debaseconnect,$Debaseconnect);
		$delteNews = "DELETE FROM tnews WHERE DATEn = $date";
		$Result7 = mysql_query($deleteNews, $Debaseconnect) or die(mysql_error());
}


?>


Et la c'est la ou j'ai mis le bouton pour supprimer une news.

<form action="notesNews.php" method="post" name="formSuppnews" id="formSuppnews">
            <table width="617" border="1" cellspacing="0" cellpadding="0">
              <?php while ($row_RTnews = mysql_fetch_assoc($RTnews)){?>
              <tr>
                  <td width="153" bgcolor="#FFFFFF"><div align="center"><?php echo $row_RTnews['DATEn']; ?></div></td>
                  <td width="394" bgcolor="#FFFFFF"><?php echo $row_RTnews['TITnew']; ?></td>
                  <td width="30" bgcolor="#FFFFFF"><div align="center"><img src="../icones/images/Applications.gif" alt="Modifier" width="16" height="16"></div></td>
                  <td width="30" bgcolor="#FFFFFF"><div align="center"><a href="notesNews.php?suppNews=SUPPRIMER"><img src="../icones/images/Recycle%20Bin%20(full).gif" alt="Supprimer" width="16" height="16" border="0"></a></div></td>
              </tr>
              <?php }  ?>
            </table>
          </form>
Bon voila ci ca peut vous aider à m'aider.