contrôle sur test vide [php && ajax]

x@v
Mammouth du PHP | 570 Messages

04 avr. 2007, 03:08

Bonjour,
je planche sur une fonction qui se charge démarage mais elle sert ensuite pour afficher tout le site (tout vient d'une base).
http://88.167.164.83/avenir_formation_livrer/
Donc si c'est vide la page d'accueil s'affiche, l'ennui c'est que si un lien n'à pas de contenu, j'aimerai prévenir les utilisateurs que le contenu est vide ex:

Code : Tout sélectionner

Le contenu est en cour de réécriture.... blabla
donc avec ce que je fait si le contenu est vide, sa affiche la page d'accueil !
$requete="select * from article where page='$page' and creer is not null group by titre";
$recule=mysql_query($requete) or mysql_error();
if(mysql_num_rows($recule) == 0) {
	$requete="select * from article where titre='Accueil'";
	$affiche=mysql_query($requete) or mysql_error();
	$affiche= mysql_fetch_assoc($affiche);
	$txt .= '<div><p class="">'.$affiche['titre'];
	$txt .= '<div class="">'.stripslashes(ucfirst($affiche['article_text'])).'</div>';
	$txt .= '';
	}
while($test= mysql_fetch_assoc($recule)) {
	$txt .= '<div class="">'.stripslashes(ucfirst($test['article_text'])).'</div>';
	$title='Avenir-formations.org';
	$txt .= $title.'/'.$test['article_text'];
	}
Merci d'avance
PS: j'essaie d'être précis, c'est pas évident.[/code]

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

04 avr. 2007, 08:37

Euh... en l'occurence, dans ton test tu n'affiches la page d'accueil que quand aucun élément n'est trouvé en base. Pas si l'élément est vide. Il suffirait de créer un enregistrement dans ta table pour que la page d'accueil ne soit pas chargée. Tu n'aurais alors qu'à faire un test dans ta boucle pour vérifier si l'enregistrement récupéré est vide et dans ce cas affiché ton message :)

Ou tu pourrais ne charger l'accueil que si la variable $page n'est pas spécifiée, dans tous les autres cas tu charges la page et le test sur le nombre d'enregistrements te permet de savoir que la page est vide... bref y a sans doute plein de façon de le faire :)
Ce n'est pas en améliorant la bougie que l'on a inventé l'ampoule...

x@v
Mammouth du PHP | 570 Messages

05 avr. 2007, 16:44

C'est à dire un

Code : Tout sélectionner

isset($page)
test l'existance et

Code : Tout sélectionner

if($page=='')
test si la variable est vide la frontière est infime.

Code : Tout sélectionner

Ou tu pourrais ne charger l'accueil que si la variable $page n'est pas spécifiée, dans tous les autres cas tu charges la page et le test sur le nombre d'enregistrements te permet de savoir que la page est vide... bref y a sans doute plein de façon de le faire Smile

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

05 avr. 2007, 16:53

Ah bah infime peut être, mais bel et bien réelle, et il n'en faut pas plus à un système qui ne fonctionne qu'avec des 1 et des 0 pour lui dire que si c'est pas 1, c'est que c'est 0 ;)

Ceci dit, je pensais plus à quelque chose du genre :
$affiche = null;

if (!isSet($page)) { // charge la page d'accueil par défaut
  $requete = "..."; 
  $affiche = mysql_query($requete) or mysql_error(); 
}
else { // charge la page demandée
  $requete = "..."; 
  $affiche = mysql_query($requete) or mysql_error(); 
}

if (mysql_num_rows($affiche) > 0) { // s'il y a des enregistrements trouvés
  $txt = "...";
}
else { // s'il n'y en a pas
  $txt = "Le contenu est en cour de réécriture.... blabla";
}
Ce n'est pas en améliorant la bougie que l'on a inventé l'ampoule...

x@v
Mammouth du PHP | 570 Messages

09 avr. 2007, 04:41

finalement c'est une bonne solution, merci Ryle