Parse error Moteur de recherche

Résolu/Fermé
Alex-101317 - 22 mars 2008 à 13:25
 guillaume - 7 déc. 2008 à 18:17
Bonjour,
Dans le cadre d'un site de documentation en local, avec Easyphp 2.0B1 je cherche à créer un moteur de recherche permettant la consultation de la docs.
J'utilise les scripts qui sont sur CCC et je me heurte toujours au même problème,et je tourne autour depuis un bout de temps sans pouvoir le résoudre. Pour infos je suis tout à fait débutant en PHP. J'ai l'erreur suivante :
Parse error : parse error, unexpected $end in C:\Program Files\Internet\EasyPHP 2.0b1\www\Dream0.6\indexation du site on line 93
la ligne 93 est la dernière.
Le script :
<?php
echo "
<p>\n
<table BGCOLOR=\"#EFF2FB\" BORDER=\"0\"
CELLSPACING=\"0\"
CELLPADDING=\"1\"
WIDTH="%">\n
<tr><td>\n
<a name=\"index\"><h2>Indexation du site en cours</h2></a>\n
</td></tr>\n
</table>\n
<p>\n";

$host = "localhost";

$bdd = "moteur06";

/* Connexion avec MySQL */
mysql_connect($host,$user,$password) or die ("Impossible de se connecter
au serveur de base de donnees");

mysql_select_db(moteur06) or die ("Impossible d'accéder à la base moteur06");

$query = "DELETE FROM search";

mysql_query($query) or die ("Erreur de modification de la table");

function ScanDir($Directory){
$MyDirectory = opendir($Directory);

while($Entry = readdir($MyDirectory)) {
echo "<br>entry= $Entry<br>";

echo "repertoire= $Directory<br>";

echo "chemin= $Directory/$Entry<br>";

if(is_dir(Entry)&& $Entry != "." && $Entry != "..") {
echo "<b><font color=\"red\">$Entry</font>
</b> est un repertoire<br>";

ScanDir("$Entry/$Directory");

}
else {
if (eregi(".htm",$Entry)) {
$MetaTags = get_meta_tags($Directory."/".$Entry);

if ($MetaTags["robots"] == "all") {
$MetaKey = $MetaTags["keywords"];

$MetaKey = strtoupper($MetaKey);

echo "Meta($Directory/$Entry): $MetaKey
\n";

$MetaTitre = $MetaTags["title"];

echo "Meta($Directory/$Entry): $MetaTitre
\n";

$query = "INSERT INTO search (lien,keyword,titre)
VALUES(\"$Directory/$Entry\",\"$MetaKey\",\"$MetaTitre\")";

$mysql_result = mysql_query($query) or die ("Erreur
de modification de la table par la requete \"$query\"");

}
}
}
}
closedir($MyDirectory);

echo "OK close dir";

open_basedir(".");

$ScanDir=(".");

mysql_close();

?>

Merci de m'aider à résoudre ce problème

15 réponses

gryzzly Messages postés 4608 Date d'inscription lundi 7 novembre 2005 Statut Contributeur Dernière intervention 24 octobre 2020 1 334
22 mars 2008 à 13:51
dans le script que tu donnes, il n'y a pas de ligne 93, ni de variable $end.
merci de donner le bon code...

et d'UTILISER la BALISE CODE disponible pour formater les messages.
0
Alex-101317 Messages postés 8 Date d'inscription samedi 22 mars 2008 Statut Membre Dernière intervention 24 mars 2008
22 mars 2008 à 14:04
oui en effet je n'avais copié que la partie PHP, pour la balise code j'étais pas au courant, merci d'avance
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Indexation du site</title>
</head>

<body>
<?php
echo "
<p>\n
<table BGCOLOR=\"#EFF2FB\" BORDER=\"0\"
							CELLSPACING=\"0\"
							CELLPADDING=\"1\"
							WIDTH="%">\n
<tr><td>\n
<a name=\"index\"><h2>Indexation du site en cours</h2></a>\n
</td></tr>\n
</table>\n
<p>\n";

$host = "localhost";

$bdd = "moteur06";

/* Connexion avec MySQL */
mysql_connect($host,$user,$password) or die ("Impossible de se connecter
au serveur de base de donnees");

mysql_select_db(moteur06) or die ("Impossible d'accéder à la base moteur06");

$query = "DELETE FROM search";

mysql_query($query) or die ("Erreur de modification de la table");

function ScanDir($Directory){
$MyDirectory = opendir($Directory);

	while($Entry = readdir($MyDirectory)) {
		echo "<br>entry= $Entry<br>";

		echo "repertoire= $Directory<br>";

		echo "chemin= $Directory/$Entry<br>";

		if(is_dir(Entry)&& $Entry != "." && $Entry != "..") {
			echo "<b><font color=\"red\">$Entry</font>
				  </b> est un repertoire<br>";

			ScanDir("$Entry/$Directory");

		}
		else {
		if (eregi(".htm",$Entry)) {
			$MetaTags = get_meta_tags($Directory."/".$Entry);

			if ($MetaTags["robots"] == "all") {
				$MetaKey = $MetaTags["keywords"];

				$MetaKey = strtoupper($MetaKey);

				echo "Meta($Directory/$Entry): $MetaKey
\n";

				$MetaTitre = $MetaTags["title"];

				echo "Meta($Directory/$Entry): $MetaTitre
\n";

			$query = "INSERT INTO search (lien,keyword,titre)
			VALUES(\"$Directory/$Entry\",\"$MetaKey\",\"$MetaTitre\")";

			$mysql_result = mysql_query($query) or die ("Erreur
			de modification de la table par la requete \"$query\"");

			}
		}
		}
	}
closedir($MyDirectory);

echo "OK close dir";

open_basedir(".");

$ScanDir=(".");

mysql_close();

?>
</body>
</html>
0
gryzzly Messages postés 4608 Date d'inscription lundi 7 novembre 2005 Statut Contributeur Dernière intervention 24 octobre 2020 1 334
22 mars 2008 à 14:09
Merci d'utiliser la BALISE CODE <> !!

4eme en partant de la gauche
0
Alex-101317 Messages postés 8 Date d'inscription samedi 22 mars 2008 Statut Membre Dernière intervention 24 mars 2008
22 mars 2008 à 14:16
Là ce devrait être bon !
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Indexation du site</title>
</head>

<body>
<?php
echo "
<p>\n
<table BGCOLOR=\"#EFF2FB\" BORDER=\"0\"
							CELLSPACING=\"0\"
							CELLPADDING=\"1\"
							WIDTH="%">\n
<tr><td>\n
<a name=\"index\"><h2>Indexation du site en cours</h2></a>\n
</td></tr>\n
</table>\n
<p>\n";

$host = "localhost";

$bdd = "moteur06";

/* Connexion avec MySQL */
mysql_connect($host,$user,$password) or die ("Impossible de se connecter
au serveur de base de donnees");

mysql_select_db(moteur06) or die ("Impossible d'accéder à la base moteur06");

$query = "DELETE FROM search";

mysql_query($query) or die ("Erreur de modification de la table");

function ScanDir($Directory){
$MyDirectory = opendir($Directory);

	while($Entry = readdir($MyDirectory)) {
		echo "<br>entry= $Entry<br>";

		echo "repertoire= $Directory<br>";

		echo "chemin= $Directory/$Entry<br>";

		if(is_dir(Entry)&& $Entry != "." && $Entry != "..") {
			echo "<b><font color=\"red\">$Entry</font>
				  </b> est un repertoire<br>";

			ScanDir("$Entry/$Directory");

		}
		else {
		if (eregi(".htm",$Entry)) {
			$MetaTags = get_meta_tags($Directory."/".$Entry);

			if ($MetaTags["robots"] == "all") {
				$MetaKey = $MetaTags["keywords"];

				$MetaKey = strtoupper($MetaKey);

				echo "Meta($Directory/$Entry): $MetaKey
\n";

				$MetaTitre = $MetaTags["title"];

				echo "Meta($Directory/$Entry): $MetaTitre
\n";

			$query = "INSERT INTO search (lien,keyword,titre)
			VALUES(\"$Directory/$Entry\",\"$MetaKey\",\"$MetaTitre\")­";

			$mysql_result = mysql_query($query) or die ("Erreur
			de modification de la table par la requete \"$query\"");

			}
		}
		}
	}
closedir($MyDirectory);

echo "OK close dir";

open_basedir(".");

$ScanDir=(".");

mysql_close();

?>
</body>
</html>

Merci
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
gryzzly Messages postés 4608 Date d'inscription lundi 7 novembre 2005 Statut Contributeur Dernière intervention 24 octobre 2020 1 334
22 mars 2008 à 14:19
dans le script que tu donnes :

1) il n'y a pas de ligne 93

2) ni de variable $end.

merci de donner le bon code...
0
Alex-101317 Messages postés 8 Date d'inscription samedi 22 mars 2008 Statut Membre Dernière intervention 24 mars 2008
22 mars 2008 à 14:22
La ligne 93 c'était juste un espace désolé, en fait en virant cet espace, j'ai le même message mais en ligne 92 qui est la dernière du code.
0
gryzzly Messages postés 4608 Date d'inscription lundi 7 novembre 2005 Statut Contributeur Dernière intervention 24 octobre 2020 1 334
22 mars 2008 à 14:27
Tu devrais faire des efforts sur l'indentation de tes codes. Tu y verrais plus clair...
Il manque un accolade fermante.

PS : la prochaine fois, copies colles tes erreurs dans Google. Dans 99,99% des cas,tu as la solution.

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Indexation du site</title>
</head>
<body>
<?php
echo "
<p>\n
<table BGCOLOR=\"#EFF2FB\" BORDER=\"0\"
							CELLSPACING=\"0\"
							CELLPADDING=\"1\"
							WIDTH="%">\n
<tr><td>\n
<a name=\"index\"><h2>Indexation du site en cours</h2></a>\n
</td></tr>\n
</table>\n
<p>\n";
$host = "localhost";
$bdd = "moteur06";
/* Connexion avec MySQL */
mysql_connect($host,$user,$password) or die ("Impossible de se connecter
au serveur de base de donnees");
mysql_select_db(moteur06) or die ("Impossible d'accéder à la base moteur06");
$query = "DELETE FROM search";
mysql_query($query) or die ("Erreur de modification de la table");

function ScanDir($Directory)
{
	$MyDirectory = opendir($Directory);
	while($Entry = readdir($MyDirectory)) 
	{
		echo "<br>entry= $Entry<br>";
		echo "repertoire= $Directory<br>";
		echo "chemin= $Directory/$Entry<br>";
		if(is_dir(Entry)&& $Entry != "." && $Entry != "..") 
		{
			echo "<b><font color=\"red\">$Entry</font>
				  </b> est un repertoire<br>";
			ScanDir("$Entry/$Directory");
		}
		else 
		{
			if (eregi(".htm",$Entry)) 
			{
			$MetaTags = get_meta_tags($Directory."/".$Entry);
				if ($MetaTags["robots"] == "all") 
				{
					$MetaKey = $MetaTags["keywords"];
					$MetaKey = strtoupper($MetaKey);
					echo "Meta($Directory/$Entry): $MetaKey\n";
					$MetaTitre = $MetaTags["title"];
					echo "Meta($Directory/$Entry): $MetaTitre\n";
					$query = "INSERT INTO search (lien,keyword,titre)
					VALUES(\"$Directory/$Entry\",\"$MetaKey\",\"$MetaTitre\")­­";
					$mysql_result = mysql_query($query) or die ("Erreur
					de modification de la table par la requete \"$query\"");
				}
			}
		}
	}
	closedir($MyDirectory);
	echo "OK close dir";
}
open_basedir(".");
$ScanDir=(".");
mysql_close();
?>
</body>
</html>


et il doit y avoir une erreur ici :
open_basedir(".");
$ScanDir=(".");

Car $ScanDir n'existe pas. mais la fonction scandir existe.
car open_basedir est un param de config de php.ini , pas une fonction php
0
Alex-101317 Messages postés 8 Date d'inscription samedi 22 mars 2008 Statut Membre Dernière intervention 24 mars 2008
22 mars 2008 à 14:57
Merci de ton aide, encore qu'étant totalement débutant j'aurais bien aimé savoir où il manquait une accolade.
Quand à l'indentation des codes le modèle je l'ai copié est ici : https://www.commentcamarche.net/contents/801-php-creer-un-moteur-de-recherche
je pensais récupérer quelque chose de clean.
0
gryzzly Messages postés 4608 Date d'inscription lundi 7 novembre 2005 Statut Contributeur Dernière intervention 24 octobre 2020 1 334
22 mars 2008 à 15:03
Ben quand tu fais des copier coller et des rajouts, fais les correctement, car je vois pas d'erreurs sur la source...
0
Alex-101317 Messages postés 8 Date d'inscription samedi 22 mars 2008 Statut Membre Dernière intervention 24 mars 2008
22 mars 2008 à 15:10
Un simple copier collé je ne vois pas trop comment j'aurais pu me tromper mais enfin la fatigue aidant j'ai du perdre le fil à un moment.
J'ai corrigé et maintenant
fatal error : cannot redeclare scandir()
0
gryzzly Messages postés 4608 Date d'inscription lundi 7 novembre 2005 Statut Contributeur Dernière intervention 24 octobre 2020 1 334
22 mars 2008 à 15:17
Déjà dit plus haut.

$ScanDir=("."); → ScanDir(".");

fais qqch quoi. soit tu copies colles tel que, soit tu apprends les bases du php et tu fais des modifications...
0
Alex-101317 Messages postés 8 Date d'inscription samedi 22 mars 2008 Statut Membre Dernière intervention 24 mars 2008
22 mars 2008 à 15:23
déjà fait précédemment
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Indexation du site</title>
</head>

<body>
<?php
echo "
<p>\n
<table BGCOLOR=\"#EFF2FB\" BORDER=\"0\"
							CELLSPACING=\"0\"
							CELLPADDING=\"1\"
							WIDTH="%">\n
<tr><td>\n
<a name=\"index\"><h2>Indexation du site en cours</h2></a>\n
</td></tr>\n
</table>\n
<p>\n";

$host = "localhost";

$bdd = "moteur06";

/* Connexion avec MySQL */
mysql_connect($host,$user,$password) or die ("Impossible de se connecter
au serveur de base de donnees");

mysql_select_db(moteur06) or die ("Impossible d'accéder à la base moteur06");

$query = "DELETE FROM search";

mysql_query($query) or die ("Erreur de modification de la table");

function ScanDir($Directory){
$MyDirectory = opendir($Directory);

	while($Entry = readdir($MyDirectory)) {
		echo "<br>entry= $Entry<br>";

		echo "repertoire= $Directory<br>";

		echo "chemin= $Directory/$Entry<br>";

		if(is_dir(Entry)&& $Entry != "." && $Entry != "..") {
			echo "<b><font color=\"red\">$Entry</font>
				  </b> est un repertoire<br>";

			ScanDir("$Entry/$Directory");

		}
		else {
		if (eregi(".htm",$Entry)) {
			$MetaTags = get_meta_tags($Directory."/".$Entry);

			if ($MetaTags["robots"] == "all") {
				$MetaKey = $MetaTags["keywords"];

				$MetaKey = strtoupper($MetaKey);

				echo "Meta($Directory/$Entry): $MetaKey
\n";

				$MetaTitre = $MetaTags["title"];

				echo "Meta($Directory/$Entry): $MetaTitre
\n";

			$query = "INSERT INTO search (lien,keyword,titre)
			VALUES(\"$Directory/$Entry\",\"$MetaKey\",\"$MetaTitre\")";

			$mysql_result = mysql_query($query) or die ("Erreur
			de modification de la table par la requete \"$query\"");

			}
		}
		}
	}
closedir($MyDirectory);

}

$open_basedir=".";

ScanDir(".");

mysql_close();

?>
</body>
</html>


fatal error : cannot redeclare scandir()
0
gryzzly Messages postés 4608 Date d'inscription lundi 7 novembre 2005 Statut Contributeur Dernière intervention 24 octobre 2020 1 334
22 mars 2008 à 15:27
0
Alex-101317 Messages postés 8 Date d'inscription samedi 22 mars 2008 Statut Membre Dernière intervention 24 mars 2008
22 mars 2008 à 15:43
Bon c'est bien tout ça, si j'avais été capable de trouver la réponse sur Google je n'aurais pas poster sur le Forum.
Je pensais y trouver de l'aide, un forum c'est pour les débutants (du moins je croyais) mais apparemment le Grizzly est un ours ... et je vais aller voir ailleurs.
Merci
0
gryzzly Messages postés 4608 Date d'inscription lundi 7 novembre 2005 Statut Contributeur Dernière intervention 24 octobre 2020 1 334
22 mars 2008 à 17:18
taing c'est dingue. sur la page de résultat google (lien que je t'ai donné), en première page, tu as ca :

https://www.developpez.net/forums/d155527/php/langage/fonction-scandir-php5/


c'est parceque scandir est une fonction déjà existante dans PHP 5 ;

https://www.php.net/manual/fr/function.scandir.php

nomme là différament
0
ulukyn Messages postés 2 Date d'inscription samedi 22 mars 2008 Statut Membre Dernière intervention 23 mars 2008
22 mars 2008 à 16:00
Pas besoin de chercher de ligne 93, il y a une erreur au premier echo.

Il n'ets pas possible de faire un echo sur plusieurs lignes de cette manière, même en échappant les guillemets.

https://www.php.net/echo

<?php
echo <<<END
<p>
<table BGCOLOR="#EFF2FB" BORDER="0"
CELLSPACING="0"
CELLPADDING="1"
WIDTH="%">
<tr><td>
<a name="index"><h2>Indexation du site en cours</h2></a>
</td></tr>
</table>
<p>
END;

Pour corriger le code :)
0
ulukyn Messages postés 2 Date d'inscription samedi 22 mars 2008 Statut Membre Dernière intervention 23 mars 2008
23 mars 2008 à 11:06
Oulaa, J'ai dit une grosse bêtise là :p

Il est possible de faire un echo sur plusieurs lignes.
Ce que je ne fait jamais (au point de croire que c'était impossible :p)

Par contre une des erreurs venait bien de là.

Car la ligne : WIDTH="%">\n possédait des guillemets non échappés.

Avec la syntaxe "here doc", on risque moins les erreurs de ce type.

voici le code corriger :

<?php
echo <<<END
<p>\n
<table BGCOLOR="#EFF2FB" BORDER="0"
CELLSPACING="0"
CELLPADDING="1"
WIDTH="%">
<tr><td>
<a name="index"><h2>Indexation du site en cours</h2></a>
</td></tr>
</table>
<p>
END;

$host = "localhost";
$user = "root"; // A adapter
$password = ""; // A adapter
$bdd = "moteur06";

/* Connexion avec MySQL */
mysql_connect($host,$user,$password) or die ("Impossible de se connecter au serveur de base de donnees");

mysql_select_db($bdd) or die ("Impossible d'accéder à la base moteur06");

$query = "DELETE FROM search";

mysql_query($query) or die ("Erreur de modification de la table");

function ScanThisDir($Directory)
{
    $MyDirectory = opendir($Directory);

    while ($Entry = readdir($MyDirectory)) 
    {
        echo "<br>entry= $Entry<br>";
        echo "repertoire= $Directory<br>";
        echo "chemin= $Directory/$Entry<br>";

        if (is_dir($Entry) && $Entry != "." && $Entry != "..")
        {
            echo "<b><font color=\"red\">$Entry</font></b> est un repertoire<br>";
            ScanThisDir("$Directory/$Entry");

        }
        else 
        {
            if (eregi(".htm",$Entry))
            {
                $MetaTags = get_meta_tags($Directory."/".$Entry);
    
                if (array_key_exists('robots', $MetaTags) && ($MetaTags["robots"] == "all"))
                {
                    $MetaKey = $MetaTags["keywords"];

                    $MetaKey = strtoupper($MetaKey);

                    echo "Meta($Directory/$Entry): $MetaKey<br>\n";
                    $MetaTitre = $MetaTags["title"];
                    echo "Meta($Directory/$Entry): $MetaTitre<br>\n";

                    $query = "INSERT INTO search (lien,keyword,titre) VALUES(\"$Directory/$Entry\",\"$MetaKey\",\"$MetaTitre\")";

                    $mysql_result = mysql_query($query) or die ("Erreur de modification de la table par la requete \"$query\"");
                }
            }
        }
    }
    closedir($MyDirectory);
}
    echo "OK close dir";

    $open_basedir = ".";

    ScanThisDir(".");

    mysql_close();

?> 
0
Alex-101317 Messages postés 8 Date d'inscription samedi 22 mars 2008 Statut Membre Dernière intervention 24 mars 2008
24 mars 2008 à 13:20
Bonjour
Merci de ton aide ulukyn, j'ai plus avancé en 2 posts qu'après quelques échanges stériles, je crois que pour la suite je vais me débrouiller.
Merci encore.
0
merci d'avoir corriger l'erreur sur la page principale proposer cela fonctionne très bien .
https://www.commentcamarche.net/contents/801-php-creer-un-moteur-de-recherche
Dommage qu'il n'y est aucune correction du post ni un lien vers cette correction
je souhaite avoir la suite de cette page malheuresement non corriger
la derniere partit du code ne charge pas les mots demander
la correction très bien faite recherche très bien les meta inserer
manquant: le code pour l'affichage de ces données inserer des les tables
merci de répondre afin de completer ce post entierement
webmaster@la-boite-noire.com
0