placer un message d'erreur dans une recherche

Eléphanteau du PHP | 45 Messages

17 sept. 2005, 11:03

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

Mammouth du PHP | 19672 Messages

17 sept. 2005, 11:17

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";
}
?>
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Eléphant du PHP | 281 Messages

17 sept. 2005, 11:21

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:

Mammouth du PHP | 19672 Messages

17 sept. 2005, 11:54

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:
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Eléphanteau du PHP | 45 Messages

19 sept. 2005, 11:05

: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