Répétition de requètes interdit ?

Résolu
virtualsof Messages postés 106 Date d'inscription   Statut Membre Dernière intervention   -  
Alain_42 Messages postés 5361 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour,
Le titre est p-e un peu bizarre mais je m'explique :

Sur ma page j'ai une requête qui marche bien mais lorsque sur la même page je souhaite la répéter, il ne m'affiche rien :/

Pour info j'utilise le comportement de DW pour plus de rapidité... quoique.

<?php 
$selectEvent= mysql_query("SELECT * FROM donnees");

$annee=date('Y');

$anneesuivante=$an+1;

$row_selectEvent = mysql_fetch_assoc($selectEvent);


//------------ Là ça fonctionne bien
do { ?>

if ($row_selectEvent['annee'] == $annee) {

echo $row_selectEvent['info'];

etc....

 } } while ($row_selectEvent = mysql_fetch_assoc($selectEvent));

<br />
<br />

<hr />

<br />
<br />

//------------ Là ça fonctionne plus :( en fait il ne se passe rien

do { ?>

if ($row_selectEvent['annee'] == $anneesuivante) {

echo $row_selectEvent['info'];

etc....

 } } while ($row_selectEvent = mysql_fetch_assoc($selectEvent));

?>

</HTML>
<?php
mysql_free_result($selectEvent);
?>


Alors je me dis qu'il y a p-e un "truc" à savoir sur la réitération d'une requête à la BD ou la réutilisation des données déjà utilisées mais je n'ai pas réussi à trouver sur la toile.

Y a un truc a savoir ? ^^

D'avance merci pour vos lumières.

2 réponses

Alain_42 Messages postés 5361 Date d'inscription   Statut Membre Dernière intervention   894
 
Bonsoir,

le principe d'une extraction Mysql

mysql_query "sort" les données et les range dans une zone mémoire

par ta boucle do while avec mysql_fetch_assoc

tu vient lire ces données ligne par ligne le pointeur se déplace donc a chaque fois, donc a la fin de ta première ton pointeur est en fin de zone.

il faut soit faire une nouvelle requette mysql_query ou trouver une commande qui remet le pointeur au début (je ne l'ai pas trouvée)
1
Alain_42 Messages postés 5361 Date d'inscription   Statut Membre Dernière intervention   894
 
j'ai retouvé la commande qui remet le pointeur:

mysql_data_seek()

vas voir sur google comment l'utiliser
0