Parse error Moteur de recherche

Résolu
Alex-101317 -  
 guillaume -
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   Statut Contributeur Dernière intervention   1 335
 
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   Statut Membre Dernière intervention  
 
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   Statut Contributeur Dernière intervention   1 335
 
Merci d'utiliser la BALISE CODE <> !!

4eme en partant de la gauche
0
Alex-101317 Messages postés 8 Date d'inscription   Statut Membre Dernière intervention  
 
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   Statut Contributeur Dernière intervention   1 335
 
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   Statut Membre Dernière intervention  
 
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   Statut Contributeur Dernière intervention   1 335
 
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   Statut Membre Dernière intervention  
 
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   Statut Contributeur Dernière intervention   1 335
 
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   Statut Membre Dernière intervention  
 
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   Statut Contributeur Dernière intervention   1 335
 
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   Statut Membre Dernière intervention  
 
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   Statut Contributeur Dernière intervention   1 335
 
0
Alex-101317 Messages postés 8 Date d'inscription   Statut Membre Dernière intervention  
 
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   Statut Contributeur Dernière intervention   1 335
 
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   Statut Membre Dernière intervention  
 
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   Statut Membre Dernière intervention  
 
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   Statut Membre Dernière intervention  
 
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
guillaume
 
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