Page 1 sur 1

Parcourir un array avec foreach et sortir des données sql

Posté : 10 avr. 2015, 10:14
par Paul_TEC
Bonjour,
en récupérant un arrray de checkbox sélectionné,
j'aimerais que pour chaque ligne de mon array j’exécute une requête en appelant "$valueID", pour ensuite pouvoir afficher une valeur de ma base.
Je suis novice et aucune valeur ne sors de ma requête, avez vous une idée ? Merci !

Code : Tout sélectionner

if(isset($_POST['go'])){ if (!empty($_POST['objet'])){ if (isset($_POST['case'])){ $tabCheckbox = $_POST['case']; var_dump($_POST['case']); foreach ($tabCheckbox as $valueID) { $result = mysqli_query($bddi, 'SELECT p.EMAILPERS FROM personne p,contact c, joueur j WHERE p.CODEPERS = c.CODEPERS AND c.CODEJR = j.CODEJR AND j.CODEJR=".$valueID."'); $row = mysqli_fetch_array($result); echo $row['EMAILPERS']; // J'envois un mail par la suite } $erreur = "Message envoyé avec succès"; } else{ $erreur = "Veuillez sélectionner au moins un destinataire.";} } else{ $erreur = "Veuillez remplir les champs.";} }

Re: Parcourir un array avec foreach et sortir des données sql

Posté : 10 avr. 2015, 13:16
par Genova
Par défaut tu ne verras pas les erreurs SQL si tu ne les affiches pas, tu dois donc faire :
$result = mysqli_query($bddi, 'SELECT p.EMAILPERS FROM personne p,contact c, joueur j WHERE p.CODEPERS = c.CODEPERS AND c.CODEJR = j.CODEJR AND j.CODEJR=".$valueID."') or die(mysqli_error());
Sinon tu dois utiliser mysqli_fetch_assoc() et non pas mysqli_fetch_array() (un var_dump($row) t'aurais directement permis de voir le soucis).

Et tu peux tout faire avec une seule requête :
if (count($tabCheckbox) > 0)
{
	$result = mysqli_query($bddi, '
		SELECT p.EMAILPERS
		FROM personne p,contact c, joueur j
		WHERE p.CODEPERS = c.CODEPERS
			AND c.CODEJR = j.CODEJR
			AND j.CODEJR = IN ('.implode(', ', $tabCheckbox).'))
	');

	while ($row = mysql_fetch_assoc($result))
	{
		echo $row['EMAILPERS'];
	}
}
Pour finir, utilises PDO plutôt que les fonctions mysql_*.