Page 1 sur 1

placer un message d'erreur dans une recherche

Posté : 17 sept. 2005, 11:03
par archos6
J'ai fais une page de recherche de référence dans une base de données qui fonctionne bien. Mais j ai du mal à placer un message quand la requête ne trouve pas la fiche de la référence qui est indiquée dans le champ recherche du formulaire.

Je voudrais placer un header:("location:erreur.php");

je sais pas trop comment le placer.

peut être y a t il une autre solution que le header.

C'est du code crée avec Dreamweaver.

j ai mis la partie du code concernant la requête.

Code : Tout sélectionner

$colname_rstableau = "ref18"; // la fiche ref18 s'affiche lors du premier accès à la page if (isset($_GET['VARreference'])) { $colname_rstableau = (get_magic_quotes_gpc()) ? $_GET['VARreference'] : addslashes($_GET['VARreference']); } // requête mySql mysql_select_db($database_artnetvideo1, $artnetvideo1); $query_rstableau = sprintf("SELECT * FROM articles WHERE reference LIKE '%%%s%%'", $colname_rstableau); $query_limit_rstableau = sprintf("%s LIMIT %d, %d", $query_rstableau, $startRow_rstableau, $maxRows_rstableau); $rstableau = mysql_query($query_limit_rstableau, $artnetvideo1) or die(mysql_error()); $row_rstableau = mysql_fetch_assoc($rstableau);
Merci d avance votre forum est très intéressant et compétant

Posté : 17 sept. 2005, 11:17
par Cyrano
Pourquoi un header : affiche un message s'il n'y a aucun résultat et un lien de retour vers le formulaire de recherche. Ton code un peu nettoyé :
<?php
$colname_rstableau = "ref18";  //  la fiche ref18 s'affiche lors du premier accès à la page

if (isset($_GET['VARreference']))
{
    $colname_rstableau = (get_magic_quotes_gpc()) ? $_GET['VARreference'] : addslashes($_GET['VARreference']);
}

// requête mySql

mysql_select_db($database_artnetvideo1, $artnetvideo1);

$sql = "SELECT * FROM articles WHERE reference LIKE '%". $colname_rstableau ."%' LIMIT ".$startRow_rstableau .", ". $maxRows_rstableau;

$rstableau = mysql_query($sql, $artnetvideo1) or die(mysql_error());
if(mysql_num_rows($rstableau) > 0)
{
    $row_rstableau = mysql_fetch_assoc($rstableau);
}
else
{
    $erreur = "Aucun résultat pour cette référence";
}
?>

Posté : 17 sept. 2005, 11:21
par Ouaibou
Salut,

Hardu quand même le morceau de code :oops:
Ouf le nom des variables
$colname_rstableau = "ref18";  //  la fiche ref18 s'affiche lors du premier accès à la page

if (isset($_GET['VARreference'])) {
  $colname_rstableau = (get_magic_quotes_gpc()) ? $_GET['VARreference'] : addslashes($_GET['VARreference']);
}

// requête mySql

mysql_select_db($database_artnetvideo1, $artnetvideo1);
$query_rstableau = sprintf("SELECT * FROM articles WHERE reference LIKE '%%%s%%'", $colname_rstableau);
$query_limit_rstableau = sprintf("%s LIMIT %d, %d", $query_rstableau, $startRow_rstableau, $maxRows_rstableau);

$rstableau = mysql_query($query_limit_rstableau, $artnetvideo1) or die(mysql_error());

//-- Bout de code rajouté
//-- On compte le nombre de résultat & redirection si aucun

$nb = mysql_num_rows($rstableau);

if($nb == 0) {

     header:("location:erreur.php");

}

//--

$row_rstableau = mysql_fetch_assoc($rstableau); 
Regarde ou j'ai écrit Bout de code rajouté, si je me suis pas trompé ça devrait marcher.

Ca devrait te permettre de compter le nombre d'enregistrement trouvé. Donc si aucun, on redirige.

Edition : Oups devancé :roll:

Posté : 17 sept. 2005, 11:54
par Cyrano
Modération : archos6 : pas de double post, j'ai balancé l'autre à la poubelle : que ça ne se reproduise pas, surtout quand on a répondu au premier :evil:

résolu

Posté : 19 sept. 2005, 11:05
par archos6
:D

Le bout de code ajouté Ouaibon fonctionne très bien. J ai préféré ta solution car elle ne touche pas au code PHP de Dreamweaver.

je fonctionne avec l'editeur de code de Dreamweaver c'est peut être pour cela que le code semble plus hard.

:o merci aussi à Cyrano