Page 1 sur 1
interrogation sql
Posté : 27 déc. 2012, 21:29
par neomega
bonjour,
j'ai ce code ci dessous :
//envoie de la requette qui recupere les info dans les base de donnée
$req = mysql_query("SELECT * FROM location WHERE salle = '$id_salle' AND categorie = '$id_categorie' AND sous_categorie = '$id_sous_categorie'");
//commande qui recupére mes données
while($data = mysql_fetch_array($req))
{
// Récupération de tes données dans $data
$tab[$data['emplacement']] = $data;
}
?>
<center>SALLE <?php echo $id_salle ?></center><br><br>
emplacement 1
<?php echo $tab[1]['url_site']; ?><br>
emplacement 2
<?php echo $tab[3]['url_site']; ?><br>
emplacement 3
<?php echo $tab[6]['url_site']; ?><br>
<?php echo $tab[1]['titre']; ?><br>
emplacement 2
<?php echo $tab[5]['titre']; ?><br>
emplacement 3
<?php echo $tab[9]['titre']; ?><br>
mais si dans ma bdd j'ai rien a : <?php echo $tab[9]['titre']; ?><br> par exemple j'ai l'erreur :
Notice: Undefined offset: 9 in mon_fichier.php on line "ligne de : echo $tab[9]['titre'];"
commen faire pour que si la valeur est nulle ou n'existe pas rien ne ce passe "pas de message d'erreur
merci
Re: interrogation sql
Posté : 27 déc. 2012, 21:38
par sirakawa
Re: interrogation sql
Posté : 27 déc. 2012, 21:58
par neomega
mon souci c'est que je ne sais quoi mettre dans le if isset
est ce obliger d'en mettre un a chaque ligne ou est ce possible d'en mettre un general
if(isset($tab[3]['url_site']) && $tab[3]['url_site'] == '' ){ }
Re: interrogation sql
Posté : 27 déc. 2012, 22:03
par sirakawa
il faut un isset par variable; si c'est un tableau par ligne du tableau.
Autre idée:utiliser un foreach
foreach ($tableau as $ligne)
{
print_r($ligne); //à toi de voir
//pas besoin de test, sauf si tu as des lignes du tableau incomplètes
}
Re: interrogation sql
Posté : 27 déc. 2012, 22:14
par neomega
dsl la je suis totalement perdu
non ce n'est pas un tableau
avec un isset pouvez vous me dire comment faire svp
encore merci
Re: interrogation sql
Posté : 27 déc. 2012, 22:19
par sirakawa
while($data = mysql_fetch_array($req))
{
// Récupération de tes données dans $data
$tab[$data['emplacement']] = $data;
}
foreach ($tab as $ligne)
{
print_r($ligne); //à toi de voir
}
Re: interrogation sql
Posté : 27 déc. 2012, 22:48
par neomega
quant je met ceci
j'ai toutes les donnee de ma table qui apparaisse
en non pas seulement les champs que je demande
Re: interrogation sql
Posté : 27 déc. 2012, 23:06
par sirakawa
Bien sûr, il faut remplacer $ligne par $ligne['champquitinteresse'].
Re: interrogation sql
Posté : 27 déc. 2012, 23:19
par neomega
dsl de vous embeter encore avec ceci
mai sa ne marche toujour pas
Re: interrogation sql
Posté : 28 déc. 2012, 12:03
par sirakawa
comprendre foreach
il faut remplacer
print_r($ligne);
//par
print "<br>";print_r($ligne); print "<br>";
//qui doit donner une ligne après une autre du tableau du genre:
//Array ( [nom] => topaze [passe] => pagnol )
et ensuite avec mon exemple:
print_r($ligne);
//par
$valeur = $ligne['nom'];
print "<br />$valeur";
Re: interrogation sql
Posté : 28 déc. 2012, 14:14
par neomega
en faisant ceci la liste des mes $valeur apparait nikel
mais maleureusement ce n'est pas ceci que je veux faire
je veux choisir par apport a "id_emplacement" le champ qui apparait
zone 1 :<br>
<!--ex ici pour l'id_emplacement 1 "$tab[1]" je fait apparaitre son url_site-->
<?php echo $tab[1]['url_site']; ?><br>
zone 2 :<br>
<!--ex ici pour l'id_emplacement 6 "$tab[6]" je fait apparaitre son titre-->
<?php echo $tab[6]['titre']; ?><br>
zone 2 :<br>
et par exemple ici dans ma table sql je n'ai encore rien a cet id_emplacement "3" et c'est la que j'ai une erreur vue qu'il ne la trouve pas car
"encore aucun objet a cet emplacement"
<!--ex ici pour l'id_emplacement 3 "$tab[3]" je fait apparaitre son genre-->
<?php echo $tab[3]['genre']; ?><br>
Re: interrogation sql
Posté : 28 déc. 2012, 14:52
par neomega
apparement j'ai trouvé a chaque fois il me faut faire ceci
<?php if (!empty ($tab[3]['url_site'] )){echo $tab[3]['url_site'];}?>
est ce correct ??
ou un isset serait plus conseiller
Re: interrogation sql
Posté : 28 déc. 2012, 15:20
par moogli
Salut,
1/ as tu une restriction sur la requête ?
2/ $tab est un tableau pourquoi ne pas utiliser foreach ?
Si tu souhaite n'afficher que des infos précise peux être peux tu utiliser une restriction (clause where) sur la requête sql et afficher avec le while ?
Sinon quels sont les critères d'affichage des infos qui se trouve dans $tab ?
Quoi qu'il en soit le foreach est le plus simple pour éviter ce type d'erreur
@i