Précédent   Forum des professionnels en informatique > PHP > Scripts
Scripts Forum d'entraide sur les scripts PHP téléchargés. Les meilleurs scripts PHP, la FAQ scripts PHP, toutes les FAQ PHP
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 16/11/2010, 00h34   #1
Invité de passage
 
Inscription : juin 2010
Messages : 2
Détails du profil
Informations forums :
Inscription : juin 2010
Messages : 2
Points : 0
Points : 0
Par défaut Msg d'erreur sur script qui fonctionne (!)

Bonsoir,

J'ai copier-coller une portion de code (Sincèrement je ne sais plus de qui ni d'où: je l'ai copié en prévision d'une utilisation ultérieure...) que j'ai intégrée au script suivant:
Citation:
<?php
require_once('auth.php');
require_once('config.php');
?>

<html>
<head>

<SCRIPT langage="Javascript">
function ouvre(fichier) {
ff=window.open(fichier,"popup",
"width=650,height=850,left=30,top=20") }
</SCRIPT>
</head>
<link rel="stylesheet" media="all" type="text/css" href="../../style.css" />
<?php
include('../../includes/header.php');
include('../../includes/menus.php');
?>

<div class="corp_ctn">
<center><h1>Espace priv&eacute; de <?php echo $_SESSION['SESS_FIRST_NAME'];?></h1>
<a href="member-index.php"><font color="blue">Home</font></a> | <a href="logout.php"><font color="blue">Logout</font></a></center>
<br><br><br>
<h1><font color="black">Recherche</font></h1>
<center>
<?php
mysql_connect('localhost','root','');
mysql_select_db('referentiels');
//On determine l'expression a rechercher

if(isset($_GET['recherche']))
{
$rec = htmlentities($_GET['recherche']);
}
else
{
$rec = $_GET['recherche']; ligne 38
}
//On determine le type de recherche
if(isset($_GET['type']))
{
if($_GET['type']=='un')//Un des mots
{
$type = 1;
}
elseif($_GET['type']=='tout')//Tout les mots
{
$type = 2;
}
else//L'expression exacte
{
$type = 3;
}
}
else
{
$type = 1;//type par defaut: L'expression exacte
}
//On determine si on doit surligner les mots dans les resultats
if(!isset($_GET['surligner']) or $_GET['surligner']!='true')
{
$surligner = false;
}
else
{
$surligner = true;
}
//On dertermine les identifiants, les noms et les informations des utilisateur
$req = 'SELECT id, doc_path, infos FROM docs WHERE ';
if($type==1)
{//ayant un des mots dans leurs informations
$mots = explode(' ',$rec);//En separre lexpression en mots cles
foreach($mots as $mot)
{
$req .= ' doc_path LIKE "%'.$mot.'%" OR';
}
$req .= ' 1=0';
}
elseif($type==2)
{//ayant tout des mots dans leurs informations
$mots = explode(' ',$rec);//En separre lexpression en mots cles
foreach($mots as $mot)
{
$req .= ' doc_path LIKE "%'.$mot.'%" AND';
}
$req .= ' 1=1';
}
else
{//ayant l'expression exacte dans leurs informations
$req .= 'doc_path LIKE "%'.$rec.'%"';
}
//Les utilisateur seront ranges par identifiant en ordre croissant
$req .= ' order by id asc';
$requete = mysql_query($req);
//Le formulaire de recherche
?>
<!--<FORM METHOD='get' action='<?php echo $_SERVER['PHP_SELF']?>'>-->
<FORM METHOD="get" action="">
<b><font color="green">Expression &agrave; rechercher: </font></b>
<input type="text" name="recherche" value="<?php echo $rec; ?>" /></br>
<b><font color="green">Type de recherche:</font></b>
<input type="radio" name="type" value="un"<?php if($type==1){echo 'checked="checked"';} ?> />
Un des mots <input type="radio" name="type" value="tout"<?php if($type==2){echo 'checked="checked"';} ?> />
Tout les mots <input type="radio" name="type" value="exacte"<?php if($type==3){echo 'checked="checked"';} ?> />
Expression exacte<br />
<b><font color="green">Mettre en gras les mots recherch&eacute;s: </font></b><input type="checkbox" name="surligner" value="true" <?php if($surligner){echo 'checked="checked"';} ?> /><br />
<input type="submit" value="Rechercher" />
</form>
<img src="../../graphics/fleche_B.gif"/>
<h2>R&eacute;sultats</h2>
<table>
<tr>
<th>Id</th>
<th>Path</th>
</tr>
<?php
//On affiche les resultats
while($dnn = mysql_fetch_array($requete))
{
?>
<tr>
<td><?php echo $dnn['id']; ?></td>
<td><?php echo $dnn['doc_path']; ?></td>
<td><?php
if($surligner)//Si il faut surligner les mots, on les surligne
{
if($type==3)
{
echo preg_replace('#('.preg_quote($rec).')#i', '<strong>$1</strong>', $dnn['infos']);//On surligne l'expression exacte
}
else
{
echo preg_replace('#('.str_replace(' ','|',preg_quote($rec)).')#i', '&nbsp;&nbsp;<strong>$1</strong>',$dnn['infos']);//On surligne les mots cles de la recherche
}
}
else
{
echo '&nbsp;&nbsp;<font color="gray">'.$dnn['infos'];//On ne surligne pas
}
?></td>
</tr>
<?php
}
?>
</table>
</center>
J'ai ce message d'erreur chaque fois que la page est lancée:
Citation:
Notice: Undefined index: recherche in C:\wamp\www\REF1.2_ter\interface-Praticien\members\find-doc.php on line 38
-> le message d'erreur ne s'affiche plus après la première recherche.

Le script fonctionne donc..mais c'est le message d'erreur qui est gênant!

Merci de m'expliquer!
lebiopsy est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/11/2010, 00h49   #2
Modérateur
 
Avatar de Benjamin Delespierre
 
Benjamin Delespierre
Développeur Web
Inscription : février 2010
Messages : 2 936
Détails du profil
Informations personnelles :
Nom : Benjamin Delespierre
Âge : 24
Localisation : France

Informations professionnelles :
Activité : Développeur Web
Secteur : High Tech - Opérateur de télécommunications

Informations forums :
Inscription : février 2010
Messages : 2 936
Points : 4 935
Points : 4 935
Bonsoir

Le problème vient de là :
Code :
1
2
3
4
5
6
7
8
9
if(isset($_GET['recherche']))
{
$rec = htmlentities($_GET['recherche']);
}
else
{
// Ici $_GET['recherche'] est indéfini
$rec = $_GET['recherche']; ligne 38
}
Fait:
Code :
1
2
 
$rec= isset($_GET['recherche']) ? htmlentities($_GET['recherche']) : '';
à la place de tout ça et c'est dans la poche.

Pour expliquer: quand tu tentes d'adresser un indice de tableau non défini au préalable, tu ramasse toujours une erreur de ce genre. $_GET est un tableau et n'échape pas à la règle.
Tu peux toujours modifier l'error reporting pour ne plus voir ce genre d'erreur mais... oublie je n'ai pas dit ça : voir les erreurs est une bonne chose.
Benjamin Delespierre est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/11/2010, 00h10   #3
Invité de passage
 
Inscription : juin 2010
Messages : 2
Détails du profil
Informations forums :
Inscription : juin 2010
Messages : 2
Points : 0
Points : 0
Magique!
Le message d'erreur ne s'affiche plus.
Merci Benjamin!
lebiopsy est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 17h44.


 
 
 
 
Partenaires

Hébergement Web