Supprimer les champs vides

Eléphanteau du PHP | 18 Messages

30 oct. 2008, 00:40

Bonjour à tous, j'aimerai avoir un renseignement concernant les champs vides d'une base de données. J'édite la liste des personnes vivant dans une ville avec le code suivant :

Code : Tout sélectionner

$sql = "SELECT Habitation,NomH,PrenomH,NeH,DecesH FROM Table1 WHERE NomH IS NOT NULL AND Habitation LIKE '$variablecherche' order BY NomH ,PrenomH "; $req = mysql_query($sql) or die ('Erreur SQL !<br>'.$sql.'<br>'.mysql_error()); echo '<table border="0" cellspacing="2" cellpadding="2" >'; while($values = mysql_fetch_array($req)) { echo '<tr><th>&diams;&nbsp;&nbsp;</th><th>'.$values['NomH'].'</th><th>'.$values['PrenomH'].'</th><th>'.$values['NeH'].'</th><th>&nbsp;-&nbsp;</th><th>'.$values['DecesH'].'</th></tr>'; } echo '</table>';

Les champs NomH ne sont pas tous remplis, ce qui fait que sur ma page les champs vides sortent en premier, il y a la possibilité de se servir de desc mais j'aimerais avoir la liste dans l'ordre alphabétique, est-il possible de ne faire apparaitre que les champs qui ont un nom ? d'avance je vous remercie[/code]

Eléphant du PHP | 353 Messages

30 oct. 2008, 00:49

Vu le "IS NOT NULL" de ta requête, je suppose que tes champs NomH vides ne sont pas nuls mais remplis avec une string vide?
Alors soit tu fais "AND NomH != '' " Ou alors tu filtres en PHP via un
if($values['NomH'] == "") continue ;
dans ta boucle while.

Invité
Invité n'ayant pas de compte PHPfrance

30 oct. 2008, 01:35

Merci de ta réponse mais je n'y suis pas arrivé, mais je ne sais pas où mettre le filtre PHP et j'ai le même problème sur la page précédente car la $variablecherche provient d'une liste de sélection.

Code : Tout sélectionner

$sql = "SELECT distinct LieuH FROM Table1 order by LieuH"; $req = mysqli_query($connexion,$sql) or die ("Exécution de la requête impossible"); echo "<Form action='requetenaissance.php' method='post'> <select name='LieuH'>\n"; while($ligne = mysqli_fetch_assoc($req)) { extract($ligne); echo "<option value='$LieuH'>$LieuH\n"; } echo "</select>\n"; echo "<input type='submit'value='Afficher'> </form>\n";
Le premier champ de ma liste de sélection est vide, même problème.

Eléphant du PHP | 353 Messages

30 oct. 2008, 08:41

N'utilisant pas les fonctions mysqli, je suis allé voir la documentation PHP.
A première vu, mysqli_fetch_assoc n'existe pas. Ou alors c'est un oubli de la documentation :D ( ou alors je suis aveugle).

Mais de toute manière, on va procéder autrement.
Tu as essayé de faire un print_r($ligne) au tout début de ta boucle while ?

Je viens de faire un test avec ton code, chez moi cela fonctionne.

Donc..
Hum..

Copie ceci :
printf("Select a retourné %d lignes.\n", mysqli_num_rows($req));
juste après ta requête.

Mais si ton champs LieuH est l'unique champ que tu retournes et qu'il est vide, ton while ne fonctionnera pas car il retourne un array vide.

Eléphanteau du PHP | 18 Messages

30 oct. 2008, 13:04

Au sujet du while($ligne = mysqli_fetch_assoc($req)) je l'ai trouvé sur un site !!!! Si j'ai bien compris je dois remplacé la ligne

Code : Tout sélectionner

while($ligne = mysqli_fetch_assoc($req))
par

Code : Tout sélectionner

while printf("Select a retourné %d lignes.\n", mysqli_num_rows($req));
J'ai le même résultat et en plus j'ai au retour sur la page ce message d'erreur :
Parse error: syntax error, unexpected T_STRING, expecting '(' in E:\Web\wamp\www\requetes.php on line 39

[Note : ce message a été posté de manière anonyme avant d'être réattribué à son auteur]

Eléphant du PHP | 353 Messages

30 oct. 2008, 13:08

oula non.
Urg :cry:
Fait ceci :
$sql = "SELECT distinct LieuH FROM Table1 order by LieuH";
$req = mysqli_query($connexion,$sql) or die ("Exécution de la requête impossible");
printf("Select a retourné %d lignes.\n", mysqli_num_rows($req));
Et je te conseil de bien lire la documentation des fonctions que tu utilises dans ton code, cela ne fait de mal à personne :D

le mysqli_num_rows va te retourner le nombre d'enregistrement retourné par ta requête.

Si il te retourne un nombre d'enregistrement, essaye ensuite de modifier ta requete en faisant la suivante : SELECT distinct LieuH FROM Table1 WHERE LieuH != '' order by LieuH

Eléphanteau du PHP | 18 Messages

30 oct. 2008, 17:46

ok c'est bon je te remercie