reinitialiser un curseur [php] - Programmation
Marsh Posté le 10-08-2002 à 01:51:49
mysql_data_seek($result,0);
http://www.php.net/manual/en/funct [...] a-seek.php
Et je le savais pas, ca m'a pris 15s dans le manuel
Marsh Posté le 10-08-2002 à 02:06:13
Zion a écrit a écrit : mysql_data_seek($result,0); http://www.php.net/manual/en/funct [...] a-seek.php Et je le savais pas, ca m'a pris 15s dans le manuel |
comme quoi ca sert de lire le manuel
ok je sors
Marsh Posté le 10-08-2002 à 09:56:09
un reset() sur le tableau de résultat ne fonctionne pas ?
Marsh Posté le 10-08-2002 à 13:11:50
Sh@rdar a écrit a écrit : un reset() sur le tableau de résultat ne fonctionne pas ? |
c'est pas un tableau qu il faut initialisé ici mais l objet $results
donc il me met une erreur si je fait un reset($results)
mais mysql_data_seek($result,0);
marche niquel!
merci de votre aide
Marsh Posté le 10-08-2002 à 13:21:55
Sh@rdar a écrit a écrit : un reset() sur le tableau de résultat ne fonctionne pas ? |
J'avais pensé au résult, mais c vrai que c pas pareil
Marsh Posté le 10-08-2002 à 15:59:40
veryfree a écrit a écrit : c'est pas un tableau qu il faut initialisé ici mais l objet $results donc il me met une erreur si je fait un reset($results) mais mysql_data_seek($result,0); marche niquel! merci de votre aide |
je parlais pas de faire un reset($result) (aucun sens puisque c'est pas un tableau)
mais comme tu fais $nb = mysql_fetch_array($reqult) $nb est un tableau contenant les résultats de la requête, tu dois donc pouvoir le traiter en tant que tel et faire un reset($nb)
(à mon avis ça doit être plus rapide que le mysql_data_seek()
Marsh Posté le 10-08-2002 à 16:09:08
Tu sais comment ca marche un curseur ou pas? On dirait que non
C'est simple, c'est comme un fichier, tu l'initialises avec un select, puis tu lis record PAR record (avec mysql_fetch_array pour pour mysql), jusqu'au moment ou il te retourne NULL (false ici en php).
Donc t'es bien gentil a faire un reset sur un record, mais tu iras pas loin avec ca.
C'était la minute explicative du jour
-> Seule solution, le mysql_data_seek
veryfree> Change le nom du topic stp pour dire qu'il est résolu
Marsh Posté le 10-08-2002 à 16:10:39
Sh@rdar a écrit a écrit : je parlais pas de faire un reset($result) (aucun sens puisque c'est pas un tableau) mais comme tu fais $nb = mysql_fetch_array($reqult) $nb est un tableau contenant les résultats de la requête, tu dois donc pouvoir le traiter en tant que tel et faire un reset($nb) (à mon avis ça doit être plus rapide que le mysql_data_seek() |
en fait c pour un livre d or avec smiley comme sur ce forum
a chaque message ,je fait une boucle pour remplacer les code : D
par ex en
donc je fait comme ca
ps : $mess correspond donc a un message correspindant par ex a une reponse d'un topic ...
ca fait une boucle imbriqué c pas top
enfin je sait pas si j ai été clair
Code :
|
Marsh Posté le 10-08-2002 à 16:12:50
Zion a écrit a écrit : Tu sais comment ca marche un curseur ou pas? On dirait que non C'est simple, c'est comme un fichier, tu l'initialises avec un select, puis tu lis record PAR record (avec mysql_fetch_array pour pour mysql), jusqu'au moment ou il te retourne NULL (false ici en php). Donc t'es bien gentil a faire un reset sur un record, mais tu iras pas loin avec ca. C'était la minute explicative du jour -> Seule solution, le mysql_data_seek veryfree> Change le nom du topic stp pour dire qu'il est résolu |
ca sent le fight la
non mais serieux sh@rdar cherchait juste une solution plus optimisée et n a a aucun moment dit qu on pouvait reinitialiser un curseur avec reset() ...
Marsh Posté le 10-08-2002 à 16:16:51
veryfree a écrit a écrit : ca sent le fight la non mais serieux sh@rdar cherchait juste une solution plus optimisée et n a a aucun moment dit qu on pouvait reinitialiser un curseur avec reset() ... |
Me semble pas avoir été agressif, et reli le message que j'ai quôté, il pensait que tu avais tous les résultats d'un coup en faisant un fetch_array
Marsh Posté le 10-08-2002 à 16:19:57
veryfree a écrit a écrit : en fait c pour un livre d or avec smiley comme sur ce forum a chaque message ,je fait une boucle pour remplacer les code : D par ex en |
Ah benh tu diras tout
Je pensais que tu voulais faire ca exceptionellement, pas en boucle... Récupère les données dans un array d'array et traite ton array.
Genre
while ($smileys[] = mysql_fetch_array($result));
puis pour chaque message
foreach($smileys as $smiley)
{
//Tu as ton $smiley et tu le remplaces
}
Marsh Posté le 10-08-2002 à 16:54:13
Zion a écrit a écrit : Ah benh tu diras tout Je pensais que tu voulais faire ca exceptionellement, pas en boucle... Récupère les données dans un array d'array et traite ton array. Genre while ($smileys[] = mysql_fetch_array($result)); puis pour chaque message foreach($smileys as $smiley) { //Tu as ton $smiley et tu le remplaces } |
a ouai c ca la solution
merci t es un boss
Marsh Posté le 10-08-2002 à 16:57:40
veryfree a écrit a écrit : a ouai c ca la solution merci t es un boss |
Non, je suis juste plus vieux que toi surement
Marsh Posté le 10-08-2002 à 17:03:01
Zion a écrit a écrit : Non, je suis juste plus vieux que toi surement |
14 ans
en fait j obtien un tableau a deux dimmension?
comment jrecupere $nb[smiley]; et $nb[codeHTML];
en faisant $smiley[0][0] et $smiley[0][1]
et en incrementant le 0 c bien ca?
Marsh Posté le 10-08-2002 à 17:07:32
veryfree a écrit a écrit : 14 ans en fait j obtien un tableau a deux dimmension? comment jrecupere $nb[smiley]; et $nb[codeHTML]; en faisant $smiley[0][0] et $smiley[0][1] et en incrementant le 0 c bien ca? |
Ouch 14 ans
Tu obtiens un tableau à 2 dimensions, mais avec le foreach tu as chaque entrée du tableau en tant que $smiley qui lui est un tableau à 1 dimension.
Ensuite tu peux faire
$smiley["SmileyId"] ou $smiley[0]
mais $smiley["SmileyId"] c'est plus parlant quand même... (le nom corresponds au nom de ta colonne dans ta table).
Marsh Posté le 10-08-2002 à 17:51:03
Zion a écrit a écrit : Ouch 14 ans Tu obtiens un tableau à 2 dimensions, mais avec le foreach tu as chaque entrée du tableau en tant que $smiley qui lui est un tableau à 1 dimension. Ensuite tu peux faire $smiley["SmileyId"] ou $smiley[0] mais $smiley["SmileyId"] c'est plus parlant quand même... (le nom corresponds au nom de ta colonne dans ta table). |
bon j y suis presque:
mais je comprend pas le deuxieme arguments:
foreach($smileys as $smiley) $smiley correspond a quoi au juste? le premiere c le non du tableau ca j ai compris
Marsh Posté le 10-08-2002 à 18:01:25
http://www.php.net/foreach
En très résumé, pour chaque élement du tableau, il entre dans ta boucle avec $smiley comme étant cet élément.
Marsh Posté le 10-08-2002 à 18:08:45
Zion a écrit a écrit : http://www.php.net/foreach En très résumé, pour chaque élement du tableau, il entre dans ta boucle avec $smiley comme étant cet élément. |
c bon ne fait
j avait vu le prototype de cette fonction rassure toi
c juste que je faisait appel a
$message= str_replace("$code","<img src='smileys/$smileys[codeHTML]' alt='$code'>",$message) ;
c'est le s qui faisait tout partir en vrille
merci pour tout
Marsh Posté le 10-08-2002 à 01:38:09
je sait pas si la question est juste
j ai ca :
while($nb=mysql_fetch_array($result))
or une fois que l on a parcouru l objet $result
il devien inutilisable j aimerait le reinitialiser:
autrement dit j aimerait pouvoir refaire la meme boucle
sans avoir a reexecuter ma requete
voila j espere que j ai eté assez clair
sinon je suis la pour vous eclairer
merci