Page 1 sur 2

erreur timestamp

Posté : 19 nov. 2009, 13:02
par david18
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

Re: erreur timestamp

Posté : 19 nov. 2009, 13:39
par stopher
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");
?>
 

Re: erreur timestamp

Posté : 19 nov. 2009, 13:54
par david18
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?

Re: erreur timestamp

Posté : 19 nov. 2009, 14:35
par stopher
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 ..

Re: erreur timestamp

Posté : 19 nov. 2009, 19:54
par david18
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,

Re: erreur timestamp

Posté : 19 nov. 2009, 20:09
par Dr@ke
$result = mysql_query("DELETE * FROM concert WHERE date < ".time()."ORDER BY date DESC");      
Ce n'est pas DELETE mais SELECT.
DELETE = Supprimer
SELECT = Selectionner

Re: erreur timestamp

Posté : 19 nov. 2009, 20:13
par david18
mais si je met select, il va supprimé les dates passé (ou selectioner les prochaines dates)?

merci par avance

Re: erreur timestamp

Posté : 19 nov. 2009, 20:17
par Dr@ke
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...

Re: erreur timestamp

Posté : 19 nov. 2009, 21:52
par david18
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

Re: erreur timestamp

Posté : 19 nov. 2009, 22:39
par Dr@ke
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");

Re: erreur timestamp

Posté : 19 nov. 2009, 22:54
par david18
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,

Re: erreur timestamp

Posté : 20 nov. 2009, 14:40
par david18
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,

Re: erreur timestamp

Posté : 20 nov. 2009, 14:50
par Dr@ke
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

Re: erreur timestamp

Posté : 20 nov. 2009, 15:01
par david18
le type pour la date que j'ai mis dans ma bdd c'est text

merci par avance

Re: erreur timestamp

Posté : 20 nov. 2009, 15:07
par Dr@ke
Le type du champ date, doit être DATETIME justement pour pouvoir utiliser toutes les fonctions SQL de comparaison de dates...