erreur timestamp

Eléphant du PHP | 58 Messages

19 nov. 2009, 13:02

Bonjour,
pour mon site de musique, fichier concerts.php, j'affiche tous les concerts des artistes, et maintenant je veux qu'une fois la date passé, cet entree soit supprimé,
ex:
artiste / le 19/11/2009 / ville / ... / ...

et donc je veux que le 20/11 cet entrée soit supprimé, mais j'ai rencontré beaucoup des problemes, et je viens donc poser la question sur le forum,

voici le code
<?php
include("./includes/haut.php");
?>
<div id="concert">
<?php
mysql_connect("", "", "");
mysql_select_db("");
?>
<p>
<?php
echo "<table>
         <tr>
             <th>Nom de l'artiste : </th>
             <th>Date : </th>
             <th>ville : </th>
             <th>Tarif : </th>
             <th>reservation : </th>
        </tr>";

 $result = mysql_query("DELETE * FROM concert WHERE date < ".time()."ORDER BY date DESC");      
while($concert == mysql_fetch_array($result))
{
echo "<tr>
<td>".$concert['nom']. "</td>
<td>".$concert['date']."</td>
<td>".$concert['ville']."</td>
<td>".$concert['tarif']."</td>
<td>" .$concert['reservation']."</td>
</tr>"; 
}
echo "</table>";
?>
</p></div>
<?php    
include("./includes/bas.php");
?>
Vous pouvez m'aider s'il vous plaît a resoudre le probleme,

merci par avance

ViPHP
ViPHP | 1136 Messages

19 nov. 2009, 13:39

Salut ,

Quel est le probléme ?

c'est ta requete qui ne fonctionne pas ?

remplace la fonction php "time()" par la fonction mysql 'NOW()'
<?php
include("./includes/haut.php");
?>
<div id="concert">
<?php
mysql_connect("", "", "");
mysql_select_db("");
?>
<p>
<?php
echo "<table>
         <tr>
             <th>Nom de l'artiste : </th>
             <th>Date : </th>
             <th>ville : </th>
             <th>Tarif : </th>
             <th>reservation : </th>
        </tr>";

 $result = mysql_query("DELETE * FROM concert WHERE date < NOW() ORDER BY date DESC");      
while($concert == mysql_fetch_array($result))
{
echo "<tr>
<td>".$concert['nom']. "</td>
<td>".$concert['date']."</td>
<td>".$concert['ville']."</td>
<td>".$concert['tarif']."</td>
<td>" .$concert['reservation']."</td>
</tr>";
}
echo "</table>";
?>
</p></div>
<?php    
include("./includes/bas.php");
?>
 

Eléphant du PHP | 58 Messages

19 nov. 2009, 13:54

En faite, il affiche une message d'erreur,
mais c'est tres bizarre ce qui me fait,

j'ai avec ce code
echo "<tr>
<td>".$concert['nom']. "</td>
<td>".$concert['date']."</td>
<td>".$concert['ville']."</td>
<td>".$concert['tarif']."</td>
<td>" .$concert['reservation']."</td>
</tr>"; 
}
il m'affiche une message d'erreur

Parse error: syntax error, unexpected '}' in /var/www/virtual/topmusic.free-hosting.fr/htdocs/concerts.php on line 30

mais des que je met avant echo, ca: { il n'affiche plus rien du tout, mais le souris, ne fonctionne plus correctement, l'internet se bloque, mais il n'y a que sur la page concerts, que ca fait comme ca, si j'enleve {, il fonctionne correctement, mais avec une message d'erreur...

comment pourrai-je regler le probleme, SVP?

ViPHP
ViPHP | 1136 Messages

19 nov. 2009, 14:35

Une erreur , attention à cette ligne :
while($concert == mysql_fetch_array($result))
ce n'est pas == mais simplement =

ce qui donne :
while($concert = mysql_fetch_array($result))
car tu définis $concert à chaque boucle ..

Eléphant du PHP | 58 Messages

19 nov. 2009, 19:54

il affiche une message d'erreur:


Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in /var/www/virtual/topmusic.free-hosting.fr/htdocs/concerts.php on line 22

vous pouvez m'aider SVP?

merci par avance,

Mammouth du PHP | 985 Messages

19 nov. 2009, 20:09

$result = mysql_query("DELETE * FROM concert WHERE date < ".time()."ORDER BY date DESC");      
Ce n'est pas DELETE mais SELECT.
DELETE = Supprimer
SELECT = Selectionner
Face à la roche, le ruisseau l'emporte toujours, non pas par la force mais par la persévérance.

Eléphant du PHP | 58 Messages

19 nov. 2009, 20:13

mais si je met select, il va supprimé les dates passé (ou selectioner les prochaines dates)?

merci par avance

Mammouth du PHP | 985 Messages

19 nov. 2009, 20:17

ok oui si tu veux supprimer c'est DELETE et oui faut utiliser NOW() et non time().

Le problème c'est que :
while($concert = mysql_fetch_array($result))
-> prend en compte un résultat, donc pas certain que cela fonctionne avec un DELETE, mais la c'est a confirmer, te faudra peut-être faire un SELECT après le DELETE juste avant ta boucle...
Face à la roche, le ruisseau l'emporte toujours, non pas par la force mais par la persévérance.

Eléphant du PHP | 58 Messages

19 nov. 2009, 21:52

ca veut dire que je dois faire ca:
("DELETE * FROM concert WHERE date < NOW() ORDER BY date DESC")
et juste apres
("SELECT * FROM concert WHERE date < ".time."() ORDER BY date DESC")

c'est bien ca?

merci par avance pour votre aide

Mammouth du PHP | 985 Messages

19 nov. 2009, 22:39

Non le DELETE corrigé par Stopher et ensuite un SELECT, du style:
$result = mysql_query("DELETE * FROM concert WHERE date < NOW() ORDER BY date DESC");
// Pas la peine d'utiliser NOW().. puisque tu as déjà supprimé juste avant
$result = mysql_query("SELECT * FROM concert ORDER BY date DESC");
[EDIT]
on peut même supprimer le order dans le DELELE, cela devient inutile, donc:
$result = mysql_query("DELETE * FROM concert WHERE date < NOW()");
// Pas la peine d'utiliser NOW().. puisque tu as déjà supprimé juste avant
$result = mysql_query("SELECT * FROM concert ORDER BY date DESC");
Face à la roche, le ruisseau l'emporte toujours, non pas par la force mais par la persévérance.

Eléphant du PHP | 58 Messages

19 nov. 2009, 22:54

Maintenant, il n'affiche plus d'erreur, j'ai ajouté un concert pour voir ce qui me fait.

je vous tiens au courant, si ca marche ou pas

je voulais juste savoir s'il ne marche pas, demain j'ouvre un nouveau topic, ou celui la?

Merci,

Eléphant du PHP | 58 Messages

20 nov. 2009, 14:40

je viens de voir si ca marche ou pas, mais la date passé n''est pas supprimé.
j'avais mis pour exemple, 2 dates: le 19 et le 20 mais le 19 est toujours affiché. alors qu'il ne devrait etre affiché que le 20 car le 20 n'est pas passé.

vous pouvez m'aider SVP,

merci par avance,

Mammouth du PHP | 985 Messages

20 nov. 2009, 14:50

La raison est surement que la date enregistrée dans ta BD n'est pas dans le même format que NOW().
Donc:
date < NOW() -> n'est jamais inferieur à NOW().

Vue que maintenant tu utilises NOW() dans le DELETE, il faut aussi utiliser NOW() pour enregistrer la date dans la BD, pour que les formats soient les même et donc que l'on puisse les comparer...

[EDIT]
Le format de NOW() (timestamp) est sous la forme AAAA-MM-DD HH:MM:SS.
Exemple:
2009-11-20 11:23:37
Face à la roche, le ruisseau l'emporte toujours, non pas par la force mais par la persévérance.

Eléphant du PHP | 58 Messages

20 nov. 2009, 15:01

le type pour la date que j'ai mis dans ma bdd c'est text

merci par avance

Mammouth du PHP | 985 Messages

20 nov. 2009, 15:07

Le type du champ date, doit être DATETIME justement pour pouvoir utiliser toutes les fonctions SQL de comparaison de dates...
Face à la roche, le ruisseau l'emporte toujours, non pas par la force mais par la persévérance.