probleme de notice: variable indefined

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 : probleme de notice: variable indefined

par fersayn » 28 sept. 2005, 10:24

merci beaucoup!!! ca marche :wink:

par Invité » 28 sept. 2005, 10:21

merci beaucoup!!!
ca marche :wink:

par Cyrano » 28 sept. 2005, 09:10

2
if($debut=="")	{ 
	$debut=0;
} 
a remplacer par
if(!isset($debut))	{ 
	$debut=0;
}
Attention, une variable peut être définie mais vide: isset() vérifie qu'une variable est définie alors que tester si $var == "" part du principe que la variable est déjà définie : donc on peut utiliser les deux formulation en combinaison,mais pas remplacer l'un par l'autre:
id(!isset($debut) || $debut == "")
{
    //... tec...
Maintenant, le problème vient de ce que les variables ne sont pas récupérer. J'ai des raisons de croire qu'elle doivent arriver d'un formulaire. Il faut donc les récupérer et initialiser les variable avant leur utilisation: par exemple, $debut doit être initialisé de la manière suivante:
/* Récupération des valeurs du formulaire */
$mot = isset($_POST['mot']) ? $_POST['mot'] : "";
Ce qui veut dire en clair que si une valeur est envoyée, alors $debut vaut cette valeur, sinon $debut vaut "chaine vide".

Fais pareil pour les autres valeurs non définies selon leur provenance.

par DocType » 28 sept. 2005, 04:16

Très très mauvais script à mon goût...trop inadapté ! :?

1
$mot ==> a remplacer !
On utilise aujourd'hui pour recupérer les variables des formulaires $_POST["ta_variable"] dans ton cas.

2
if($debut=="")	{ 
	$debut=0;
} 
a remplacer par
if(!isset($debut))	{ 
	$debut=0;
}
3
$debut=$page*$limit;
D'où sort $debut ??? :?

Mon conseil serait que tu créé toi-même ton script car là...c'est un peu le bordel...
Tu seras bcp mieux à le créer toi-même. Si tu débute, une bonne slution et de faire du pseudo code (tu ecris les etapes logique style si taratata alors taratata ou taratata fin de si). CEla t'avancera a bien mieux avancer :wink:

probleme de notice: variable indefined

par fersayn » 28 sept. 2005, 01:07

bonjour,
je suis nouveau en php et je ne comprends pas.
j'ai fais une base de donnée mysql et je veux integrer un moteur de recherche.
j'ai trouvé un script que j'ai adapté, la connexion à la base de données se fait bien mais il me renvoit trois erreurs de notice qui sont les suivantes:
Notice: Undefined variable: mot in c:\program files\easyphp1-8\www\recherche.php3 on line 50

Notice: Undefined variable: debut in c:\program files\easyphp1-8\www\recherche.php3 on line 66

Notice: Undefined variable: page in c:\program files\easyphp1-8\www\recherche.php3 on line 67
Veuillez saisir un ou plusieurs mot-clés avant de cliquer sur 'OK' !


or je ne comprends pas ou sont les erreurs pour moi les variables sont bien definies.

voici le code que j'utilise:

Code : Tout sélectionner

<html> <head> <title>Résultat de la recherche</title> <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> </head> <body text="#FFFFFF" bgcolor="#000000" link="#9999FF" vlink="#6699FF" alink="#FFFF00"> <font face="Verdana" size=2> <form action="recherche.php3" method="post"> Saisissez un ou plusieurs mots : <input type="text" name="mot" size="20"> <input type="submit" value="Rechercher"> </form> <? /****************************************************************** * VARIABLES A MODIFIER ******************************************************************/ // NOMBRE DE RESULTATS PAR PAGE $limit=2; // NOM DE CE SCRIPT $script_name="recherche.php3"; // SERVEUR SQL $sql_serveur="localhost"; // LOGIN SQL $sql_user="root"; // MOT DE PASSE SQL $sql_passwd=""; // BASE DE DONNEE $sql_bdd="documentaire"; // RECHERCHE AVEC TOUS LES MOTS : METTEZ "and" // RECHERCHER LES PAGES QUI CONTIENNENT AU MOINS UN MOT : METTEZ "or" $et_ou="or"; /****************************************************************** * PROGRAMME PRINCIPAL ******************************************************************/ $db_link = mysql_connect("$sql_serveur","$sql_user","$sql_passwd"); [b]$mot=strtolower($mot);[/b] $mots=split(" ",$mot); $nombre_mots=count($mots); $z=1; $texte="Pages contenant <b>"$mots[0]"</b>"; $phrase="'%$mots[0]%'"; while($z<$nombre_mots) { $phrase.=" ".$et_ou." mots like '%$mots[$z]%'"; $texte.=" "; if($et_ou=="or"){$texte.="et";}else{$texte.="ou";} $texte.=" <b>"$mots[$z]"</b>"; $z++; } [b]if($debut==""){$debut=0;}[/b] [b]$debut=$page*$limit;[/b] // NOMBRE TOTAL D'ENREGISTREMENTS REPONDANT A LA REQUETE $requete=mysql_db_query("$sql_bdd","select count(*) from recherche where mots like $phrase order by id",$db_link); $nb_total=mysql_result($requete,0,"count(*)"); $requete=mysql_db_query("$sql_bdd","select * from recherche where mots like $phrase limit $debut,$limit",$db_link); $num=mysql_num_rows($requete); // DEFINITION DU MESSAGE A AFFICHER if ($num==0) {echo "Désolé, aucune page de ce site ne contient <b>$mot</b>...";} else if ($mot=="") {echo "Veuillez saisir un ou plusieurs mot-clés avant de cliquer sur 'OK' !";} else if (strlen($mot)<2) {echo "Veuillez saisir au moins 2 caractères.";} // AFFICHAGE DES RESULTATS else { echo "<b>$nb_total</b> r&eacute;ponse"; if ($nb_total>1) {echo "s";} echo "<br>$texte"; $i=0; while($i<$num) { $url=mysql_result($requete,$i,"url"); $description=mysql_result($requete,$i,"description"); $titre=mysql_result($requete,$i,"titre"); echo "<br><br><a href=\"$url\"><b>$titre</b></a><br>$description<br><font size=1>$url</font>\n"; $i++; } echo "<br><br>"; // AFFICHAGE DU LIEN PRECEDENT SI BESOIN EST // (LA PREMIERE PAGES EST 0) if ($page>0) { $precedent=$page-1; print "<a href=\"$script_name?page=$precedent&mot=$mot\">PRECEDENT</a>&nbsp;\n"; } // AFFICHAGE DES NUMEROS DE PAGE $i=0;$j=1; if($nb_total>$limit) { while($i<($nb_total/$limit)) { if($i!=$page){echo "(<a href=\"$script_name?page=$i&mot=$mot\">$j</a>)&nbsp;";} else {echo "<b>($j)</b>&nbsp;";} $i++;$j++; } } // AFFICHAGE DU LIEN SUIVANT SI BESOIN EST if($debut+$limit<$nb_total) { $suivant=$page+1; echo "<a href=\"$script_name?page=$suivant&mot=$mot\">SUIVANT</a>"; } } // DECONNEXION DE LA BASE DE DONNEE mysql_close($db_link); ?> </font> </body> </html>
si quelqu'un peut m'aider, merci
En gras ce sont les lignes qui sont concernées