[PHP] Empecher champ "null" de s'afficher
Résolu
yrkel
-
IKILIMI Messages postés 2 Date d'inscription Statut Membre Dernière intervention -
IKILIMI Messages postés 2 Date d'inscription Statut Membre Dernière intervention -
Bonjour à tous.
Je requiert votre aide. En fait, je suis en train de faire un site web, et dans ma base de donnée, il y a des champs qui parfois seront remplis, parfois seront vides tout dépendant de la fiche du jeu que je veux y afficher.
Dans mon code php, j'ai mis tous les champs avec la fonction echo. Donc ils s'affichent, qu'ils soient vide ou non. Y a il moyen, s'ils sont vides, qu'ils ne s'affichent pas, et que par le fait même, ils ne prennent pas d'espace dans la page affichée?
Merci.
Je requiert votre aide. En fait, je suis en train de faire un site web, et dans ma base de donnée, il y a des champs qui parfois seront remplis, parfois seront vides tout dépendant de la fiche du jeu que je veux y afficher.
Dans mon code php, j'ai mis tous les champs avec la fonction echo. Donc ils s'affichent, qu'ils soient vide ou non. Y a il moyen, s'ils sont vides, qu'ils ne s'affichent pas, et que par le fait même, ils ne prennent pas d'espace dans la page affichée?
Merci.
A voir également:
- [PHP] Empecher champ "null" de s'afficher
- Afficher appdata - Guide
- Afficher mot de passe wifi android - Guide
- Afficher taille dossier windows - Guide
- Windows 11 afficher d'autres options - Guide
- Afficher mot de passe - Guide
17 réponses
Avant de les afficher tu peux les mettre dans des variables puis tester s'il sont vide grâce à empty() ou simplement avec if($var=="")...
Merci de ta réponse. Est-ce que tu pourrais m'expliquer d'avantage, comment utiliser cette formule de variables?
Merci
Merci
Tu as une variable qu'on peux appeler $var. Ensuite tu fais :
ou bien :
Voilà...
;-)
Windows Vista, c'est comme Paris Hilton: c'est bien joli, mais c'est inutile et ça bouffe trop de bytes.
if($var == "") { echo "la variable $ var est vide"; } else { echo $var; }
ou bien :
if(is_empty($var)) { echo "la variable $ var est vide"; } else { echo $var; }
Voilà...
;-)
Windows Vista, c'est comme Paris Hilton: c'est bien joli, mais c'est inutile et ça bouffe trop de bytes.
Bonjour :)
Je suppose que tu sort tout dans un array?
Et bien tu peux boulcer sur un array, regarde ce code:
ca te parle un peu?
Je suppose que tu sort tout dans un array?
Et bien tu peux boulcer sur un array, regarde ce code:
foreach($resultat as $valeur) //Pour chaque colonne du tableau $resultat, qu'on appellera à chaque fois "$valeur" { if($valeur != "") //Si $valeur (la colonne en cours) est différente de "null" { echo $valeur; //On l'affiche } }
ca te parle un peu?
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
En fait, voici mon code. Je suppose qu'il ne sera pas correct, alors n'hésitez pas à me donner des conseils, je suis preneur :)
Je vous ai épargné le reste de la page qui est en html. Petite note, La 4ieme ligne : "" $nom=$_GET["categorie"]; "" me permet d'afficher les résultats selon le lien cliqué dans le menu.
Merci de votre aide.
--------------------------------
<?php
// on se connecte à MySQL
$db = mysql_connect('----', '-----', '-----');
$nom=$_GET["categorie"];
// on sélectionne la base
mysql_select_db('zokac_6027858_fiche',$db);
// on crée la requête SQL
$sql = 'SELECT * FROM fiche WHERE Catégorie="'.$nom.'"';
// on envoie la requête
$req = mysql_query($sql) or die('Erreur SQL !<br>'.$sql.'<br>'.mysql_error());
// on fait une boucle qui va faire un tour pour chaque enregistrement
while($data = mysql_fetch_assoc($req))
{
// on affiche les informations de l'enregistrement en cours
echo '<tr><td class="ficheheader" height="20"><table width="468"><tr> <td width="50%"><b>'.$data['nom'].'</b></td><td width="50%"><b>Ajouté le: </b>'.$data['date'].'</td></tr></table></td></tr>';
echo '<tr> <td class="fichecontentup" height="17"></td></tr>';
echo '<tr> <td class="fichecontentmiddle"><table width="468" ><tr> <td width="100" ><img src=../images/pochettes/'.$data['image'].' width="100" height="141"></td>';
echo '<td valign="top"><b>Région:</b> '.$data['region'].'<br>';
echo '<b>Langue:</b> '.$data['langue'].'<br>';
echo '<b>Catégorie: </b>'.$data['Catégorie'].'<br>';
echo '<b>Description: </b>'.$data['description'].'<br>';
echo '<b>Liens :<br> </b><a href="'.$data['lien1'].'" target="_blank">'.$data['lien1'].'</a><br>';
echo '<a href="'.$data['lien2'].'" target="_blank">'.$data['lien2'].'</a><br>';
echo '<a href="'.$data['lien3'].'" target="_blank">'.$data['lien3'].'</a><br>';
echo '<a href="'.$data['lien4'].'" target="_blank">'.$data['lien4'].'</a><br>';
echo '<a href="'.$data['lien5'].'" target="_blank">'.$data['lien5'].'</a><br>';
echo '<a href="'.$data['lien6'].'" target="_blank">'.$data['lien6'].'</a><br>';
echo '<a href="'.$data['lien7'].'" target="_blank">'.$data['lien7'].'</a><br>';
echo '<a href="'.$data['lien8'].'" target="_blank">'.$data['lien8'].'</a><br>';
echo '<a href="'.$data['lien9'].'" target="_blank">'.$data['lien9'].'</a></td></tr></table></td></tr>';
echo '<tr> <td class="fichecontentbottom" height="19"></td></tr>';
echo '<tr> <td height="10"></td></tr>';
}
// on ferme la connexion à mysql
mysql_close();
?>
----------------------------
Je vous ai épargné le reste de la page qui est en html. Petite note, La 4ieme ligne : "" $nom=$_GET["categorie"]; "" me permet d'afficher les résultats selon le lien cliqué dans le menu.
Merci de votre aide.
--------------------------------
<?php
// on se connecte à MySQL
$db = mysql_connect('----', '-----', '-----');
$nom=$_GET["categorie"];
// on sélectionne la base
mysql_select_db('zokac_6027858_fiche',$db);
// on crée la requête SQL
$sql = 'SELECT * FROM fiche WHERE Catégorie="'.$nom.'"';
// on envoie la requête
$req = mysql_query($sql) or die('Erreur SQL !<br>'.$sql.'<br>'.mysql_error());
// on fait une boucle qui va faire un tour pour chaque enregistrement
while($data = mysql_fetch_assoc($req))
{
// on affiche les informations de l'enregistrement en cours
echo '<tr><td class="ficheheader" height="20"><table width="468"><tr> <td width="50%"><b>'.$data['nom'].'</b></td><td width="50%"><b>Ajouté le: </b>'.$data['date'].'</td></tr></table></td></tr>';
echo '<tr> <td class="fichecontentup" height="17"></td></tr>';
echo '<tr> <td class="fichecontentmiddle"><table width="468" ><tr> <td width="100" ><img src=../images/pochettes/'.$data['image'].' width="100" height="141"></td>';
echo '<td valign="top"><b>Région:</b> '.$data['region'].'<br>';
echo '<b>Langue:</b> '.$data['langue'].'<br>';
echo '<b>Catégorie: </b>'.$data['Catégorie'].'<br>';
echo '<b>Description: </b>'.$data['description'].'<br>';
echo '<b>Liens :<br> </b><a href="'.$data['lien1'].'" target="_blank">'.$data['lien1'].'</a><br>';
echo '<a href="'.$data['lien2'].'" target="_blank">'.$data['lien2'].'</a><br>';
echo '<a href="'.$data['lien3'].'" target="_blank">'.$data['lien3'].'</a><br>';
echo '<a href="'.$data['lien4'].'" target="_blank">'.$data['lien4'].'</a><br>';
echo '<a href="'.$data['lien5'].'" target="_blank">'.$data['lien5'].'</a><br>';
echo '<a href="'.$data['lien6'].'" target="_blank">'.$data['lien6'].'</a><br>';
echo '<a href="'.$data['lien7'].'" target="_blank">'.$data['lien7'].'</a><br>';
echo '<a href="'.$data['lien8'].'" target="_blank">'.$data['lien8'].'</a><br>';
echo '<a href="'.$data['lien9'].'" target="_blank">'.$data['lien9'].'</a></td></tr></table></td></tr>';
echo '<tr> <td class="fichecontentbottom" height="19"></td></tr>';
echo '<tr> <td height="10"></td></tr>';
}
// on ferme la connexion à mysql
mysql_close();
?>
----------------------------
Bon, voila. J'ai repris ton code à partir du commentaire "on affiche". Je suppose que c'est les liens qui peuvent être vides, donc j'y ai intégré mon bout de code. Est-ce que tu comprend ce qu'il se passe?
EDIT: Mon code marche mais est faux, j'ai zappé en milieu du tien que tu affichais certaines données suivant un autre format. Il faut faire comme l'a dis plus haut Breub62 pour chaque ligne.
Live free, learn free, help free, Happy Hacking!
Plus que tout en informatique, l'erreur est humaine.
<tr> <td class="ficheheader" height="20"> <table width="468"> <tr> <td width="50%"> <b>'.$data['nom'].'</b> </td>< td width="50%"> <b>Ajouté le: </b>'.$data['date'].' </td>< /tr> </table> </td> </tr>'; foreach($data as $valeur) //Pour chaque colonne du tableau $data, qu'on appellera à chaque fois "$valeur" { if($valeur != "") //Si $valeur (la colonne en cours) est différente de "null" { echo '<a href="$valeur" target="_blank">$valeur</a><br>'; //On l'affiche } } echo '<tr> <td class="fichecontentbottom" height="19"></td></tr>'; echo '<tr> <td height="10"></td></tr>
EDIT: Mon code marche mais est faux, j'ai zappé en milieu du tien que tu affichais certaines données suivant un autre format. Il faut faire comme l'a dis plus haut Breub62 pour chaque ligne.
Live free, learn free, help free, Happy Hacking!
Plus que tout en informatique, l'erreur est humaine.
J'ai modifié mon code. J'y ai ajouté des variables.
Cependant, ce que je voudrais c'est que dès qu'un "lien" est vide. cela arrête de vérifier les autres liens dessous, et que ca aille tout de suite à la ligne sous le lien 9.
Cependant, avec le "break" cela empêche tout le reste de s'afficher, même de faire une autre boucle avec un autre enregistrement...
Vous auriez une solution?
<?php
// on se connecte à MySQL
$db = mysql_connect('------', '--------', '---------');
$nom=$_GET["categorie"];
// on sélectionne la base
mysql_select_db('zokac_6027858_fiche',$db);
// on crée la requête SQL
$sql = 'SELECT * FROM fiche WHERE Catégorie="'.$nom.'"';
// on déclare les variables
$var1=$_GET["lien1"];
$var2=$_GET["lien2"];
$var3=$_GET["lien3"];
$var4=$_GET["lien4"];
$var5=$_GET["lien5"];
$var6=$_GET["lien6"];
$var7=$_GET["lien7"];
$var8=$_GET["lien8"];
$var9=$_GET["lien9"];
// on envoie la requête
$req = mysql_query($sql) or die('Erreur SQL !<br>'.$sql.'<br>'.mysql_error());
// on fait une boucle qui va faire un tour pour chaque enregistrement
while($data = mysql_fetch_assoc($req))
{
// on affiche les informations de l'enregistrement en cours
echo '<tr><td class="ficheheader" height="20"><table width="468"><tr> <td width="50%"><b>'.$data['nom'].'</b></td><td width="50%"><b>Ajouté le: </b>'.$data['date'].'</td></tr></table></td></tr>';
echo '<tr> <td class="fichecontentup" height="17"></td></tr>';
echo '<tr> <td class="fichecontentmiddle"><table width="468" ><tr> <td width="100" ><img src=../images/pochettes/'.$data['image'].' width="100" height="141"></td>';
echo '<td valign="top"><b>Région:</b> '.$data['region'].'<br>';
echo '<b>Langue:</b> '.$data['langue'].'<br>';
echo '<b>Catégorie: </b>'.$data['Catégorie'].'<br>';
echo '<b>Description: </b>'.$data['description'].'<br>';
echo '<b>Liens :<br> </b><a href="'.$data['lien1'].'" target="_blank">'.$data['lien1'].'</a><br>';
if(is_empty($var2))
{
break;
}
else
{
echo '<a href="'.$data['lien2'].'" target="_blank">'.$data['lien2'].'</a><br>';
}
if(is_empty($var3))
{
break;
}
else
{
echo '<a href="'.$data['lien3'].'" target="_blank">'.$data['lien3'].'</a><br>';
}
if(is_empty($var4))
{
break;
}
else
{
echo '<a href="'.$data['lien4'].'" target="_blank">'.$data['lien4'].'</a><br>';
} if(is_empty($var5))
{
break;
}
else
{
echo '<a href="'.$data['lien5'].'" target="_blank">'.$data['lien5'].'</a><br>';
} if(is_empty($var6))
{
break;
}
else
{
echo '<a href="'.$data['lien6'].'" target="_blank">'.$data['lien6'].'</a><br>';
} if(is_empty($var7))
{
break;
}
else
{
echo '<a href="'.$data['lien7'].'" target="_blank">'.$data['lien7'].'</a><br>';
} if(is_empty($var8))
{
break;
}
else
{
echo '<a href="'.$data['lien8'].'" target="_blank">'.$data['lien8'].'</a><br>';
} if(is_empty($var9))
{
break;
}
else
{
echo '<a href="'.$data['lien9'].'" target="_blank">'.$data['lien9'].'</a><br>';
}
echo '</td></tr></table></td></tr>';
echo '<tr> <td class="fichecontentbottom" height="19"></td></tr>';
echo '<tr> <td height="10"></td></tr>';
}
// on ferme la connexion à mysql
mysql_close();
?>
Cependant, ce que je voudrais c'est que dès qu'un "lien" est vide. cela arrête de vérifier les autres liens dessous, et que ca aille tout de suite à la ligne sous le lien 9.
Cependant, avec le "break" cela empêche tout le reste de s'afficher, même de faire une autre boucle avec un autre enregistrement...
Vous auriez une solution?
<?php
// on se connecte à MySQL
$db = mysql_connect('------', '--------', '---------');
$nom=$_GET["categorie"];
// on sélectionne la base
mysql_select_db('zokac_6027858_fiche',$db);
// on crée la requête SQL
$sql = 'SELECT * FROM fiche WHERE Catégorie="'.$nom.'"';
// on déclare les variables
$var1=$_GET["lien1"];
$var2=$_GET["lien2"];
$var3=$_GET["lien3"];
$var4=$_GET["lien4"];
$var5=$_GET["lien5"];
$var6=$_GET["lien6"];
$var7=$_GET["lien7"];
$var8=$_GET["lien8"];
$var9=$_GET["lien9"];
// on envoie la requête
$req = mysql_query($sql) or die('Erreur SQL !<br>'.$sql.'<br>'.mysql_error());
// on fait une boucle qui va faire un tour pour chaque enregistrement
while($data = mysql_fetch_assoc($req))
{
// on affiche les informations de l'enregistrement en cours
echo '<tr><td class="ficheheader" height="20"><table width="468"><tr> <td width="50%"><b>'.$data['nom'].'</b></td><td width="50%"><b>Ajouté le: </b>'.$data['date'].'</td></tr></table></td></tr>';
echo '<tr> <td class="fichecontentup" height="17"></td></tr>';
echo '<tr> <td class="fichecontentmiddle"><table width="468" ><tr> <td width="100" ><img src=../images/pochettes/'.$data['image'].' width="100" height="141"></td>';
echo '<td valign="top"><b>Région:</b> '.$data['region'].'<br>';
echo '<b>Langue:</b> '.$data['langue'].'<br>';
echo '<b>Catégorie: </b>'.$data['Catégorie'].'<br>';
echo '<b>Description: </b>'.$data['description'].'<br>';
echo '<b>Liens :<br> </b><a href="'.$data['lien1'].'" target="_blank">'.$data['lien1'].'</a><br>';
if(is_empty($var2))
{
break;
}
else
{
echo '<a href="'.$data['lien2'].'" target="_blank">'.$data['lien2'].'</a><br>';
}
if(is_empty($var3))
{
break;
}
else
{
echo '<a href="'.$data['lien3'].'" target="_blank">'.$data['lien3'].'</a><br>';
}
if(is_empty($var4))
{
break;
}
else
{
echo '<a href="'.$data['lien4'].'" target="_blank">'.$data['lien4'].'</a><br>';
} if(is_empty($var5))
{
break;
}
else
{
echo '<a href="'.$data['lien5'].'" target="_blank">'.$data['lien5'].'</a><br>';
} if(is_empty($var6))
{
break;
}
else
{
echo '<a href="'.$data['lien6'].'" target="_blank">'.$data['lien6'].'</a><br>';
} if(is_empty($var7))
{
break;
}
else
{
echo '<a href="'.$data['lien7'].'" target="_blank">'.$data['lien7'].'</a><br>';
} if(is_empty($var8))
{
break;
}
else
{
echo '<a href="'.$data['lien8'].'" target="_blank">'.$data['lien8'].'</a><br>';
} if(is_empty($var9))
{
break;
}
else
{
echo '<a href="'.$data['lien9'].'" target="_blank">'.$data['lien9'].'</a><br>';
}
echo '</td></tr></table></td></tr>';
echo '<tr> <td class="fichecontentbottom" height="19"></td></tr>';
echo '<tr> <td height="10"></td></tr>';
}
// on ferme la connexion à mysql
mysql_close();
?>
J'avais réalisé ceci plus tôt dans la journée, mais même après avoir essayé, ça ne fonctionne pas plus. Ça n'Affiche que le premier résultat (qui n'est pas en condition IF)
Je crois que le BREAK cause probleme. :S
Je crois que le BREAK cause probleme. :S
Bon alors.. petite recherche, et lecture de la doc: http://www.manuelphp.com/php/control-structures.break.php
Ne s'applique donc pas à une structure if
La solution? Faire un adressage de ce type pour pouvoir boucler sur un tableau
Je sais pas si tu connais la commande "foreach". En fait ça veux dire "pour chaque colonne du tableau $var, on l'appellera $lien, et on lui appliquera le traitement entre les crochets". Et le break permet de sortir des crochets. Bien sur, foreach traite les données par ordre croissant :)
Live free, learn free, help free, Happy Hacking!
Plus que tout en informatique, l'erreur est humaine.
L'instruction break permet de sortir d'une structure for , foreach , while , do-while ou switch .
Ne s'applique donc pas à une structure if
La solution? Faire un adressage de ce type pour pouvoir boucler sur un tableau
//adressage type $var['1'] = $data['lien1']; $var['2'] = $data['lien2']; //etc... //boucle d'affichage foreach($var as $lien) { if(!empty($lien)) { echo "tagada tsoin tsoin $lien"; } else { break; } }
Je sais pas si tu connais la commande "foreach". En fait ça veux dire "pour chaque colonne du tableau $var, on l'appellera $lien, et on lui appliquera le traitement entre les crochets". Et le break permet de sortir des crochets. Bien sur, foreach traite les données par ordre croissant :)
Live free, learn free, help free, Happy Hacking!
Plus que tout en informatique, l'erreur est humaine.
J'ai essayé ce que tu m'as dis. J'ai fouillé un peu sur le site que tu m'as fournis, cependant, ca ne fonctionne pas. En fait, la page s'affiche tout correctement, mais les liens n'apparaissent pas.
J'ai enlevé le ! avant le empty, alors là, la phrase "tagada tsoin tsoin" s'affichait, mais pas le lien...
C'est comme si on avait pas réussi à aller chercher les données dans la base de donnée ou si echo "$lien"; ne fonctionne pas :S.
Merci de tout le temps que tu prends pour moi.
J'ai enlevé le ! avant le empty, alors là, la phrase "tagada tsoin tsoin" s'affichait, mais pas le lien...
C'est comme si on avait pas réussi à aller chercher les données dans la base de donnée ou si echo "$lien"; ne fonctionne pas :S.
Merci de tout le temps que tu prends pour moi.
Bon alors.. On va commencer par reprendre le coté SQL. Essaie ça:
$db = mysql_connect('------', '--------', '---------'); mysql_select_db('zokac_6027858_fiche',$db); $sql = 'SELECT * FROM fiche WHERE Catégorie="/*remplis ici manuellement */"'; $req = mysql_query($sql) or die(mysql_error()); while($data = mysql_fetch_assoc($req)) { echo $data; }
Salut
Si je mets le code tel quel (en ajoutant les renseignements necessaires")
et pas le reste du code, ce m'indique "arrayarrayarrayarray"
Si je remplace { echo $data; } par le code pour afficher toutes les données, en utilisant la fonction avec le "$var" et le "foreach" tout s'affiche correctement, sauf les liens qui ne s'affiche pas.
Si je mets le code tel quel (en ajoutant les renseignements necessaires")
et pas le reste du code, ce m'indique "arrayarrayarrayarray"
Si je remplace { echo $data; } par le code pour afficher toutes les données, en utilisant la fonction avec le "$var" et le "foreach" tout s'affiche correctement, sauf les liens qui ne s'affiche pas.
ca ne me mets absolument rien.
Est-ce que je dois faire afficher mes données avec la boucle foreach, ou je mets seulement le code que tu m'as indiqué?
Est-ce que je dois faire afficher mes données avec la boucle foreach, ou je mets seulement le code que tu m'as indiqué?
Bon.. et ça?
Pour le moment, laisse tomber le code du haut, on y reviendra quand on aura réussi à bien récupérer les données de ta db.. Parce que c'est pas folichon pour le moment..
T'es sur que t'as quelque chose dans ta table? Juste comme ça...?
$db = mysql_connect('------', '--------', '---------'); mysql_select_db('zokac_6027858_fiche',$db); $sql = 'SELECT * FROM fiche WHERE Catégorie="/*remplis ici manuellement */"'; $req = mysql_query($sql) or die(mysql_error()); while($data = mysql_fetch_array($req)) { echo $data; }
Pour le moment, laisse tomber le code du haut, on y reviendra quand on aura réussi à bien récupérer les données de ta db.. Parce que c'est pas folichon pour le moment..
T'es sur que t'as quelque chose dans ta table? Juste comme ça...?
il m'affiche seulement arrayarrayarrayarray
Et oui, j'ai des données dans ma table. Car tout s'affiche très bien lorsque je mets le code que j'ai indiqué dans mon premier message.
Le problème est que dans mon code, à chaque data lien, si le lien est vide, il m'affiche un saut de ligne <br> puisque j'ai mis ca dans mon code. Mais je n'ai pas le choix de le mettre, sinon, les liens s'affichent un à la suite de l'autre :S
Et oui, j'ai des données dans ma table. Car tout s'affiche très bien lorsque je mets le code que j'ai indiqué dans mon premier message.
Le problème est que dans mon code, à chaque data lien, si le lien est vide, il m'affiche un saut de ligne <br> puisque j'ai mis ca dans mon code. Mais je n'ai pas le choix de le mettre, sinon, les liens s'affichent un à la suite de l'autre :S
<html>
<head>
<link title="feuille" type="text/css" rel="stylesheet" href="feuille.css">
<title>wii-wbi</title>
</head>
<body topmargin="0" leftmargin="0" >
<div align="center">
<table border="0" cellpadding="0" cellspacing="0" width="468" >
<tr>
<td width="468" align="left" valign="top">
<table border="0" cellpadding="0" cellspacing="0">
<?php
// on se connecte à MySQL
$db = mysql_connect('----------', '----------', ------------');
$nom=$_GET["categorie"];
// on sélectionne la base
mysql_select_db('zokac_6027858_fiche',$db);
// on crée la requête SQL
$sql = 'SELECT * FROM fiche WHERE Catégorie="'.$nom.'"';
// on envoie la requête
$req = mysql_query($sql) or die('Erreur SQL !<br>'.$sql.'<br>'.mysql_error());
// on fait une boucle qui va faire un tour pour chaque enregistrement
while($data = mysql_fetch_assoc($req))
{
// on affiche les informations de l'enregistrement en cours
echo '<tr><td class="ficheheader" height="20"><table width="468"><tr> <td width="50%"><b>'.$data['nom'].'</b></td><td width="50%"><b>Ajouté le: </b>'.$data['date'].'</td></tr></table></td></tr>';
echo '<tr> <td class="fichecontentup" height="17"></td></tr>';
echo '<tr> <td class="fichecontentmiddle"><table width="468" ><tr> <td width="100" ><img src=../images/pochettes/'.$data['image'].' width="100" height="141"></td>';
echo '<td valign="top"><b>Région:</b> '.$data['region'].'<br>';
echo '<b>Langue:</b> '.$data['langue'].'<br>';
echo '<b>Catégorie: </b>'.$data['Catégorie'].'<br>';
echo '<b>Description: </b>'.$data['description'].'<br>';
echo '<b>Liens :<br> </b><a href="'.$data['lien1'].'" target="_blank">'.$data['lien1'].'</a><br>';
echo '<a href="'.$data['lien2'].'" target="_blank">'.$data['lien2'].'</a><br>';
echo '<a href="'.$data['lien3'].'" target="_blank">'.$data['lien3'].'</a><br>';
echo '<a href="'.$data['lien4'].'" target="_blank">'.$data['lien4'].'</a><br>';
echo '<a href="'.$data['lien5'].'" target="_blank">'.$data['lien5'].'</a><br>';
echo '<a href="'.$data['lien6'].'" target="_blank">'.$data['lien6'].'</a><br>';
echo '<a href="'.$data['lien7'].'" target="_blank">'.$data['lien7'].'</a><br>';
echo '<a href="'.$data['lien8'].'" target="_blank">'.$data['lien8'].'</a><br>';
echo '<a href="'.$data['lien9'].'" target="_blank">'.$data['lien9'].'</a><br>';
echo '</td></tr></table></td></tr>';
echo '<tr> <td class="fichecontentbottom" height="19"></td></tr>';
echo '<tr> <td height="10"></td></tr>';
}
// on ferme la connexion à mysql
mysql_close();
?>
</table>
</td>
</tr>
</table>
</div>
</body>
</html>
+++++++++++++++++++++++++++++++++
Ça c'est mon code original.
Avec ça tout fonctionne. Tout s'affiche.
$nom=$_GET["categorie"];
$sql = 'SELECT * FROM fiche WHERE Catégorie="'.$nom.'"';
(Dans mon menu, j'ai toutes mes catégories. Lorsque je clique sur l'une d'elles. ça dit a mon code de n'afficher que les données qui sont dans cette catégorie) Tout cela fonctionne.
Le problème est à ce niveau.
echo '<b>Liens :<br> </b><a href="'.$data['lien1'].'" target="_blank">'.$data['lien1'].'</a><br>';
echo '<a href="'.$data['lien2'].'" target="_blank">'.$data['lien2'].'</a><br>';
echo '<a href="'.$data['lien3'].'" target="_blank">'.$data['lien3'].'</a><br>';
echo '<a href="'.$data['lien4'].'" target="_blank">'.$data['lien4'].'</a><br>';
echo '<a href="'.$data['lien5'].'" target="_blank">'.$data['lien5'].'</a><br>';
echo '<a href="'.$data['lien6'].'" target="_blank">'.$data['lien6'].'</a><br>';
echo '<a href="'.$data['lien7'].'" target="_blank">'.$data['lien7'].'</a><br>';
echo '<a href="'.$data['lien8'].'" target="_blank">'.$data['lien8'].'</a><br>';
echo '<a href="'.$data['lien9'].'" target="_blank">'.$data['lien9'].'</a><br>';
Il arrive parfois que les 10 "liens" soient remplis, par contre il se peut que seulement quelques uns soient remplis.
Cependant, si rendu à 5, il n'y a plus rien dans ma table, rien ne s'affiche, avec raison, mais le <br> s'affiche tout de même, ce qui fait que dans la page générée, il y a des espaces vides. Si j'ai 9 liens, ça ne fait pas un grand changement, mais s'il n'y en a qu'un, il y a un grand espace vide...
Je voudrais seulement trouver un moyen afin d'empecher les "echo" de liens vides de s'afficher et que le script se rende immédiatement à
echo '</td></tr></table></td></tr>';
echo '<tr> <td class="fichecontentbottom" height="19"></td></tr>';
echo '<tr> <td height="10"></td></tr>';
}
À noter que s'il n'y a rien dans un lien, tous les liens plus bas sont vides aussi. exemple : Il ne peut rien y avoir dans le code 8 s'il n'y a rien dans le 5-6-7 etc...
<head>
<link title="feuille" type="text/css" rel="stylesheet" href="feuille.css">
<title>wii-wbi</title>
</head>
<body topmargin="0" leftmargin="0" >
<div align="center">
<table border="0" cellpadding="0" cellspacing="0" width="468" >
<tr>
<td width="468" align="left" valign="top">
<table border="0" cellpadding="0" cellspacing="0">
<?php
// on se connecte à MySQL
$db = mysql_connect('----------', '----------', ------------');
$nom=$_GET["categorie"];
// on sélectionne la base
mysql_select_db('zokac_6027858_fiche',$db);
// on crée la requête SQL
$sql = 'SELECT * FROM fiche WHERE Catégorie="'.$nom.'"';
// on envoie la requête
$req = mysql_query($sql) or die('Erreur SQL !<br>'.$sql.'<br>'.mysql_error());
// on fait une boucle qui va faire un tour pour chaque enregistrement
while($data = mysql_fetch_assoc($req))
{
// on affiche les informations de l'enregistrement en cours
echo '<tr><td class="ficheheader" height="20"><table width="468"><tr> <td width="50%"><b>'.$data['nom'].'</b></td><td width="50%"><b>Ajouté le: </b>'.$data['date'].'</td></tr></table></td></tr>';
echo '<tr> <td class="fichecontentup" height="17"></td></tr>';
echo '<tr> <td class="fichecontentmiddle"><table width="468" ><tr> <td width="100" ><img src=../images/pochettes/'.$data['image'].' width="100" height="141"></td>';
echo '<td valign="top"><b>Région:</b> '.$data['region'].'<br>';
echo '<b>Langue:</b> '.$data['langue'].'<br>';
echo '<b>Catégorie: </b>'.$data['Catégorie'].'<br>';
echo '<b>Description: </b>'.$data['description'].'<br>';
echo '<b>Liens :<br> </b><a href="'.$data['lien1'].'" target="_blank">'.$data['lien1'].'</a><br>';
echo '<a href="'.$data['lien2'].'" target="_blank">'.$data['lien2'].'</a><br>';
echo '<a href="'.$data['lien3'].'" target="_blank">'.$data['lien3'].'</a><br>';
echo '<a href="'.$data['lien4'].'" target="_blank">'.$data['lien4'].'</a><br>';
echo '<a href="'.$data['lien5'].'" target="_blank">'.$data['lien5'].'</a><br>';
echo '<a href="'.$data['lien6'].'" target="_blank">'.$data['lien6'].'</a><br>';
echo '<a href="'.$data['lien7'].'" target="_blank">'.$data['lien7'].'</a><br>';
echo '<a href="'.$data['lien8'].'" target="_blank">'.$data['lien8'].'</a><br>';
echo '<a href="'.$data['lien9'].'" target="_blank">'.$data['lien9'].'</a><br>';
echo '</td></tr></table></td></tr>';
echo '<tr> <td class="fichecontentbottom" height="19"></td></tr>';
echo '<tr> <td height="10"></td></tr>';
}
// on ferme la connexion à mysql
mysql_close();
?>
</table>
</td>
</tr>
</table>
</div>
</body>
</html>
+++++++++++++++++++++++++++++++++
Ça c'est mon code original.
Avec ça tout fonctionne. Tout s'affiche.
$nom=$_GET["categorie"];
$sql = 'SELECT * FROM fiche WHERE Catégorie="'.$nom.'"';
(Dans mon menu, j'ai toutes mes catégories. Lorsque je clique sur l'une d'elles. ça dit a mon code de n'afficher que les données qui sont dans cette catégorie) Tout cela fonctionne.
Le problème est à ce niveau.
echo '<b>Liens :<br> </b><a href="'.$data['lien1'].'" target="_blank">'.$data['lien1'].'</a><br>';
echo '<a href="'.$data['lien2'].'" target="_blank">'.$data['lien2'].'</a><br>';
echo '<a href="'.$data['lien3'].'" target="_blank">'.$data['lien3'].'</a><br>';
echo '<a href="'.$data['lien4'].'" target="_blank">'.$data['lien4'].'</a><br>';
echo '<a href="'.$data['lien5'].'" target="_blank">'.$data['lien5'].'</a><br>';
echo '<a href="'.$data['lien6'].'" target="_blank">'.$data['lien6'].'</a><br>';
echo '<a href="'.$data['lien7'].'" target="_blank">'.$data['lien7'].'</a><br>';
echo '<a href="'.$data['lien8'].'" target="_blank">'.$data['lien8'].'</a><br>';
echo '<a href="'.$data['lien9'].'" target="_blank">'.$data['lien9'].'</a><br>';
Il arrive parfois que les 10 "liens" soient remplis, par contre il se peut que seulement quelques uns soient remplis.
Cependant, si rendu à 5, il n'y a plus rien dans ma table, rien ne s'affiche, avec raison, mais le <br> s'affiche tout de même, ce qui fait que dans la page générée, il y a des espaces vides. Si j'ai 9 liens, ça ne fait pas un grand changement, mais s'il n'y en a qu'un, il y a un grand espace vide...
Je voudrais seulement trouver un moyen afin d'empecher les "echo" de liens vides de s'afficher et que le script se rende immédiatement à
echo '</td></tr></table></td></tr>';
echo '<tr> <td class="fichecontentbottom" height="19"></td></tr>';
echo '<tr> <td height="10"></td></tr>';
}
À noter que s'il n'y a rien dans un lien, tous les liens plus bas sont vides aussi. exemple : Il ne peut rien y avoir dans le code 8 s'il n'y a rien dans le 5-6-7 etc...
Ok. J'ai repris la boucle que je t'avais donné au dessus en modifiant 2-3 bricoles.. Voila ton nouveau code. A priori, tu n'as plus qu'a remettre les identifiants pour te connecter à la db.
<html> <head> <link title="feuille" type="text/css" rel="stylesheet" href="feuille.css"> <title>wii-wbi</title> </head> <body topmargin="0" leftmargin="0" > <div align="center"> <table border="0" cellpadding="0" cellspacing="0" width="468" > <tr> <td width="468" align="left" valign="top"> <table border="0" cellpadding="0" cellspacing="0"> <?php // on se connecte à MySQL $db = mysql_connect('----------', '----------', ------------'); $nom=$_GET["categorie"]; // on sélectionne la base mysql_select_db('zokac_6027858_fiche',$db); // on crée la requête SQL $sql = 'SELECT * FROM fiche WHERE Catégorie="'.$nom.'"'; // on envoie la requête $req = mysql_query($sql) or die('Erreur SQL !<br>'.$sql.'<br>'.mysql_error()); // on fait une boucle qui va faire un tour pour chaque enregistrement while($data = mysql_fetch_assoc($req)) { // on affiche les informations de l'enregistrement en cours echo '<tr><td class="ficheheader" height="20"><table width="468"><tr> <td width="50%"><b>'.$data['nom'].'</b></td><td width="50%"><b>Ajouté le: </b>'.$data['date'].'</td></tr></table></td></tr>'; echo '<tr> <td class="fichecontentup" height="17"></td></tr>'; echo '<tr> <td class="fichecontentmiddle"><table width="468" ><tr> <td width="100" ><img src=../images/pochettes/'.$data['image'].' width="100" height="141"></td>'; echo '<td valign="top"><b>Région:</b> '.$data['region'].'<br>'; echo '<b>Langue:</b> '.$data['langue'].'<br>'; echo '<b>Catégorie: </b>'.$data['Catégorie'].'<br>'; echo '<b>Description: </b>'.$data['description'].'<br>'; echo '<b>Liens :<br> </b><a href="'.$data['lien1'].'" target="_blank">'.$data['lien1'].'</a><br>'; //adressage type $var['1'] = $data['lien1']; $var['2'] = $data['lien2']; $var['3'] = $data['lien3']; $var['4'] = $data['lien4']; $var['5'] = $data['lien5']; $var['6'] = $data['lien6']; $var['7'] = $data['lien7']; $var['8'] = $data['lien8']; $var['9'] = $data['lien9']; //boucle d'affichage foreach($var as $lien) { if(!empty($lien)) { echo '<a href="'.$lien.'" target="_blank">'.$lien.'</a><br>'; } else { break; } } /* echo '<a href="'.$data['lien2'].'" target="_blank">'.$data['lien2'].'</a><br>'; echo '<a href="'.$data['lien3'].'" target="_blank">'.$data['lien3'].'</a><br>'; echo '<a href="'.$data['lien4'].'" target="_blank">'.$data['lien4'].'</a><br>'; echo '<a href="'.$data['lien5'].'" target="_blank">'.$data['lien5'].'</a><br>'; echo '<a href="'.$data['lien6'].'" target="_blank">'.$data['lien6'].'</a><br>'; echo '<a href="'.$data['lien7'].'" target="_blank">'.$data['lien7'].'</a><br>'; echo '<a href="'.$data['lien8'].'" target="_blank">'.$data['lien8'].'</a><br>'; echo '<a href="'.$data['lien9'].'" target="_blank">'.$data['lien9'].'</a><br>'; echo '</td></tr></table></td></tr>'; echo '<tr> <td class="fichecontentbottom" height="19"></td></tr>'; echo '<tr> <td height="10"></td></tr>'; */ } // on ferme la connexion à mysql mysql_close(); ?> </table> </td> </tr> </table> </div> </body> </html>
Merci beaucoup. Maintenant tout fonctionne à merveille :)
Il y avait 2 erreurs dans ton code, que j'ai pu corriger.
echo '</td></tr></table></td></tr>';
echo '<tr> <td class="fichecontentbottom" height="19"></td></tr>';
echo '<tr> <td height="10"></td></tr>';
Doit être affiché, donc je les ai enlevé d'entre les "commentaires"
Et j'ai aussi enlevé <a href="'.$data['lien1'].'" target="_blank">'.$data['lien1'].'</a><br> puisqu'il se réaffichait dans les liens.
Merci de tout le temps que tu as passé à m'aider, c'est très apprécié.
Il y avait 2 erreurs dans ton code, que j'ai pu corriger.
echo '</td></tr></table></td></tr>';
echo '<tr> <td class="fichecontentbottom" height="19"></td></tr>';
echo '<tr> <td height="10"></td></tr>';
Doit être affiché, donc je les ai enlevé d'entre les "commentaires"
Et j'ai aussi enlevé <a href="'.$data['lien1'].'" target="_blank">'.$data['lien1'].'</a><br> puisqu'il se réaffichait dans les liens.
Merci de tout le temps que tu as passé à m'aider, c'est très apprécié.
bonjour yrkel DESOLER DE CETTE INTRUSION JE CONNAIS PAS LE FONCTIONNEMENT DU SITE POUR T ENVOYER UN POSTE EN PRIVER ALORS voila j ai vue dans un poste que tu avais resolu un probleme de fix rutime error 6002 pourais TU sil te plais m envoyer un fix qui resoudra mon petit grand probleme je te remerci par avance voici mon mail K.KILI@VOILA.FR ENCORE PARDON ET MERCI