problème de boucle avec update.........(résolu) - PHP - Programmation
Marsh Posté le 08-08-2002 à 13:47:30
Hoy hoy !!
j'ai pas tout lu mais pk n'utilises-tu pas :
|
de la même facon :
|
puis tu fais ton SELECT ....
Marsh Posté le 08-08-2002 à 14:27:19
Je viens d'essayer ce que tu m'a donné, j'ai donc mis à l'interieur de while la commande update, mais il me rempli tous les champs dif_jour avec 0 alors que j'ai un enregistrement avec 31 jours et un autre avec 61 jours de différence
voilà le script que j'ai modifié:
if ($lignes!=0) {
while ($rows = mysql_fetch_array($result))
{
// mise à jour du champ dif_jour
mysql_query("UPDATE annonces SET dif_jour = to_days(NOW() - date)" );
echo ("<table border='0' cellpadding='2' cellspacing='2' width='70%' BGCOLOR='#454545'>
<tr BGCOLOR='#000000'>
<td>
<table border='0' cellpadding='0' cellspacing='0' width='100%'>
<tr>
<td><b><FONT COLOR='#FF6600'>$rows[1]</FONT></b></td>
<td align='right'>$rows[7]</td>
</tr>
</table>
</td>
</tr>
<tr>
<td><B>$rows[4]</B></td>
</tr>
<tr>
<td>
<table border='0' cellpadding='0' cellspacing='0' width='100%'>
<tr>
<td><B><FONT COLOR='#0000FF'>Email:  </B></FONT><a href='mailto:$rows[3]'>$rows[3]</a></td>
<td align='right'>" ); if ($rows[6]!=0) {echo"<B><FONT COLOR='#0000FF'>Tel:  </FONT>$rows[6]</B>";}
echo ("</td>
</tr>
</table>
</td>
</tr>
</table>
<br>
" );
}
Marsh Posté le 08-08-2002 à 14:33:56
en fait je crois que j'y arrive maintenant, ta méthode était bonne, il y avait juste un twist dans la formule de calcul, je l'ai transformé comme ceci:
$mise=mysql_query("UPDATE annonces SET dif_jour = to_days(NOW()) - to_days(date)" );
Marsh Posté le 08-08-2002 à 14:38:06
oui c'est bon merci, j'ai essayé avec delete et mes enregistrement disparaissent quand ils ont + de 60 jours.
merci beaucoup
Marsh Posté le 08-08-2002 à 15:05:32
arf
j'ai pas vu mais ta méthode UPDATE, mets là au dehors de la boucle while !!!
par contre j'y pense tu n'as pas besoin de cet update si dans ton select tu fais :
SELECT *, (TO_DAYS(NOW()) - TO_DAYS(date)) as dif_jour FROM tabase ..... |
tu peux même les trier après avec ORDER BY dif_jour
tu les affiches après grâce à
Code :
|
en espérant t'avoir un peu plus aider
Marsh Posté le 08-08-2002 à 12:10:34
re-re-salut, décidement je me débrouille mal, j'ai sans arret besoin de vous.
Je fait un script de petites annonces, et je voudrais qu'il supprime automatiquement les annonces de + de 60 jours.
pour le moment j'essai de remplir un champ que j'ai appellé "dif_jour" avec la différence des jours entre la date d'entrée et la date actuelle.
Le nombre de jours s'appelle "$jour[0]" et j'arrive à l'afficher dans chaque message, par exemple le 1er message a 31 jours et le 2eme 61 jours.
Le problème est qu'en utilisant la fonction update à l'interieur de WHILE, il me rempli tous les champs dif_jour avec 61 et ne tiens pas compte des autres.
Voici le bout de code
// variable qui contient la différence des 2 dates
$jour_affichage=mysql_query("select to_days(now()) - to_days(date) from annonces" );
//si le nombre de ligne de résultat>0 alors afficher les résultats un par un ainsi que le nombre de jours écoulés
if ($lignes!=0) {
while ($rows = mysql_fetch_array($result) and $jour = mysql_fetch_array($jour_affichage))
{
//met à jour le champ dif_jour pour chaque enregistrement
mysql_query("update annonces SET dif_jour = $jour[0]" );
// affichage du tableau des annonces
echo ("<table border='0' cellpadding='2' cellspacing='2' width='70%' BGCOLOR='#454545'>
<tr BGCOLOR='#000000'>
<td>
<table border='0' cellpadding='0' cellspacing='0' width='100%'>
<tr>
<td><b><FONT COLOR='#FF6600'>$rows[1]</FONT></b></td>
<td align='right'>$rows[7]</td>
<!-- comptage du nombre de jour d'affichage et là ca fonctionne-->
<TD> déjà $jour[0] jours</TD>
</tr>
</table>
</td>
</tr>
<tr>
<td><B>$rows[4]</B></td>
</tr>
<tr>
<td>
<table border='0' cellpadding='0' cellspacing='0' width='100%'>
<tr>
<td><B><FONT COLOR='#0000FF'>Email:  </B></FONT><a href='mailto:$rows[3]'>$rows[3]</a></td>
<td align='right'>" ); if ($rows[6]!=0) {echo"<B><FONT COLOR='#0000FF'>Tel:  </FONT>$rows[6]</B>";}
echo ("</td>
</tr>
</table>
</td>
</tr>
</table>
<br>
" );
}
echo "</tr></table>";
Message édité par mecano1 le 08-08-2002 à 14:39:00