Page 1 sur 1

problème sur mon implode ??

Posté : 09 août 2006, 15:29
par - HXSS -
Bonjour peuple PHPien : x

J'ai un soucis sur le traitement d'une requête pour utiliser les résultats.. un bout de mon code:
<?php

		//on reprend les CI par rapport à son ID
		$sqlci = 'SELECT ci_ref FROM membre_ci WHERE membre_ref="53"';
        $reqci = mysql_query($sqlci) or die('Erreur SQL !<br />'.$sqlci.'<br />'.mysql_error());
        $dataci = mysql_fetch_array($reqci);

        mysql_free_result($reqci);
        mysql_close();

$check = isset ($dataci) ? implode(',',$dataci) : null;
?>
<HTML>
<link href="style2.css" rel="stylesheet" type="text/css">
<body>

<?php echo $dataci; ?><br/>
<?php echo $check; ?>

</body>
</HTML>
ma table membre_ci:
53 | 1
53 | 2
53 | 3
53 | 4

et moi je veux me servir des résultats 1 2 3 4.. le soucis c'est que si je fais un mysql_num_rows il affiche 4 donc il a les 4 résultats..
et quand je fais avec mysql_fetch_array et mon implode ($check) il devrait m'afficher 1,2,3,4 alors qu'il m'affiche 1,1 :?

Posté : 09 août 2006, 15:45
par Tictac
Le soucis vient du fait que $dataci est un tableau à 2 dimensions.

C'est à dire que tu récupère un array qui ressemble à ça =>

$dataci[0][1] ;

Le premier [] définit le champ de ta table
et le deuxieme sont numéro(dépend du nombre de resultat)

$dataci[0][1] => te donne donc la deuxieme valeur du champ [0]

Tu dois donc faire une boucle pour récupérer chaque valeur de $dataci[0] par exemple .

Je sais pas si je suis bien claire !!?

Posté : 09 août 2006, 17:14
par - HXSS -
sisi très clair je comprends pourquoi ça ne marche pas mon histoire.. merci de m'avoir mis sur la bonne piste

par contre si y'a bien une chose que je ne comprends pas c'est les boucles :o
même avec la bible du php je comprends pas.. 1358 pages.. bon y'a que 6 lignes pour la boucle foreach : /

de but en blanc j'aurais dit
foreach ($dataci[0] as $data) {
$check = isset ($data) ? implode(',',$data) : null;
}
je me tape des Invalid argument supplied for foreach() ou des implode(): Bad arguments. quand je bidouille un peu.. au choix..

:(

Posté : 09 août 2006, 17:42
par Tictac
fais un print_r($dataci) pour voir ce qu'il t'affiche et post ça ici ;) merci

Posté : 09 août 2006, 18:07
par - HXSS -
ooookay là je comprends encore plus pourquoi mon histoire ne marchait pas.. il m'affiche
Array ( [0] => 1 [ci_ref] => 1 ) 1

ma requête ne serait pas bonne alors !?
c'est quoi ce 1 à la fin ?
il sort d'où le "4" quand je fais quand je fais un mysql_num_rows ?

logiquement je devrai m'attendre à ça plutôt ?
Array ( [0] => 1 [0] => 2 [0] => 3 [0] => 4 )

c'est plus clair dans ma tête (on pourrait croire le contraire avec toutes ces questions..)
merci de m'éclairer c'est sympa :love5:

Posté : 09 août 2006, 18:13
par Tictac
Pourrais je avoir un détails de ta table membre_ci car j'avoue que ca commence à me mettre dans le flou ... lol

Posté : 09 août 2006, 18:22
par Tictac
J'ai analysé un peu mieux ton soucis et je te propose plutot cette méthode =>
<?php 

	//on reprend les CI par rapport à son ID 
	$sqlci = 'SELECT ci_ref FROM membre_ci WHERE membre_ref="53"'; 
	$reqci = mysql_query($sqlci) or die('Erreur SQL !<br />'.$sqlci.'<br />'.mysql_error()); 
	$nb_find = mysql_num_rows($reqci);
		
	for($i=0;$i<$nb_find;$i++)
		{
		$dataci = mysql_fetch_assoc($reqci);
		$value[] = $dataci['ci_ref'];
		}
	$check = explode(',',$value);
        mysql_free_result($reqci); 
        mysql_close(); 

?> 

Posté : 09 août 2006, 18:29
par - HXSS -
c'est plutôt basique j'ai que 2 champs

un champ membre_ref qui représente l'id du pseudo en fait..
un champ ci_ref qui représente les centres d'intérêt du pseudo..

quand quelqu'un fait un enregistrement par exemple 1 2 3 4
je fais un INSERT de manière à faire 4 enregistrements donc dans la table membre_ci j'ai
53 => 1
53 => 2
53 => 3
53 => 4

j'ai 4 lignes pour 1 enregistrement mais j'arrive pas à récupérer les valeurs : /
(on m'a conseillé d'avoir des données atomiques pour que ce soit plus simple.. pour la suite sans doute..)

Posté : 09 août 2006, 18:33
par - HXSS -
ha bah si tu me laisses même pas le temps de répondre :(

là c'est bon merci (avec implode)
je vais tenter d'analyser à mon tour ton code pour le comprendre un minimum :?

j'espère que ça me sera utile (je sais pas si je fais la bonne méthode pour ce que je souhaite faire..)