moteur de recherche multi pages

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : moteur de recherche multi pages

Re: moteur de recherche multi pages

par piotrowski-s » 03 juin 2012, 07:24

parfait, ça fonctionne bien, merci ....

Re: moteur de recherche multi pages

par xTG » 02 juin 2012, 22:59

Stockes les options de recherche en session.
Ainsi tu vérifies soit POST soit SESSION.

Re: moteur de recherche multi pages

par piotrowski-s » 02 juin 2012, 22:14

ah merci,

le problème c'est que maintenant quand je cliques sur la page 2, il me dit otice: Undefined variable: sql in C:\wamp\www\NEOGETCASH\GESTIONNAIRE\DOSSIERS\search.php on line 297
Call Stack
# Time Memory Function Location
1 0.2676 818440 {main}( ) ..\search.php:0

je ne sais pas comment faire pour que la requête soit reprise.

par avance merci
.

Re: moteur de recherche multi pages

par xTG » 02 juin 2012, 21:57

$retour doit être une ressource MySQL et non le nombre de n-uplet.
Tu as une variable $result qui correspond à cela.

moteur de recherche multi pages

par piotrowski-s » 02 juin 2012, 21:32

Bonsoir à tous, j'essaies de créer un formulaire multi critères, voici donc ce que j'ai fais pour le momentImage
C'est un formulaire classique au niveau des requêtes je penses que je ne m'en suis pas mal sorti même si le code est un peu brouillon:
<?php
if(isset($_POST['recherche']) AND $_POST['recherche']=="simple")
{
if(isset($_POST['mots_clefs']) AND $_POST['criteres']=="*")
{
	$sql="SELECT * FROM `debiteur` INNER JOIN `creance` ON `creance`.`n_doss` = `debiteur`.`n_doss` WHERE `debiteur`.`nom` LIKE '%".$_POST['mots_clefs']."%' OR `debiteur`.`prenom` LIKE '%".$_POST['mots_clefs']."%' OR `debiteur`.`raison_sociale` LIKE '%".$_POST['mots_clefs']."%' OR `debiteur`.`siret` LIKE '%".$_POST['mots_clefs']."%' OR `debiteur`.`adresse` LIKE '%".$_POST['mots_clefs']."%' OR `debiteur`.`adresse2` LIKE '%".$_POST['mots_clefs']."%' Or `debiteur`.`ville` LIKE '%".$_POST['mots_clefs']."%' OR `debiteur`.`code_postal` LIKE '%".$_POST['mots_clefs']."%' OR `debiteur`.`tel` LIKE '%".$_POST['mots_clefs']."%' OR `debiteur`.`tel2` LIKE '%".$_POST['mots_clefs']."%' Or `debiteur`.`fax` LIKE '%".$_POST['mots_clefs']."%' OR `debiteur`.`fax2` LIKE '%".$_POST['mots_clefs']."%' Or `debiteur`.`gsm` LIKE '%".$_POST['mots_clefs']."%' OR `debiteur`.`gsm2` LIKE '%".$_POST['mots_clefs']."%' OR `debiteur`.`e_mail` LIKE '%".$_POST['mots_clefs']."%'" ;
	
	
}
elseif(isset($_POST['mots_clefs']) AND $_POST['criteres']=="n_doss")
{
	$sql="SELECT * FROM `debiteur` INNER JOIN `creance` ON `creance`.`n_doss` = `debiteur`.`n_doss` WHERE `debiteur`.`n_doss` LIKE '%".$_POST['mots_clefs']."%'" ;
	
	
}
elseif(isset($_POST['mots_clefs']) AND $_POST['criteres']=="etat")
{
	$sql="SELECT * FROM `debiteur` INNER JOIN `creance` ON `creance`.`n_doss` = `debiteur`.`n_doss` INNER JOIN `commentaire` ON `commentaire`.`n_doss` = `creance`.`n_doss` WHERE `commentaire`.`etat` LIKE '%".$_POST['mots_clefs']."%' GROUP BY `commentaire`.`etat`" ;
	
	
}
elseif(isset($_POST['mots_clefs']) AND $_POST['criteres']=="ref_client")
{
	$sql="SELECT * FROM `debiteur` INNER JOIN `creance` ON `creance`.`n_doss` = `debiteur`.`n_doss` WHERE `creance`.`ref_client` LIKE '%".$_POST['mots_clefs']."%'" ;
	
	
}

elseif(isset($_POST['mots_clefs']) AND $_POST['criteres']=="debiteur")
{
	$sql="SELECT * FROM `debiteur` INNER JOIN `creance` ON `creance`.`n_doss` = `debiteur`.`n_doss` WHERE `debiteur`.`nom` LIKE '%".$_POST['mots_clefs']."%' OR  `debiteur`.`prenom` LIKE '%".$_POST['mots_clefs']."%' OR  `debiteur`.`raison_sociale` LIKE '%".$_POST['mots_clefs']."%' OR  `debiteur`.`siret` LIKE '%".$_POST['mots_clefs']."%'" ;
}

elseif(isset($_POST['mots_clefs']) AND $_POST['criteres']=="adresse")
{
	$sql="SELECT * FROM `debiteur` INNER JOIN `creance` ON `creance`.`n_doss` = `debiteur`.`n_doss` WHERE `debiteur`.`adresse` LIKE '%".$_POST['mots_clefs']."%' OR  `debiteur`.`adresse2` LIKE '%".$_POST['mots_clefs']."%' OR  `debiteur`.`ville` LIKE '%".$_POST['mots_clefs']."%' OR  `debiteur`.`code_postal` LIKE '%".$_POST['mots_clefs']."%'" ;
}

}
elseif (isset($_POST['recherche']) AND $_POST['recherche']=="avancee")
{;
	
	if(isset($_POST['datecreation1'])) {$dateouverture1 =  date("Y-m-d", strtotime($_POST['datecreation1'])) ;}
	if(isset($_POST['datecreation2'])) {$dateouverture2 =  date("Y-m-d", strtotime($_POST['datecreation2'])) ;}
	if(isset($_POST['dateprescription1'])) {$dateprescription1 =  date("Y-m-d", strtotime($_POST['dateprescription1'])) ;}
	if(isset($_POST['dateprescription2'])) {$dateprescription2 =  date("Y-m-d", strtotime($_POST['dateprescription2'])) ;}
	if(isset($_POST['dateecheance1'])) {$dateecheance1 =  date("Y-m-d", strtotime($_POST['dateecheance1'])) ;}
	if(isset($_POST['dateecheance2'])) {$dateecheance2 =  date("Y-m-d", strtotime($_POST['dateecheance2'])) ;}
	if(isset($_POST['mots_clefs']) AND $_POST['criteres']=="*")
{
	$sql="SELECT * FROM `debiteur` INNER JOIN `creance` ON `creance`.`n_doss` = `debiteur`.`n_doss` INNER JOIN `factures` ON `factures`.`n_doss` = `creance`.`n_doss` WHERE `debiteur`.`nom` LIKE '%".$_POST['mots_clefs']."%' OR `debiteur`.`prenom` LIKE '%".$_POST['mots_clefs']."%' OR `debiteur`.`raison_sociale` LIKE '%".$_POST['mots_clefs']."%' OR `debiteur`.`siret` LIKE '%".$_POST['mots_clefs']."%' OR `debiteur`.`adresse` LIKE '%".$_POST['mots_clefs']."%' OR `debiteur`.`adresse2` LIKE '%".$_POST['mots_clefs']."%' Or `debiteur`.`ville` LIKE '%".$_POST['mots_clefs']."%' OR `debiteur`.`code_postal` LIKE '%".$_POST['mots_clefs']."%' OR `debiteur`.`tel` LIKE '%".$_POST['mots_clefs']."%' OR `debiteur`.`tel2` LIKE '%".$_POST['mots_clefs']."%' Or `debiteur`.`fax` LIKE '%".$_POST['mots_clefs']."%' OR `debiteur`.`fax2` LIKE '%".$_POST['mots_clefs']."%' Or `debiteur`.`gsm` LIKE '%".$_POST['mots_clefs']."%' OR `debiteur`.`gsm2` LIKE '%".$_POST['mots_clefs']."%' OR `debiteur`.`e_mail` LIKE '%".$_POST['mots_clefs']."%' OR `creance`.`date_ouverture` > ".$dateouverture1." AND `creance`.`date_ouverture` < ".$dateouverture2." OR `creance`.`date_prescription` > ".$dateprescription1." AND `creance`.`date_prescription` < ".$dateprescription2." OR `factures`.`date_echue` > ".$dateecheance1." AND `factures`.`date_echue` < ".$dateecheance2."" ;
	
	
}
elseif(isset($_POST['mots_clefs']) AND $_POST['criteres']=="n_doss")
{
	$sql="SELECT * FROM `debiteur` INNER JOIN `creance` ON `creance`.`n_doss` = `debiteur`.`n_doss` INNER JOIN `factures` ON `factures`.`n_doss` = `creance`.`n_doss`  WHERE `debiteur`.`n_doss` LIKE '%".$_POST['mots_clefs']."%'  OR `creance`.`date_ouverture` > ".$dateouverture1." AND `creance`.`date_ouverture` < ".$dateouverture2." OR `creance`.`date_prescription` > ".$dateprescription1." AND `creance`.`date_prescription` < ".$dateprescription2." OR `factures`.`date_echue` > ".$dateecheance1." AND `factures`.`date_echue` < ".$dateecheance2."" ;
	
	
}
elseif(isset($_POST['mots_clefs']) AND $_POST['criteres']=="etat")
{
	$sql="SELECT * FROM `debiteur` INNER JOIN `creance` ON `creance`.`n_doss` = `debiteur`.`n_doss` INNER JOIN `commentaire` ON `commentaire`.`n_doss` = `creance`.`n_doss` INNER JOIN `factures` ON `factures`.`n_doss` = `creance`.`n_doss`  WHERE `commentaire`.`etat` LIKE '%".$_POST['mots_clefs']."%' GROUP BY `commentaire`.`etat` OR `creance`.`date_ouverture` > ".$dateouverture1." AND `creance`.`date_ouverture` < ".$dateouverture2." OR `creance`.`date_prescription` > ".$dateprescription1." AND `creance`.`date_prescription` < ".$dateprescription2." OR `factures`.`date_echue` > ".$dateecheance1." AND `factures`.`date_echue` < ".$dateecheance2."" ;
	
	
}
elseif(isset($_POST['mots_clefs']) AND $_POST['criteres']=="ref_client")
{
	$sql="SELECT * FROM `debiteur` INNER JOIN `creance` ON `creance`.`n_doss` = `debiteur`.`n_doss`  INNER JOIN `factures` ON `factures`.`n_doss` = `creance`.`n_doss` WHERE `creance`.`ref_client` LIKE '%".$_POST['mots_clefs']."%'  OR `creance`.`date_ouverture` > ".$dateouverture1." AND `creance`.`date_ouverture` < ".$dateouverture2." OR `creance`.`date_prescription` > ".$dateprescription1." AND `creance`.`date_prescription` < ".$dateprescription2." OR `factures`.`date_echue` > ".$dateecheance1." AND `factures`.`date_echue` < ".$dateecheance2."" ;
	
	
}

elseif(isset($_POST['mots_clefs']) AND $_POST['criteres']=="debiteur")
{
	$sql="SELECT * FROM `debiteur` INNER JOIN `creance` ON `creance`.`n_doss` = `debiteur`.`n_doss` INNER JOIN `factures` ON `factures`.`n_doss` = `creance`.`n_doss`  WHERE `debiteur`.`nom` LIKE '%".$_POST['mots_clefs']."%' OR  `debiteur`.`prenom` LIKE '%".$_POST['mots_clefs']."%' OR  `debiteur`.`raison_sociale` LIKE '%".$_POST['mots_clefs']."%' OR  `debiteur`.`siret` LIKE '%".$_POST['mots_clefs']."%'  OR `creance`.`date_ouverture` > ".$dateouverture1." AND `creance`.`date_ouverture` < ".$dateouverture2." OR `creance`.`date_prescription` > ".$dateprescription1." AND `creance`.`date_prescription` < ".$dateprescription2." OR `factures`.`date_echue` > ".$dateecheance1." AND `factures`.`date_echue` < ".$dateecheance2."" ;
}

elseif(isset($_POST['mots_clefs']) AND $_POST['criteres']=="adresse")
{
	$sql="SELECT * FROM `debiteur` INNER JOIN `creance` ON `creance`.`n_doss` = `debiteur`.`n_doss` INNER JOIN `factures` ON `factures`.`n_doss` = `creance`.`n_doss`  WHERE `debiteur`.`adresse` LIKE '%".$_POST['mots_clefs']."%' OR  `debiteur`.`adresse2` LIKE '%".$_POST['mots_clefs']."%' OR  `debiteur`.`ville` LIKE '%".$_POST['mots_clefs']."%' OR  `debiteur`.`code_postal` LIKE '%".$_POST['mots_clefs']."%'  OR `creance`.`date_ouverture` > ".$dateouverture1." AND `creance`.`date_ouverture` < ".$dateouverture2." OR `creance`.`date_prescription` > ".$dateprescription1." AND `creance`.`date_prescription` < ".$dateprescription2." OR `factures`.`date_echue` > ".$dateecheance1." AND `factures`.`date_echue` < ".$dateecheance2."" ;
}
}

?>
Les résultats apparaissent correctement, j'ai mis en forme un tableau et pour l'heure tout fonctionne correctement au niveau pratique.

Le soucis c'est que parfois j'ai des milliers d'enregistrement et j'aimerais pouvoir créer de multi pages j'ai donc suivi le tutoriel pour créer un livre d'or afin de m'en inspire,r mais la je bloques, en fait j'ai fais ceci:
<?php  }  
	$nombreDeMessagesParPage = 20; 
// On récupère le nombre total de messages
$retour = $num_rows;
$donnees = mysql_fetch_array($retour);
$totalDesMessages = $num_rows;
// On calcule le nombre de pages à créer
$nombreDePages  = ceil($totalDesMessages / $nombreDeMessagesParPage);
// Puis on fait une boucle pour écrire les liens vers chacune des pages
echo 'Page : ';
for ($i = 1 ; $i <= $nombreDePages ; $i++)
{
    echo '<a href="search.php?page=' . $i . '">' . $i . '</a> ';
}
  while ($d = mysql_fetch_assoc($result)); 
  mysql_free_result($result); ?>
mais la je bloque,s j'ai un message d'erreur, en fait le code initial c'etait
$retour = mysql_query('SELECT COUNT(*) AS nb_messages FROM livreor');
$donnees = mysql_fetch_array($retour);
$totalDesMessages = $donnees['nb_messages'];
mais comme moi ma requête a déjà été exécutée et que j'ai déjà le nombre de ligne grâce au mysql_num_rows, je pensais faire cela:
$retour = $num_rows;
$donnees = mysql_fetch_array($retour);
mais j'ai le droit a des messages d'erreurs.

Je ne sais pas comment le résoudre.

cela me dit: Warning: mysql_fetch_array() expects parameter 1 to be resource, string given

par avance merci pour votre aide.