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
Configuration: Windows XP
Firefox 2.0.0.12

15 réponses

  1. gryzzly Messages postés 5220 Date d'inscription   Statut Contributeur Dernière intervention   1 340
     
    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
  2. Alex-101317 Messages postés 8 Statut Membre
     
    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
  3. gryzzly Messages postés 5220 Date d'inscription   Statut Contributeur Dernière intervention   1 340
     
    Merci d'utiliser la BALISE CODE <> !!

    4eme en partant de la gauche
    0
  4. Alex-101317 Messages postés 8 Statut Membre
     
    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
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. gryzzly Messages postés 5220 Date d'inscription   Statut Contributeur Dernière intervention   1 340
     
    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
  7. Alex-101317 Messages postés 8 Statut Membre
     
    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
  8. gryzzly Messages postés 5220 Date d'inscription   Statut Contributeur Dernière intervention   1 340
     
    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
  9. Alex-101317 Messages postés 8 Statut Membre
     
    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
  10. gryzzly Messages postés 5220 Date d'inscription   Statut Contributeur Dernière intervention   1 340
     
    Ben quand tu fais des copier coller et des rajouts, fais les correctement, car je vois pas d'erreurs sur la source...
    0
    1. Alex-101317 Messages postés 8 Statut Membre
       
      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
  11. gryzzly Messages postés 5220 Date d'inscription   Statut Contributeur Dernière intervention   1 340
     
    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
    1. Alex-101317 Messages postés 8 Statut Membre
       
      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
  12. Alex-101317 Messages postés 8 Statut Membre
     
    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
  13. ulukyn Messages postés 2 Statut Membre
     
    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
  14. ulukyn Messages postés 2 Statut Membre
     
    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
    1. Alex-101317 Messages postés 8 Statut Membre
       
      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
  15. 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