mon Script ne fait pas de recherche dans la base de données

HTML5, CSS3, Javascript, support des mobiles... Que penser de votre site ? Vous manquez d'informations pour la construction d'un site qui puisse s'afficher correctement partout ? C'est un problème simple, un peu complexe ? Venez ici !
mysselove

mon Script ne fait pas de recherche dans la base de données

Message par mysselove »

Bonjour à tous,
SVP j'ai un sérieux problème que j’essaie de résoudre en vain depuis une semaine. Voilà, je suis entrain de créer un annuaire téléphonique contenant tous les numéros de téléphones et les adresses mails de mon pays, en fait il s'agit de créer un moteur de recherche interne quoi. mais voilà le problème le script permettant d'effectuer la recherche dans la base de données m'affiche une erreur SQL que je n'arrive pas à comprendre pourtant pour moi tout est bien fait mais là je ne comprends rien.
SVP aidez moi à résoudre ce problème pardon si quelqu'un peut trouver une solution à çà ou m'aider à modifier ce script vraiment je lui serais très reconnaissant.

Voilà le script en question:

Code : Tout sélectionner

// page index.php  (page principale du site)

<html>
<head>

<script language="JavaScript">
<!--
function couleur(obj) {
     obj.style.backgroundColor = "#FFFFFF";
}
 
function check() {
	var msg = "";
 
		
 
if (document.search1.phone_search.value == "")	{
		msg += "Veuillez remplir tous les champs SVP!\n";
		document.search1.phone_search.style.backgroundColor = "#F3C200";
	}
  
	if (msg == "") return(true);
	else	{
		alert(msg);
		return(false);
	}
}
//-->
</script>




<link href="styles.css" rel="stylesheet" type="text/css" />

<title> Annuaire </title>
</head>



<body>







<div id="header">
		<a href="index.php"> Annuaire Téléphonique</a> &nbsp; |
		<a href="mails.php"> Annuaire de Mails</a>     &nbsp; |
		<a href="add_phone.php"> Ajouter un Numéro</a>     &nbsp; |
		<a href="add_mail.php"> Ajouter un Mail</a>        &nbsp; |
		<a href="contact.php"> Nous Contacter</a>
</div>

<div id="content">
		<table celspacing="3" celpadding="3" border="0" >
			<tr>
				<td>	<br><font color="green"> My </font> <font color="red"> phone</font> <font color="yellow"> book</font></td>
				<td> <img src="images/recherche.jpg"> </td>
			</tr>
		
		<tr>
				<td colspan="2">	
									<form name="search1" action="search3.php" method="post" enctype="application/x-www-form-urlencoded"  onSubmit="return check();">
										 <input type="text" name="phone_search" size="50" onKeyUp="javascript:couleur(this);">
										 <input type="submit" value="Chercher"> 
									</form>
				</td>
				
		</tr>
		



</div>





</body>
</html>





// page search3.php  ( la page en question où se trouve le problème et où l'on doit être redirigé si on a trouvé quelque chose dans la base de données )


<?php
function barre_navigation ($nb_total, 
      $nb_affichage_par_page, 
      $debut, 
      $nb_liens_dans_la_barre) { 
 
   $barre = ''; 
   
   // on recherche l'URL courante munie de ses paramètre auxquels on ajoute le paramètre 'debut' qui jouera le role du premier élément de notre LIMIT
   if ($_SERVER['QUERY_STRING'] == "") { 
      $query = $_SERVER['PHP_SELF'].'?debut='; 
   } 
   else { 
      $tableau = explode ("debut=", $_SERVER['QUERY_STRING']); 
      $nb_element = count ($tableau); 
      if ($nb_element == 1) { 
         $query = $_SERVER['PHP_SELF'].'?'.$_SERVER['QUERY_STRING'].'&debut='; 
      } 
      else { 
         if ($tableau[0] == "") { 
            $query = $_SERVER['PHP_SELF'].'?debut='; 
         } 
         else { 
            $query = $_SERVER['PHP_SELF'].'?'.$tableau[0].'debut='; 
         } 
      } 
   } 
   
   // on calcul le numéro de la page active
   $page_active = floor(($debut/$nb_affichage_par_page)+1); 
   // on calcul le nombre de pages total que va prendre notre affichage
   $nb_pages_total = ceil($nb_total/$nb_affichage_par_page); 
   
   // on calcul le premier numero de la barre qui va s'afficher, ainsi que le dernier ($cpt_deb et $cpt_fin)
   // exemple : 2 3 4 5 6 7 8 9 10 11 << $cpt_deb = 2 et $cpt_fin = 11
   if ($nb_liens_dans_la_barre%2==0) { 
      $cpt_deb1 = $page_active - ($nb_liens_dans_la_barre/2)+1; 
      $cpt_fin1 = $page_active + ($nb_liens_dans_la_barre/2); 
   } 
   else { 
      $cpt_deb1 = $page_active - floor(($nb_liens_dans_la_barre/2)); 
      $cpt_fin1 = $page_active + floor(($nb_liens_dans_la_barre/2)); 
   } 
   
   if ($cpt_deb1 <= 1) { 
      $cpt_deb = 1; 
      $cpt_fin = $nb_liens_dans_la_barre; 
   } 
   elseif ($cpt_deb1>1 && $cpt_fin1<$nb_pages_total) { 
      $cpt_deb = $cpt_deb1; 
      $cpt_fin = $cpt_fin1; 
   } 
   else { 
      $cpt_deb = ($nb_pages_total-$nb_liens_dans_la_barre)+1; 
      $cpt_fin = $nb_pages_total; 
   } 
 
   if ($nb_pages_total <= $nb_liens_dans_la_barre) { 
      $cpt_deb=1; 
      $cpt_fin=$nb_pages_total; 
   } 
   
   // si le premier numéro qui s'affiche est différent de 1, on affiche << qui sera un lien vers la premiere page
   if ($cpt_deb != 1) { 
      $cible = $query.(0); 
      $lien = '<A HREF="'.$cible.'"><<</A>&nbsp;&nbsp;'; 
   } 
   else { 
      $lien=''; 
   } 
   $barre .= $lien; 
 
   // on affiche tous les liens de notre barre, tout en vérifiant de ne pas mettre de lien pour la page active
   for ($cpt = $cpt_deb; $cpt <= $cpt_fin; $cpt++) { 
      if ($cpt == $page_active) { 
         if ($cpt == $nb_pages_total) { 
            $barre .= $cpt; 
         } 
         else { 
            $barre .= $cpt.'&nbsp;-&nbsp;'; 
         } 
      } 
      else { 
         if ($cpt == $cpt_fin) { 
            $barre .= "<A HREF='".$query.(($cpt-1)*$nb_affichage_par_page); 
            $barre .= "'>".$cpt."</A>"; 
         } 
         else { 
            
            $barre .= "<A HREF='".$query.(($cpt-1)*$nb_affichage_par_page); 
            $barre .= "'>".$cpt."</A>&nbsp;-&nbsp;"; 
         } 
      } 
   } 
   
   $fin = ($nb_total - ($nb_total % $nb_affichage_par_page)); 
   if (($nb_total % $nb_affichage_par_page) == 0) { 
      $fin = $fin - $nb_affichage_par_page; 
   } 
 
      // si $cpt_fin ne vaut pas la dernière page de la barre de navigation, on affiche un >> qui sera un lien vers la dernière page de navigation
   if ($cpt_fin != $nb_pages_total) { 
      $cible = $query.$fin; 
      $lien = '&nbsp;&nbsp;<A HREF="'.$cible.'">>></A>'; 
   } 
   else { 
      $lien=''; 
   } 
   $barre .= $lien; 
 
   return $barre;   
}  
?>





<html>
<head>

<script language="JavaScript">
<!--

function couleur(obj) {
     obj.style.backgroundColor = "#FFFFFF";
}
 
function check() {
	var msg = "";
 
		
 
if (document.search1.phone_search.value == "")	{
		msg += "Veuillez remplir tous les champs SVP!\n";
		document.search1.phone_search.style.backgroundColor = "#F3C200";
	}
  
	if (msg == "") return(true);
	else	{
		alert(msg);
		return(false);
	}
}
//-->
</script>




<link href="styles.css" rel="stylesheet" type="text/css" />

<title> Annuaire </title>
</head>



<body>


<div id="header">
		<a href="index.php"> Annuaire Téléphonique</a> &nbsp; |
		<a href="mails.php"> Annuaire de Mails</a>     &nbsp; |
		<a href="add_phone.php"> Ajouter un Numéro</a>     &nbsp; |
		<a href="add_mail.php"> Ajouter un Mail</a>        &nbsp; |
		<a href="contact.php"> Nous Contacter</a>
</div>

<div id="content1">
		<table celspacing="3" celpadding="3" border="0" class="table">
			<tr>
				<td>	<br><font color="green"> My </font> <font color="red"> phone</font> <font color="yellow"> book</font></td>
				<td> 
									<br><br><form name="search1" action="search1.php" method="post" enctype="application/x-www-form-urlencoded"  onSubmit="return check();">
										 <input type="text" name="phone_search" size="50" onKeyUp="javascript:couleur(this);">
										 <input type="submit" value="Chercher"> 
									</form> 
				</td>
				<td> <img src="images/recherche.jpg"> </td>
			</tr>
			<tr>
				<td colspan="3">	
						<div id="result">
						
						
							<?php
// on se connecte à notre base
$base = mysql_connect ('localhost', 'root', '');  
mysql_select_db ('annuaire', $base);  
 
 if ((isset($_POST['phone_search'])) && (!empty($_POST['phone_search']))){ 
  
  $search = $_POST['phone_search'] ;
// on prépare une requête permettant de calculer le nombre total d'éléments qu'il faudra afficher sur nos différentes pages
$sql = "SELECT count(*) FROM contact_phone where name LIKE '%$search%' or phone_seacrh LIKE '%$search%'";  
 
// on exécute cette requête
$resultat = mysql_query($sql) or die('Erreur SQL !<br />'.$sql.'<br />'.mysql_error());  
 
// on récupère le nombre d'éléments à afficher
$nb_total = mysql_num_rows($resultat);  
 
// on teste si ce nombre ne vaut pas 0
if ($nb_total == 0) {  
echo 'Aucune réponse trouvée';  
}  
else { 
   echo '<table celspacing="3" celpadding="3" border="0" class="table2">
										<tr>
											<td class="td">	Noms & Prénoms</td>
											<td class="td">	Ville </td>
											<td class="td">	N° Tél</td>
											<td class="td">	Adresse Mail</td>
											
										</tr>';  
   
// sinon, on regarde si la variable $debut n'a pas déjà été déclarée, et dans ce cas, on l'initialise à 0
if (!isset($_GET['debut'])) {$_GET['debut'] = 0;} 
   
   $limite = $_GET['debut'];
   $nb_affichage_par_page = 30; 
  
// Préparation de la requête avec le LIMIT
$sql = "SELECT * FROM contact_phone where name LIKE '%$search%' or phone_seacrh LIKE '%$search%' ORDER BY name ASC LIMIT '.$limite.','.$nb_affichage_par_page";  
 
// on exécute la requête
$req = mysql_query($sql) or die('Erreur SQL !<br />'.$sql.'<br />'.mysql_error());  
 
// on va scanner tous les tuples un par un
while ($data = mysql_fetch_array($req)) {  
// on affiches les résultats dans la <table>
echo '
			<tr>
					<td class="td1">' , htmlentities(trim($data['name'])) ,'              </td>
					<td class="td1">' , htmlentities(trim($data['ville'])) , '               </td>
					<td class="td1">' , htmlentities(trim($data['phone_seacrh'])) , '</td>
					<td class="td1">' , htmlentities(trim($data['mail_search'])) , '</td>
											
			</tr>';  
}  
 
// on libère l'espace mémoire alloué pour cette requête
mysql_free_result ($req); 
   echo '</table><br />'; 
 
   // on affiche enfin notre barre
   echo '<span class="barre">'.barre_navigation($nb_total, $nb_affichage_par_page, $_GET['debut'], 3).'</span>';  
} 
}
else{ echo'veuillez remplir tous les champs svp!';
}
// on libère l'espace mémoire alloué pour cette requête
mysql_free_result ($resultat);  
// on ferme la connexion à la base de données.
mysql_close ();  
echo '</table><br />';  
  
?>
						</div>				
				
				</td>
				
			</tr>
		
		



</div>





</body>
</html>
calimo
Animal mythique
Messages : 14118
Inscription : 26 déc. 2003, 11:51

Re: mon Script ne fait pas de recherche dans la base de donn

Message par calimo »

Salut,

Sans le message d'erreur ni le schéma de base de données, on ne peut que faire des hypothèses, mais quand je vois
mysselove a écrit :

Code : Tout sélectionner

$sql = "SELECT count(*) FROM contact_phone where name LIKE '%$search%' or phone_seacrh LIKE '%$search%'";
je me dis qu'iol y a certainement une inversion entre le r et le c dans phone_seacrh.

Si ce n'est pas ça, donne-nous la commande qui est générée, le schéma de la base de données et le message d'erreur.


PS: si tu étais inscrit je l'aurais envoyé par MP, mais je suis obligé de le faire en public : tu as une bonne grosse injection SQL à corriger d'urgence !
Vivienb
Arias
Messages : 1
Inscription : 19 déc. 2011, 16:52

Re: mon Script ne fait pas de recherche dans la base de donn

Message par Vivienb »

Qui plus est pour vos scripts n'hésitez pas à mettre entre guillemet simple (ou apostrophe) les parties qui n’ont pas à être lus pas PHP. En effet, avec des guillemets doubles PHP lit le contenu alors qu'avec des simples il le saute tout simplement, vous faisans gagner quelques millisecondes :p
Répondre

Qui est en ligne ?

Utilisateurs parcourant ce forum : Aucun utilisateur inscrit et 1 invité