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() …)