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> |
<a href="mails.php"> Annuaire de Mails</a> |
<a href="add_phone.php"> Ajouter un Numéro</a> |
<a href="add_mail.php"> Ajouter un Mail</a> |
<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> ';
}
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.' - ';
}
}
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> - ";
}
}
}
$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 = ' <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> |
<a href="mails.php"> Annuaire de Mails</a> |
<a href="add_phone.php"> Ajouter un Numéro</a> |
<a href="add_mail.php"> Ajouter un Mail</a> |
<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>