Tester une cellule vide dans un champ ?

cs_bonobos Messages postés 34 Date d'inscription jeudi 22 avril 2004 Statut Membre Dernière intervention 15 décembre 2005 - 20 janv. 2005 à 15:12
cs_Anthomicro Messages postés 9433 Date d'inscription mardi 9 octobre 2001 Statut Membre Dernière intervention 13 avril 2007 - 28 janv. 2005 à 17:00
Bonjour à tous,
J'ai 1 table " mairies_web" qui liste toutes les communes qui ont leurs sites sur internet...
Cette table comprend 4 champs:
id mairies tel url
je sais faire une requete et mon tableau fonctionne parfaitement.
Mon tableau affiche le nom de la commune ainsi que son n° de téléphone.
Quand je clique sur le nom de la commune, une fenêtre s'ouvre avec son site.
Mon souci est celui-ci:
Toutes les communes n'ont pas de sites sur internet, alors comment faire pour dévalider
le clic sur le nom de ces communes et mettre un "alt" du type "pas de site" ?
Il faut certainement tester les cellules vides dans le champ "URL" ??
Merci


<?
bla-bla-bla-bla
?>
<table width= '100%' cellspacing="1" border="1" bordercolordark="white" bordercolorlight="maroon">
<?
// sinon, on regarde si la variable $debut (le x de notre LIMIT) n'a pas déjà été déclarée, et dans ce cas, on l'initialise à 0
if (!isset($_GET['debut'])) $_GET['debut'] = 0;

$nb_affichage_par_page = 10;

// Préparation de la requête avec le LIMIT
$sql = 'SELECT mairies, tel, url FROM mairies_web ORDER BY mairies ASC LIMIT '.$_GET['debut'].','.$nb_affichage_par_page;


// on exécute la requête
$req = mysql_query($sql) or die('Erreur SQL !
'.$sql.'
'.mysql_error());


// on va scanner tous les résultats un par un

while ($row = mysql_fetch_array($req)) {
// on affiches les résultats dans la table
?>
<tr class="classe1" onmouseover="this.className='classe2';" onmouseout="this.className='classe1';">



<td width="693" height="21" align="center">')"> Commune de&nbsp;<? echo $row['mairies'];?>

</td>

<td width ="15" height="21" align="center">


</td>

<td width="386" height="21" align="center">
<? echo $row['tel'];?>

</td>

</tr>
<?
bla-bla-bla-bla
?>

14 réponses

cs_eXon Messages postés 166 Date d'inscription lundi 17 janvier 2005 Statut Membre Dernière intervention 8 avril 2007 1
20 janv. 2005 à 15:52
Tu n'as qu'à utilisé la fonction mysql_num_rows(). Exemple:

if(mysql_num_rows($result) < 1){

echo 'Vide';

}

else{

// ...

}

----------------

eXon
http://www.lookstrike.com
0
malalam Messages postés 10839 Date d'inscription lundi 24 février 2003 Statut Membre Dernière intervention 2 mars 2010 25
20 janv. 2005 à 15:55
Hello,



ou alors tu fais un simple if dans l'affichage de ton tableau



if ($row['url']=="")

affichage sans lien

else

affichage avec lien
0
cs_eXon Messages postés 166 Date d'inscription lundi 17 janvier 2005 Statut Membre Dernière intervention 8 avril 2007 1
20 janv. 2005 à 16:11
Je ne crois pas que ça soit une bonne solution il y a plusieurs entrés
et la fonction mysql_num_rows est indiscutablement la fonction la plus
efficace pour vérifé combien d'entré est dans sa requête. Ta façon ne
marche pas en plus dans son cas.

----------------

eXon
http://www.lookstrike.com
0
cs_eXon Messages postés 166 Date d'inscription lundi 17 janvier 2005 Statut Membre Dernière intervention 8 avril 2007 1
20 janv. 2005 à 16:15
Ooops après avoir relu ta question je me suis rendu compte que je ne
répondais pas exactement à ta question. La solution serait simplement
utilisé la fonction empty:

if(empty($row['url'])){

echo 'Pas de site';

}

else{

// ...

}

----------------

eXon
http://www.lookstrike.com
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
malalam Messages postés 10839 Date d'inscription lundi 24 février 2003 Statut Membre Dernière intervention 2 mars 2010 25
20 janv. 2005 à 16:18
Me disais aussi...lol.
0
cs_bonobos Messages postés 34 Date d'inscription jeudi 22 avril 2004 Statut Membre Dernière intervention 15 décembre 2005
20 janv. 2005 à 17:40
Merci de m'avoir répondu aussi vite !
j'ai 2 scripts identiques sur cette page (français et anglais) et
j'ai une erreur sur le ELSE entre les 2 pages...

?>
<?
// sinon, on regarde si la variable $debut (le x de notre LIMIT) n'a pas déjà été déclarée, et dans ce cas, on l'initialise à 0
if (!isset($_GET['debut'])) $_GET['debut'] = 0;

$nb_affichage_par_page = 10;

// Préparation de la requête avec le LIMIT
$sql = 'SELECT mairies, tel, url FROM mairies_web ORDER BY mairies ASC LIMIT '.$_GET['debut'].','.$nb_affichage_par_page;

// on exécute la requête
$req = mysql_query($sql) or die('Erreur SQL !
'.$sql.'
'.mysql_error());

// on va scanner tous les résultats un par un

while ($row = mysql_fetch_array($req)){

if(empty($row['url'])){ [ code que j'ai rajouté]
echo 'Pas de site';
}
else{

// on affiches les résultats dans la table
?>
----

')">Commune de&nbsp;<? echo $row['mairies'];?>,

,

<? echo $row['tel'];?>,

<?
}

// on libère l'espace mémoire alloué pour cette requête
mysql_free_result ($req);
?>



<?php


// on affiche enfin notre barre
echo ''.barre_navigation($nb_total, $nb_affichage_par_page, $_GET['debut'], 3).'';
}
// on libère l'espace mémoire alloué pour cette requête
mysql_free_result ($resultat);
// on ferme la connexion à la base de données.
mysql_close ();
?>

<!--Début script de page modifiée le-->
<?print("Dernière modification le ");?><?print(date("d/m/Y", filemtime($SCRIPT_FILENAME)));?>

<!--Fin du script de page modifiée le-->



<!-- Fin du script en français -->
<?
}
else { ERREUR ICI !!
?>
<!-- Début du script en anglais -->
<?
0
cs_Anthomicro Messages postés 9433 Date d'inscription mardi 9 octobre 2001 Statut Membre Dernière intervention 13 avril 2007 8
20 janv. 2005 à 18:26
Salut,



évite les multiples ouvertures/fermetures des balises php (qui ne sont pas au passage <? mais <?php)



Ensuite ça :



<table width= '100%' cellspacing="1" border="1" bordercolordark="white" bordercolorlight="maroon">



toujours mettre entre guillemets doubles les attributs html




<table width="100%" cellspacing="1" border="1" bordercolordark="white" bordercolorlight="maroon">



ensuite tu peux transformer ça en CSS mais bon c'est pas le but de la question (quoi que, ça serait utile)




et
: à remplacer par




ensuite





le suffit normalement ;-)




à remplacer par :







ton mysql_close (); tu peux le mettre juste après avoir fait la requête pour avoir une connexion la plus courte possible.



Ensuite le mysql_fetch_array() peut être remplacé par un mysql_fetch_row() plus rapide.



ça donnerait ça :



dans une CSS :



.a{


width:693px;


}

.b{


width:15px;


}

.a,.b{


height:21px;

text-align:center;


}

.c{


width:386px;

height:21px;

font-weight:bold;


}







while ($row = mysql_fetch_row($req))

{

if(empty($row[2])){
echo 'Pas de site';
}
else{

echo '<tr class ="classe1"
onmouseover="this.className=\'classe2\';"
onmouseout="this.className=\'classe1\';">

<td class="a">Vulgarisation informatique : Entraide, dépannage et vulgarisation informatique

Forum d'entraide informatique (14 catégories)
0
cs_Anthomicro Messages postés 9433 Date d'inscription mardi 9 octobre 2001 Statut Membre Dernière intervention 13 avril 2007 8
20 janv. 2005 à 18:30
tu peux aussi remplacer ça :







par ça :







et rajouter ça dans la CSS :



.d{


border:0;

height:21px;

width:21px;


}


Vulgarisation informatique : Entraide, dépannage et vulgarisation informatique

Forum d'entraide informatique (14 catégories)
0
cs_eXon Messages postés 166 Date d'inscription lundi 17 janvier 2005 Statut Membre Dernière intervention 8 avril 2007 1
20 janv. 2005 à 21:45
Pour ton erreur, où est-ce que tu as mis ta première condition? Regarde
bien tu as deux else de suite, ce qui est illogique et fait sortir
innévitablement une erreur par PHP.

----------------

eXon
http://www.lookstrike.com
0
cs_bonobos Messages postés 34 Date d'inscription jeudi 22 avril 2004 Statut Membre Dernière intervention 15 décembre 2005
25 janv. 2005 à 18:19
je reviens sur mon probléme, je n'ai tjrs pas trouvé la solution !!
0
cs_bonobos Messages postés 34 Date d'inscription jeudi 22 avril 2004 Statut Membre Dernière intervention 15 décembre 2005
28 janv. 2005 à 11:41
Personne ? snif !!
0
cs_eXon Messages postés 166 Date d'inscription lundi 17 janvier 2005 Statut Membre Dernière intervention 8 avril 2007 1
28 janv. 2005 à 13:45
Tu dis remplacer:



if(empty($row['url'])){
echo 'Pas de site';
}



par:



if(mysql_num_rows($req) < 1){


echo 'Pas de site';
}



----------------

eXon
http://www.lookstrike.com
0
cs_bonobos Messages postés 34 Date d'inscription jeudi 22 avril 2004 Statut Membre Dernière intervention 15 décembre 2005
28 janv. 2005 à 14:32
// on va scanner tous les résultats un par un

while ($row = mysql_fetch_array($req))
if(mysql_num_rows($req) < 1)
{
echo 'Pas de site';
}
else
{




// on affiches les résultats dans la table
?>
<tr class="classe1" onmouseover="this.className='classe2';" onmouseout="this.className='classe1';">

<td width="693" height="21" align="center">')"> Commune de&nbsp;<? echo $row['mairies'];?>

</td>

<td width ="15" height="21" align="center">


</td>

<td width="386" height="21" align="center">
<? echo $row['tel'];?>

</td>
<?
}

Salut,
Ca ne me crée pas d'erreur et tous les liens sont actifs même si la cellule et vide.
0
cs_Anthomicro Messages postés 9433 Date d'inscription mardi 9 octobre 2001 Statut Membre Dernière intervention 13 avril 2007 8
28 janv. 2005 à 17:00
tu dois mettre ça :



if(mysql_num_rows($req) < 1)
{
echo 'Pas de site';
}
else
{



avant le mysql_fetch_row()



a +


Vulgarisation informatique : Entraide, dépannage et vulgarisation informatique

Forum d'entraide informatique (14 catégories)
0
Rejoignez-nous