Page 1 sur 1
Encore une question sur while
Posté : 07 oct. 2007, 12:37
par yesh
Bonjour !
J'essaye d'apprivoiser php la c'est pas évident
Ma question. Je remplis un array via une boucle while
Code : Tout sélectionner
while ($donnees = mysql_fetch_array($retour))
{
$table[]=$donnees['nom'];
echo $donnees['nom'];
echo $index++;
}
echo ($table[0]);
Il y a 3 occurences. Or, en $table[0], c'est la deuxième qui apparait. Ou est passée la première ?? Meme chose pour index, il me met 0, puis 1... alors qu'il y a 3 entrées !
Une piste ?
Posté : 07 oct. 2007, 12:40
par fab
fait un print_r(mysql_fetch_array($retour)); avant ton while() pour vérifier
Posté : 07 oct. 2007, 12:51
par yesh
il me sort ça
Array ( [0] => stb200703a_d18_0086bw-Low.jpg [nom] => stb200703a_d18_0086bw-Low.jpg )
ce qui correspond à l'entrée no 2 de ma table
Si je fais un $table[0] c'est bien cette entreé
Si je fais un $table[1] il me lache l'entrée no 1 (???)
et Si je fais un $table[2] il me met rien
La suis paumé
Posté : 07 oct. 2007, 13:00
par Tracker
File tout ton code (depuis l'ouverture de connection)
Posté : 07 oct. 2007, 13:02
par yesh
<?php
$connection = mysql_connect("blabla","bla","bla");
if ( ! $connection )
die ("Echec de la connection à la base de donnees");
$mabasededonnée="blablabla";
mysql_select_db($mabasededonnée) or die ("Connection impossible à la base de donnees");
//
// récup des données déja présentes
//
$index = 0;
$index2 = 0;
$rep = 'Test';
$retour = mysql_query('SELECT nom FROM '.$rep.' ORDER BY id DESC');
$donnees = mysql_fetch_array($retour);
print_r(mysql_fetch_array($retour));
while ($donnees = mysql_fetch_array($retour))
{
$table[]=$donnees['nom'];
$index++;
}
echo $table[0];
//
$handle=opendir($rep);
while (false !== ($file = readdir($handle)))
{
if ($file != "." && $file != "..")
{
$directory[]=$file;
$index2++;
}
}
//echo $directory[3];
if ($index>0 && $index2>0)
{
$result = array_intersect ($table, $directory);
echo('Intersect!');
}
echo ('Inscription dans la base effectuee !');
echo $result[3];
closedir($handle);
?>
Posté : 07 oct. 2007, 13:05
par Tracker
vire le premier
$donnees = mysql_fetch_array($retour);
C'est lui qui te "mange" le premier enregistrement
a+
Posté : 07 oct. 2007, 13:11
par yesh
super merci je comprendrai jamais fetch array jcrois
une dernière question : existe-t-il un fonction inverse d'array_intersect(); ?
c'est à dire une fction qui renvoie non pas les éléments semblables de 2 tableaux mais les éléments différents ?
[EDIT]
ok j'ai rien dit. je remplis simplement un 1er array, puis dans mon 2e while je fais un !in_array[premier array]
wéééé vive péachpé !
Posté : 07 oct. 2007, 13:36
par Sékiltoyai
La solution du !in_array() te fait faire plus d'opérations en php qu'un array_diff() (le contraire de array_intersect() …)