Afficher seulement si champ rempli

Bonjour
j’ai fait une base de données emploi.
Je veux afficher que les sociétés qui ont le champ de renseigner.
voici mon code



<?php
require'connect/connect.php';



// On récupère tout les  noms de sociétés.
echo"<div id='g0'>";
if(isset ($_GET['societe'])) // vérifie si le champ "societe" a été envoyé par le formulaire
{
$result = mysql_query("SELECT * FROM recherche WHERE societe IS NOT NULL ORDER BY id asc LIMIT 0, 21");

// On affiche chaque entrée une à une avec deux boutons .
while ($result && $ligne = mysql_fetch_array($result) )
            {
            ?>
                <strong>Société:   </strong> <?php echo $ligne['id']; ?>  <?php echo $ligne['societe']; ?>
                 
                <?php $lien="afficher_detail.php?id=".$ligne['id'];?>
                        <a href='<?php echo $lien ?>' style="text-decoration:none"><input type='button' value='detail' name='détail' style="text-decoration:none"/></a>
                <?php $lien="modifier.php?id=".$ligne['id'];?>
                        <a href='<?php echo $lien ?>' style="text-decoration:none"><input type='button' value='modifier' name='modifier' style="text-decoration: none"/></a>
                        <br/>
                <?php

            }
}
else {
    echo 'Pas de données';
}
echo'</div>';

?>
<?php

mysql_close();         // Termine le traitement de la requête
?>

Mais cela ne m’affiche que le else.

Merci

Bonjour,

La variable est affectée (elle est en mémoire), mais pour le moment c’est juste une chaîne vide. C’est pourquoi il faut ajouter à ta condition un !empty($_GET[‘societe’])
Comme ceci :


if ( isset ($_GET['societe']) && !empty($_GET['societe']) ) {
...
}

Là tu passeras dans ta boucle. :slight_smile:

En gros, isset() te renvoie vrai si ta variable n’est pas égale à null (pas d’adresse mémoire). Comme ici tes données viennent de la base, et que sûrement dans ta base la valeur par défaut n’est pas null mais une chaîne vide, alors ta variable est affectée mais… vide.
empty() te permet de savoir si cette chaine est vide ou non. Regarde ici pour savoir ce qui est considéré comme vide par empty() :
php.net…

Ciao. :wink:
Edité le 18/04/2011 à 16:03

En l’occurrence, si $_GET[‘societe’] n’est pas “empty”, alors il est “set”.
Je te conseille de passer tes champs de validation HTML (qui renvoie justement sur ta page) en POST, et non en GET (ce qui aura pour effet de ne pas afficher des informations sensibles dans tes URL.
Edité le 23/04/2011 à 21:22