Passage de PHP4 à PHP5: script ne fonctionne plus

Signaler
Messages postés
2
Date d'inscription
mercredi 3 octobre 2007
Statut
Membre
Dernière intervention
7 octobre 2009
-
Messages postés
2
Date d'inscription
mercredi 3 octobre 2007
Statut
Membre
Dernière intervention
7 octobre 2009
-
Bonsoir,
J'ai un petit souci depuis que le serveur qui héberge mon site est passé en PHP5. Le script suivant qui sert à interroger une base mysql ne fonctionne plus. Est-ce que quelqu'un peut m'indiquer les éléments à modifier pour qu'il soit "PHP5 ready":
<?php

function clean($string)

{for($x= 0;$x<strlen($string);$x++)

  {if ($string[$x]!=" "&&$string[$x]!=" "){$totale.=$string[$x];}

   }

 return $totale;

}



function clean2($string)

{$found=0;

for($x=0;$x<strlen($string);$x++)

  {if (($string[$x]!=" ")||($string[$x]!=" ")||($found==0))

        {

         $found=0;

         $totale.=$string[$x];

         if (($string==" ")||($string[$x]==" "))

             {$found=1;}

        }

  }



 return($totale);



 }



$auteur=clean2($auteur);

$reference=clean2($reference);

$theme=clean2($theme);

$texte=clean2($texte);

include('connect.inc');

print('<HTML><HEAD><TITLE> Moteur de Recherche Textes Philo</TITLE></HEAD>
Moteur de recherche de textes philosophiques

1117 textes disponibles dans la base


<FORM ACTION="search.php" METHOD="GET"><TD>
 Auteur :  </TD>

<TD>
Texte : </TD>

<TD>
Référence : </TD>

<TD>
Thème : </TD></TR>

<TR>

Opérateur logique "et" :');

if ($et == "on") 

         {print('');}

print('
 Opérateur logique "ou" : ');

if ($et =="ou")

        {print('');}

print('
</TD></FORM></TR>

');

if (isset($auteur)||isset($texte)||isset($reference)||isset($theme))

 {

if ($auteur!="")

 {$tab=$tab=explode(' ',$auteur);

 $taille=$taille+count($tab);}

if ($texte!="")

 {$tab=$tab=explode(' ',$texte);

 $taille=$taille+count($tab);}

if ($reference!="")

 {$tab=$tab=explode(' ',$reference);

 $taille=$taille+count($tab);}

if ($theme!="")

 {$tab=$tab=explode(' ',$theme);

 $taille=$taille+count($tab);}







$dm=mysql_connect("sql.ac-grenoble.fr",$sqluser,$sqlpass) or die(mysql_error());

mysql_select_db("philo",$dm);

$result=mysql_query("SELECT*FROM textesphilo");

while($ligne=mysql_fetch_array($result))

{

 $x=0;

 if (clean($auteur)!="")

 {$tab=explode(' ',$auteur);

  for($t=0;$t<count($tab);$t++)

    {if (strtolower($tab[$t])!='')

         {

     if(stristr(strtolower($ligne[auteur]),strtolower($tab[$t])))

      {$x++;}

         }

    }

  }

 if (clean($texte)!="")

 {$tab=explode(' ',$texte);

  for($t=0;$t<count($tab);$t++)

    {if (strtolower($tab[$t])!='')

         {

        if(stristr(strtolower($ligne[texte]),strtolower($tab[$t])))

         {$x++;}

          }

    }

  }

 if (clean($reference)!="")

 {$tab=explode(' ',$reference);

  for($t=0;$t<count($tab);$t++)

    {if (strtolower($tab[$t])!='')

         {

     if(stristr(strtolower($ligne[reference]),strtolower($tab[$t])))

      {$x++;}

         }

     }

  }





 if (clean($theme)!="")

 {$tab=explode(' ',$theme);

  for($t=0;$t<count($tab);$t++)

    {if (strtolower($tab[$t])!='')

         {

        if(stristr(strtolower($ligne[theme]),strtolower($tab[$t])))

          {$x++;}

        }

    }

  }

 $totale+=$x;





if ($x!=0)

 {$trb["$ligne[pos]"]=$x;

 $aut["$ligne[pos]"]=$ligne[auteur];

 $parttext["$ligne[pos]"]=substr($ligne[texte],0,400);

 }

}



if (($totale>0))

{

asort($trb);

$x=-1;

foreach($trb as $key=>$val)

 {$x++;

  $pert[$x]=$val;

  $lien[$x]=$key;

  $aute[$x]=$aut[$key];

  $tex[$x]=$parttext[$key];

 }

for($x=(count($pert)-1);$x>=0;$x=$x-2)

 {if ($et!="on"||$pert[$x]==$taille)

  {

  print(' Pertinence :'.$pert[$x].', Retour</HTML>

');?>

5 réponses

Messages postés
2381
Date d'inscription
lundi 4 février 2002
Statut
Membre
Dernière intervention
29 décembre 2012
16
Quel est le message d'erreur ??
Messages postés
3708
Date d'inscription
lundi 5 juillet 2004
Statut
Membre
Dernière intervention
27 avril 2012
27
Salut,

Les erreurs sont elles affichées ?
J'imagine que non. Commence donc par là en ajoutant ces lignes en tout début de code :

ini_set('display_errors', true);
error_reporting(E_ALL);


Cordialement,


Kohntark -
Messages postés
567
Date d'inscription
mercredi 4 octobre 2006
Statut
Membre
Dernière intervention
30 août 2011
10
Ce qui serais pas mal c'est que dans la barre de menu (Gras Italique...) il y a une boite "Réponses prédéfinies" avec

Code non formaté :
Utilise la boîte "Code" en haut à gauche du formulaire ; et n'oublie pas les balises PHP : <?php ... ?> (Pour le php par exemple)
Code non indenté
...
Forum inapproprié
...
Pour afficher les erreurs php
...

Cf. Site du Zéro ^^

_________________________________
Min iPomme
Messages postés
567
Date d'inscription
mercredi 4 octobre 2006
Statut
Membre
Dernière intervention
30 août 2011
10
Pour réponse, je te conseil de jeter un regard la dessus :
http://au.php.net/manual/en/migration5.incompatible.php
http://www.slideshare.net/jpauli/migration-php4php5
Et plus généralement la dessus :
http://au.php.net/manual/en/migration5.php

Je sais que certaines fonctions de test ou de date retournais -1 en cas d'erreur, il étais donc rependus de faire des tests style
if(mafonction("bla")==-1)
echo "erreur" ;

alors que maintenant il faudrait plus utiliser le "=== false"...

Bonne matinée ! Et bon courage pour ta migration


_________________________________
Min iPomme
Messages postés
2
Date d'inscription
mercredi 3 octobre 2007
Statut
Membre
Dernière intervention
7 octobre 2009

Bonsoir,
je fais remonter le fil car mon problème n'est pas résolu. J'ai implémenté les lignes qui permettent d'afficher les erreurs et à part quelques fonctions non déclarées aucun message significatif n'apparait. Pourtant la connexion à la base se fait bien mais aucun résultat ne s'affiche. Ça coince au niveau de la mise en ordre des résultats de la requête qui normalement devraient s'afficher dans la même page sous la forme d'un tableau qui affiche les premiers mots du texte dont le nom de l'auteur est cliquable, pour renvoyer au texte complet. Quand la page d'accueil avec les champs de recherche apparait, la ligne " Aucun texte de la base de données ne correspond à votre requête" s'affiche alors qu'elle ne doit s'afficher qu'en cas de recherche infructueuse. Donc il y a un dysfonctionnement... Mais lequel?
Merci pour votre aide

Cordialement