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