8710 sujets

Développement web côté serveur, CMS

Bonjour,

Comment tester si une variable est présente dans une table Mysql ? Je voudrais par exemple vérifier la présence ou non d'une adresse dans la colonne 'adresse' d'une table Mysql.

Exemple : Si le champ de la colonne 'adresse' contient quelque chose alors écrit ce quelque chose, mais si ce champ est vide alors n'écrit rien, ne fait rien et passe à la ligne suivante.

Un grand merci par avance !

Franck.
Ca dépend...

De base, si c'est pour tester juste un champs, tu t'arranges pour ne pas le sortir de ta requête mysql. (select * from table where champs is not null)

Ensuite, si tu as tout un lot de champs que tu veux récupérer (genre nom/prénom/adresse/n° de téléphone) et que tu veux vérifier au fur et à mesure où tu parcours tes enregistrements si tel ou tel champs est rempli, le mieux est d'utiliser la fonction php empty pour savoir si le champs est vide ou non.
Merci de ta réponse. En effet, la fonction empty me semble bien choisie. Toutefois, petit problème car je ne parviens pas à mes fins :

if (empty($a))  {
}
if (empty($b))  {
}
if (empty($c))  {
}
                   
if (isset($a)) {
  echo "<li>". $b. "</li>";
			}
if (isset($b)) {
  echo "<li>". $b. "</li>";
			}
if (isset($c)) {
  echo "<li>". $c. "</li>";
			}



Même si ma variable $b est vide (ou n'existe pas) php créé une ligne <li> Smiley decu
En fait, il faudrait que php ne créé de ligne <li> que pour les variables existentes.
Modifié par franckh (15 Jun 2014 - 13:46)
J'ai trouvé la solution !

Le but est pour moi de créer une liste à puce pour un menu jquery qui se rempli des champs présent dans une table Mysql. Toutefois, n'est-il est pas possible de faire plus simple ?

Voici mon code pour un menu jusqu'à 5 lignes. Mais si j'ai besoin de 10 ou 20 lignes :-o

if ($chbre01 == true)
{
    echo "<li>".$chbre01 ."</li>";
}
elseif ($chbre01 == false)
{}
if ($chbre02 == true)
{
    echo "<li>".$chbre02 ."</li>";
}
elseif ($chbre02 == false)
{}
if ($chbre03 == true)
{
    echo "<li>".$chbre03 ."</li>";
}
elseif ($chbre04 == false)
{}
if ($chbre04 == true)
{
    echo "<li>".$chbre03 ."</li>";
}
elseif ($chbre04 == false)
{}
if ($chbre05 == true)
{
    echo "<li>".$chbre05 ."</li>";
}
elseif ($chbre05 == false)
{}
	}
Deux possibilités :

1) tu as une ressource mysql : $ressource et tu veux tester sur le champ "champ1"
while($m=$ressource->fetch_assoc) /* ou tout autre système de parcours de ressource*/
{
        if(!empty($m['champ1'])){echo "<li>".$m['champ1']."</li>";}
}


2) tu as des variables avec des noms comme ceux que tu expliquais :
for($i=1;$i<=20;$i++) //le 20 correspond aux nombres de ligne
{
     if($i<10){$nomVar='chbre0'.$i;} //gestion du 01
     else{$nomVar='chbre'.$i;}
     if(!empty($$nomVar)){echo "<li>".$$nomVar."</li>";}
}



Comment ça marche ?

Dans le premier cas, je parcours le tableau de ressource grâce à un while (boucle) qui va tourner tant que le fetch_assoc marche.
ensuite, je teste si (if) le champ voulu (fetch_assoc renvoie un tableau de type array("champ1"=>"valeur","champ2"=>"valeur",...) ) n'est pas (!) vide (empty()). Si c'est vrai, j'affiche le <li>. Si c'est faux, je n'affiche rien (et je ne mets pas le else si y a rien à faire dedans).

Dans le second cas, je fais une boucle (for) incrémentant un compteur ($i++) allant de 1 ($i=1) à 20 ($i<=20).
Tes variables étant de type blabla01, je dois gérer le 0.
donc si le compteur est plus petit que 10 (i<10), je crée le nom de la variable avec le 0 ('chbr0') au quel je concatène le compteur (.$i).
S'il est plus gros, je concatène sans le 0.

Ensuite je teste si ma variable à nom dynamique ( $$var ) n'est pas vide et j'affiche si c'est le cas.

Après, si ton cas ne correspond à aucun des deux profils. Soit tu te tapes ça à la main... soit tu les ranges dans un tableau que tu parcours avec foreach.
franckh a écrit :
Bonjour,
Comment tester si une variable est présente dans une table Mysql ? Je voudrais par exemple vérifier la présence ou non d'une adresse dans la colonne 'adresse' d'une table Mysql.
Exemple : Si le champ de la colonne 'adresse' contient quelque chose alors écrit ce quelque chose, mais si ce champ est vide alors n'écrit rien, ne fait rien et passe à la ligne suivante.
Un grand merci par avance !
Franck.

Bonjour,

La solution la plus judicieuse serait de filtrer les enregistrements vides dans la requête SQL, cela t'éviterait ainsi des tests dans le PHP alors que le langage SQL te le permet nativement...

Tu peux utliser != "", ou encore IS NOT NULL, PHP n'est pas là pour remplacer ton SGBD.

Je te renvoie vers la doc : http://sql.sh/cours/where/is
Modifié par ohweb (18 Jun 2014 - 10:37)