[RESOLU] interrogation sql

Eléphant du PHP | 150 Messages

27 déc. 2012, 21:29

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

Mammouth du PHP | 2278 Messages

27 déc. 2012, 21:38

Vanitas vanitatum et omnia vanitas
Mes derniers livres :
Sauvez les Mots chez BoD,
Tous les chemins mènent à ROM chez BoD

Eléphant du PHP | 150 Messages

27 déc. 2012, 21:58

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'] == '' ){ }

Mammouth du PHP | 2278 Messages

27 déc. 2012, 22:03

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
}
Vanitas vanitatum et omnia vanitas
Mes derniers livres :
Sauvez les Mots chez BoD,
Tous les chemins mènent à ROM chez BoD

Eléphant du PHP | 150 Messages

27 déc. 2012, 22:14

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

Mammouth du PHP | 2278 Messages

27 déc. 2012, 22:19

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

}
Vanitas vanitatum et omnia vanitas
Mes derniers livres :
Sauvez les Mots chez BoD,
Tous les chemins mènent à ROM chez BoD

Eléphant du PHP | 150 Messages

27 déc. 2012, 22:48

quant je met ceci

j'ai toutes les donnee de ma table qui apparaisse
en non pas seulement les champs que je demande

Mammouth du PHP | 2278 Messages

27 déc. 2012, 23:06

Bien sûr, il faut remplacer $ligne par $ligne['champquitinteresse'].
Vanitas vanitatum et omnia vanitas
Mes derniers livres :
Sauvez les Mots chez BoD,
Tous les chemins mènent à ROM chez BoD

Eléphant du PHP | 150 Messages

27 déc. 2012, 23:19

dsl de vous embeter encore avec ceci
mai sa ne marche toujour pas

Mammouth du PHP | 2278 Messages

28 déc. 2012, 12:03

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"; 
Vanitas vanitatum et omnia vanitas
Mes derniers livres :
Sauvez les Mots chez BoD,
Tous les chemins mènent à ROM chez BoD

Eléphant du PHP | 150 Messages

28 déc. 2012, 14:14

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> 



Eléphant du PHP | 150 Messages

28 déc. 2012, 14:52

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

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 8758 Messages

28 déc. 2012, 15:20

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
Il en faut peu pour être heureux ......