Forums Webou.net - Hébergement gratuit et sans publicités avec PHP/MySQL

Programmation => PHP/MySQL - (x)HTML - ... => Discussion démarrée; par: ventearticles le 17 Mai 2010, 10:56:33



Titre: Petit moteur de recherche interne en php
Posté par: ventearticles le 17 Mai 2010, 10:56:33
Bonjour à tous, je débute dans la programmation en php (pour l'instant, je ne fais que créer des programmes lus dans des livres de ce thème).

Ainsi, j'ai décidé de placer un petit moteur de recherche pour mon site dans le but de le rendre plus complet (http://www.ventearticles.webou.net).

Cependant, lorsque je le mets en ligne, j'ai cette erreur :

Fatal error: Call to undefined function teste() in /home/venteart/public_html/mrech.php on line 76

dans cette portion du code concernée:
//Examen des fichiers
foreach($fhtm as $fnam){
$fich=fopen($fnam, 'r');
$texte=strtoupper(fread($fich, 32000));
fclose($fich);
if (teste()){
   $page.='<a href="'.$fnam.'">'.$fnam.'</a>&nbsp;&nbsp;';
   }
}
echo $page. "\n</body></html>";

Bien entendu j'ai créé la fonction test(), mais dans un foum sur commentcamarche.com(http://www.commentcamarche.net/forum/affich-17713148-petit-moteur-de-recherche)
. Mais je n'ai pas trouvé de réponses satisfaisantes. >:(

On m'a dit qu'il faut la déclarer, or comme je débute, je ne sais pas trop comment faire, si ça se trouve  c'est tout simple.

Si quelqu'un peut m'aider. Merci. :)


Titre: Re: Petit moteur de recherche interne en php
Posté par: MrsB le 17 Mai 2010, 12:45:53
Ben logiquement
(de préférence entre les 2 balises head de la page concernée)
function teste() {
code qui dit ce qu'elle fait
}

Mais je ne comprends pas ton if (teste()), donc je ne garantis pas que ça va marcher pour autant!!


Titre: Re: Petit moteur de recherche interne en php
Posté par: leon59143 le 17 Mai 2010, 12:59:29
Bonjour,

peux tu nous donner ta fonction teste() stp?

@MrsB : le if(teste()) renvoie un booléen. Soit true soit false. Donc lorsqu'apache arrive dans le if, il exécute la fonction teste(), si c'est true alors il rentre dans le if, sinon, il passe au else s'il y en a un.


Titre: Re: Petit moteur de recherche interne en php
Posté par: MrsB le 17 Mai 2010, 13:05:34
Sans dec'? ;D

Ce qui m'inquiète, c'est l'appel brutal de fonction dans un if sans param a priori. Et rien ne garantit que c'est bien un booleen qui doit sortir...

Ca peut passer, ça dépend du reste du script.
Maintenant, passer sur le bon objet, j'en mettrais pas ma main au feu.


Titre: Re: Petit moteur de recherche interne en php
Posté par: Bouyachaka le 17 Mai 2010, 13:25:16
Fatal error: Call to undefined function teste() in /home/venteart/public_html/mrech.php on line 76

Bien entendu j'ai créé la fonction test()

Si t'as fait la même faute dans ton code elle est là l'erreur parce que là ton code ne trouve pas la fonction teste().  ::)


Titre: Re: Petit moteur de recherche interne en php
Posté par: MrsB le 17 Mai 2010, 13:36:09
Madre de Dios faut que j'apprenne à lire!!!
 ;D ;D ;D


Titre: Re: Petit moteur de recherche interne en php
Posté par: leon59143 le 17 Mai 2010, 14:47:42
Fatal error: Call to undefined function teste() in /home/venteart/public_html/mrech.php on line 76

Bien entendu j'ai créé la fonction test()

j'avais vu mais je me suis laissé dire qu'il avait fait une faute de frappe lors du post sur le forum. Apres, c'est sur que s'il a reproduit  la même erreur, alors plus besoin de chercher. ^^

@MrsB : d'après ta réaction, ( "sans dec') j'en conclus que tu avais compris. Alors qu'es ce qui te gene? if(isset....) ou if(mail...)  sont des fonctions courantes que tu as sûrement déja rencontrées et qui fonctionnent sur le même principe, alors je ne vois pas ou est le probleme.

Si t'as fait la même faute dans ton code elle est là l'erreur parce que là ton code ne trouve pas la fonction teste().  ::)

Edit MrsB: j'y peux quoi si, quand je digère, quand on me cause php je comprends javascript? Tu verras un peu quand tu seras du 3ème âge!!!


Titre: Re: Petit moteur de recherche interne en php
Posté par: ventearticles le 17 Mai 2010, 17:52:30
Voilà ma fonction test():

function test() {
   global $texte, $l1, $l2, $l3, $l4;
   $sat1=true;
   $sat2=true;
   if ($l1 != ' ' && strpos ($texte, $l1)===false) {$sat1=false;}
   if ($l2 != ' ' && strpos ($texte, $l2)===false) {$sat1=false;}
   if ($l1 == ' ' &&$l2 == ' ') {$sat1=false;}
   if ($l3 != ' ' && strpos ($texte, $l3)===false) {$sat2=false;}
   if ($l4 != ' ' && strpos ($texte, $l4)===false) {$sat2=false;}
   if ($l3 == ' ' &&$l4 == ' ') {$sat2=false;}
   return $sat1 || $sat2;
   }


Titre: Re: Petit moteur de recherche interne en php
Posté par: ventearticles le 17 Mai 2010, 18:04:36
Je me suis rendu compte que j'avais mis teste() au lieu test(). Cependant j'ai toujours des messages qui se répètes :

Warning: strpos() [function.strpos]: Empty delimiter in /home/venteart/public_html/mrech.php on line 18

Warning: strpos() [function.strpos]: Empty delimiter in /home/venteart/public_html/mrech.php on line 14

Warning: strpos() [function.strpos]: Empty delimiter in /home/venteart/public_html/mrech.php on line 15

Warning: strpos() [function.strpos]: Empty delimiter in /home/venteart/public_html/mrech.php on line 17

Warning: strpos() [function.strpos]: Empty delimiter in /home/venteart/public_html/mrech.php on line 18

Warning: strpos() [function.strpos]: Empty delimiter in /home/venteart/public_html/mrech.php on line 14

Warning: strpos() [function.strpos]: Empty delimiter in /home/venteart/public_html/mrech.php on line 15

Warning: strpos() [function.strpos]: Empty delimiter in /home/venteart/public_html/mrech.php on line 17

Warning: strpos() [function.strpos]: Empty delimiter in /home/venteart/public_html/mrech.php on line 18

Warning: strpos() [function.strpos]: Empty delimiter in /home/venteart/public_html/mrech.php on line 14

Warning: strpos() [function.strpos]: Empty delimiter in /home/venteart/public_html/mrech.php on line 15

Warning: strpos() [function.strpos]: Empty delimiter in /home/venteart/public_html/mrech.php on line 17

Warning: strpos() [function.strpos]: Empty delimiter in /home/venteart/public_html/mrech.php on line 18

Warning: strpos() [function.strpos]: Empty delimiter in /home/venteart/public_html/mrech.php on line 14

Warning: strpos() [function.strpos]: Empty delimiter in /home/venteart/public_html/mrech.php on line 15

Warning: strpos() [function.strpos]: Empty delimiter in /home/venteart/public_html/mrech.php on line 17

Warning: strpos() [function.strpos]: Empty delimiter in /home/venteart/public_html/mrech.php on line 18

Warning: strpos() [function.strpos]: Empty delimiter in /home/venteart/public_html/mrech.php on line 14

Warning: strpos() [function.strpos]: Empty delimiter in /home/venteart/public_html/mrech.php on line 15

Warning: strpos() [function.strpos]: Empty delimiter in /home/venteart/public_html/mrech.php on line 17

Warning: strpos() [function.strpos]: Empty delimiter in /home/venteart/public_html/mrech.php on line 18

Warning: strpos() [function.strpos]: Empty delimiter in /home/venteart/public_html/mrech.php on line 14

Warning: strpos() [function.strpos]: Empty delimiter in /home/venteart/public_html/mrech.php on line 15

Warning: strpos() [function.strpos]: Empty delimiter in /home/venteart/public_html/mrech.php on line 17

Warning: strpos() [function.strpos]: Empty delimiter in /home/venteart/public_html/mrech.php on line 18

Warning: strpos() [function.strpos]: Empty delimiter in /home/venteart/public_html/mrech.php on line 14

Warning: strpos() [function.strpos]: Empty delimiter in /home/venteart/public_html/mrech.php on line 15

Warning: strpos() [function.strpos]: Empty delimiter in /home/venteart/public_html/mrech.php on line 17

Warning: strpos() [function.strpos]: Empty delimiter in /home/venteart/public_html/mrech.php on line 18

Warning: strpos() [function.strpos]: Empty delimiter in /home/venteart/public_html/mrech.php on line 14

Warning: strpos() [function.strpos]: Empty delimiter in /home/venteart/public_html/mrech.php on line 15

Warning: strpos() [function.strpos]: Empty delimiter in /home/venteart/public_html/mrech.php on line 17

Warning: strpos() [function.strpos]: Empty delimiter in /home/venteart/public_html/mrech.php on line 18

Warning: strpos() [function.strpos]: Empty delimiter in /home/venteart/public_html/mrech.php on line 14

Warning: strpos() [function.strpos]: Empty delimiter in /home/venteart/public_html/mrech.php on line 15

Warning: strpos() [function.strpos]: Empty delimiter in /home/venteart/public_html/mrech.php on line 17

Warning: strpos() [function.strpos]: Empty delimiter in /home/venteart/public_html/mrech.php on line 18

Warning: strpos() [function.strpos]: Empty delimiter in /home/venteart/public_html/mrech.php on line 14

Warning: strpos() [function.strpos]: Empty delimiter in /home/venteart/public_html/mrech.php on line 15

Warning: strpos() [function.strpos]: Empty delimiter in /home/venteart/public_html/mrech.php on line 17

Warning: strpos() [function.strpos]: Empty delimiter in /home/venteart/public_html/mrech.php on line 18


Titre: Re: Petit moteur de recherche interne en php
Posté par: leon59143 le 17 Mai 2010, 18:59:59
on pourrait avoir le contenu de ta page stp. Car la, ca va ere difficile de t'aider


Titre: Re: Petit moteur de recherche interne en php
Posté par: Bouyachaka le 17 Mai 2010, 19:51:47
Empty delimiter à mon avis t'as oublié une parenthèse, un crochet ou un guillemet quelque part.


Titre: Re: Petit moteur de recherche interne en php
Posté par: MrsB le 17 Mai 2010, 20:08:22
Poor lay zanglay:
http://www.webmasterworld.com/php/3782096.htm
En clair pour cette erreur: strpos reçoit une chaîne vide donc il râle en warning.

Vu ton code et les répétitions des lignes des warnings, je pense que $l1, $l2, $l3, $l4 sont vides.

En fait les tests $l1 != ' ', $l2 != ' ' etc (qui sont là pour éviter le warning strpos)  ne fonctionnent pas.

C'est probablement parce que tu as ajouté un espace entre ' et '
Essaie de mettre "" à la place de ' '

Si ça ne marche pas:
Vu ton code
//Recuperation des locutions à chercher
$l1 = strtoupper (stripslashes($_POST['l1']));
$l2 = strtoupper (stripslashes($_POST['l2']));
$l3 = strtoupper (stripslashes($_POST['l3']));
$l4 = strtoupper (stripslashes($_POST['l4']));

pour l'instant je vois 2 possibilités:
-les champs sont vides en l1,l2,l3,l4 dans le formulaire
ou
-tu ne récupères pas les données du formulaire
(et là peut y avoir 50000 raisons)

il faudrait donc tester si quand tu colles une valeur même débile en force ($l1='a', $l2='b', etc) tu as toujours les warnings.


Titre: Re: Petit moteur de recherche interne en php
Posté par: ventearticles le 20 Mai 2010, 18:14:19
En effet, j'ai supprimer les espaces entre les '. Je ne savais pas que ça aurait autant d'importances :D!
Maintenant, je n'ai plus de messages d'erreur.

Merci beaucoup!


Titre: Re: Petit moteur de recherche interne en php
Posté par: jom006 le 20 Mai 2010, 20:14:19
Bonjour,
Content que ton problème soit résolus ^^
Chaque petit caractère a son importance dans le web même un espace qui est invisible " " car si on regarde la table ASCII on constate qu'il son propre code, par exemple son code decimale est 32, tu peut l'essayer en restant appuyer sur ALT dans ton clavier et tape 32 au coté numérique, ça va te faire un espace =)

lien vers table ASCII : http://www.asciitable.com/

Cordialement,
Jom006.