ya du tonus
Invité n'ayant pas de compte PHPfrance
17 déc. 2010, 18:28
j'ai bien mis
ini_set('mysql.trace_mode', true);
au début de la page mais aucun message n'apparaît.
impossible de comprendre pour quoi la variable result_id n'est pas le bon argument pour mysql_fetch_row()
je vous donne une grande partie du code. avec la fonction de moteur de rercherche
<?php function requete($table, $champs, $select, $order, $sens, $limit_start, $limit_nb, $count = '')
{
// option de recherche
$option = $_GET['option'];
// texte de recherche
$search = $_GET['search'];
// si c'est le premier appel de la fonction
if(!isset($fonction_requete))
{
static $fonction_requete = 1;
// si "Rechercher tous les mots" ou "Rechercher un de ces mots"
if($option == 'all' || $option == 'one')
{
// liste des mots
$mots = explode(' ', $search);
// sépararateur
if($option == 'all')
$sep = ' AND ';
else
$sep = ' OR ';
} // if($option == 'all' || $option == 'one')
// "Rechercher l'expression exacte"
else
{
$mots = $search;
$sep = '';
}
} // if(!isset($fonction_requete))
if(!is_array($champs))
$champs = array($champs);
if($option == 'all' || $option == 'one')
{
// pour savoir si on en est à la première itération ou non
$i = 0;
// pour tous les mots
foreach($mots as $mot)
{
if(!$i)
{
$search = '~ ^!|!^ ~ LIKE \'%' . $mot . '%\'';
$i = 1;
}
else
$search .= $sep . '~ ^!|!^ ~ LIKE \'%' . $mot . '%\'';
} // foreach($mots as $mot)
} // if($option == 'all' || $option == 'one')
else if($option == 'sentence')
$search = '~ ^!|!^ ~ LIKE \'%' . $mots . '%\'';
$i = 0;
// début de requête
if(empty($count))
$req_search = 'SELECT ' . $select . ' FROM ' . $table . ' WHERE ';
else
$req_search = 'SELECT count(' . $count . ') FROM ' . $table . ' WHERE ';
// ajout des champs
foreach($champs as $champ)
{
if(!$i)
{
$req_search .= '( ' . str_replace('~ ^!|!^ ~', $champ, $search) .' ) ';
$i = 1;
}
else
$req_search .= 'OR ( ' . str_replace('~ ^!|!^ ~', $champ, $search) .' ) ';
}
if(empty($count))
$req_search .= "ORDER BY $order $sens LIMIT $limit_start, $limit_nb";
return $req_search;
}
try
{
// On se connecte à MySQL
$bdd = new PDO('mysql:host=localhost;dbname=admin', 'xxx', 'xxx');
}
catch(Exception $e)
{
// En cas d'erreur, on affiche un message et on arrête tout
die('Erreur : '.$e->getMessage());
}
$table= 'stock' ;
$champs= array('ref','auteur','titre', 'description','commentaire','prix');
$select= 'ref, auteur, titre, description, commentaire, prix';
$order='ref';
$sens= 'DESC';
include ("fct_page.php");
# $count: paramètre optionnel: Si est vide ou non-passé, la requête est crée normaleme
//on rajoute ces infos avant sa requete
$d = $_GET['d'];
if(!isset($_GET['l'])) $_GET['l']=4; //pour avoir que 4 enregistrements par page par exemple
if(!isset($_GET['d'])) $_GET['d']=0; //on affiche en premier l'enregistrement 0 (le premier) par défaut
$limit_start = $_GET['d'];
$limit_nb=$_GET['l'];
$requete = requete($table, $champs, $select, $order, $sens, $limit_start, $limit_nb);
$result = $bdd->query($requete);
$requete_id = requete($table, $champs, $select, $order, $sens, $limit_start, $limit_nb,'*');
$result_id = $bdd->query($requete_id);
$row = mysql_fetch_row($result_id);
$total = $row[0];
$barrenavig = gestion_pages($_GET['d'],$_GET['l'],$total,$search,$option);
?>