Page 1 sur 1

Problème livre d'or php5 (php4 ok)

Posté : 03 sept. 2009, 23:37
par alexi76
Bonjour,

Le livre d'or de mon site fonctionne sans problème avec mon ftp chez Free, mais avec l'hébergeur que j'ai récemment pris (Hebeh), l'affichage est bon mais pas moyen d'envoyer un commentaire ou de faire défiler les différentes pages (contenant les commentaires). Le script est écrit en php4, et ayant très peu de bases dans ce langage, je n'ai pas réussi a déterminer quelles fonctions ou bout de code a changer pour le rendre compatible avec php5. A ce que j'ai pu trouver sur le net il y aurai très peu de modifications faire (remplacer des fonctions, changer la syntaxe...?)... Pouvez vous me donner quelques pistes?

Voici le scripte du livre d'or (Comment'R v1) :
<?php
if((@ strlen($n)>$longueurMaxCommentaires) or (@ strlen($c)>$longueurMaxCommentaires)) {
  print("Désolé, la taille maximale des commentaires pouvant être postés est limitée à $longueurMaxCommentaires caractères.<br>\n");
  print("<a href=\"livredor.php\">Retour au Livre d'Or</a>\n");
  exit;
}
?>


<?php

if(!file_exists("ADmod/livre.dat")) {
  $idFicLivre=fopen("ADmod/livre.dat","w+");
    fputs($idFicLivre,"Fichier Index. Ne pas éditer !\n");
  fclose($idFicLivre);
}

if(!isset($c)) $c="";
if(!isset($n)) $n="";
if(!isset($p)) $p="";


function coupeMotsLongs($chaine, $ncaracteres) {
$chaineRes = $chaine;
while(preg_match("/([^ ]{$ncaracteres})[^ ]/", $chaineRes, $corres)) {
$partRep=$corres[1];
$chaineRes=preg_replace("/$partRep/", $partRep . ' <br> ', $chaineRes);
}
return($chaineRes);
}


if ($c and $n) {

  // détermination de la date
  $tdate=getdate();
  $jour=sprintf("%02.2d",$tdate["mday"])."/".sprintf("%02.2d",$tdate["mon"])."/".$tdate["year"];
  $heure=sprintf("%02.2d",$tdate["hours"])."H".sprintf("%02.2d",$tdate["minutes"]);
  $d=$jour." à ".$heure;

  // nettoyage du nom
  $n=htmlentities($n);
  $n=stripslashes($n);
  $n=trim($n);

  // nettoyage du commentaire
  $c=htmlentities($c);
  $c=str_replace(chr(10)," <br> ",$c);
  $c=str_replace(chr(13),"",$c);
  $c=stripslashes($c);
  $c=trim($c);

  $idFicLivreCom=fopen("ADmod/livre.dat","a+");
  fputs($idFicLivreCom,$n);         // 1ère ligne
  fputs($idFicLivreCom,"|");        //
  fputs($idFicLivreCom,$d."|\n");   //
  fputs($idFicLivreCom,$c."\n");    // 2ème ligne
  fclose($idFicLivreCom);

}

$TabLivre=file("ADmod/livre.dat");
$nLignesTabLivre=count($TabLivre)-1;
$nCommentaires=$nLignesTabLivre/2;

for($compt=1;$compt<=$nCommentaires;$compt++) {
  $nom[$compt]=trim(stripslashes(strtok($TabLivre[($compt*2)-1],"|")));
  $date[$compt]=trim(stripslashes(strtok("|")));
  $commentaire[$compt]=trim(stripslashes($TabLivre[($compt*2)]));
}

if($n and $c)  {
  print("<table align=\"center\" width=\"$largeurTableauxA\" border=\"1\"> \n");
  print("<tr><td bgcolor=\"$couleurFondLigneNomAuteurTableauA\" height=\"30\"> \n");
  print("<center> \n");
  print("<font face=\"$policeLignesNomAuteurTableauA\" color=\"$couleurPoliceLignesNomAuteurTableauA\" size=\"-1\"> \n");
  print("<b>Merci pour votre participation !</b> \n");
  print("</font> \n");
  print("</center> \n");
  print("</td></tr> \n");
  print("</table> \n");
  print("<br> \n");
}


if(!$p) {
  $p=1;   // $p représente le numéro de la page de commentaire à afficher : par défaut, $p=1
}

if($nCommentaires>0) {

  print("<table border=\"0\" cellspacing=\"0\" cellpadding=\"0\" width=\"$largeurTableauxA\" align=\"center\" bgcolor=\"$couleurBordTableauA\"> \n");
  print("<tr><td> \n");

    print("<table border=\"0\" width=\"100%\" cellspacing=\"1\" align=\"center\" cellpadding=\"5\"> \n");

    print("<tr> \n");
    print("<td bgcolor=\"$couleurFondEnteteTableauA\" height=\"30\"> \n");

    print("<font face=\"$policeEnteteTableauA\" color=\"$couleurPoliceEnteteTableauA\" size=\"-2\"> \n");
    print("<center> \n");
    print("<b><a href=\"#ajout\">Ajouter un nouveau commentaire</a></b> <br> \n");
    print("</center> \n");
    print("</font> \n");
    print("</td> \n");
    print("</tr> \n");

    for($compt=($nCommentaires-(($p-1)*$NombreComParPage));$compt>=max(1,($nCommentaires-($p*$NombreComParPage)+1));$compt--) {
      print("<tr><td bgcolor=\"$couleurFondLigneNomAuteurTableauA\"> \n");
        print("<table> \n");
        print("<tr> \n");
        print("<td width=\"10\">&nbsp;</td> \n");
        print("<td> \n");
        print("<font face=\"$policeLignesNomAuteurTableauA\" color=\"$couleurPoliceLignesNomAuteurTableauA\" size=\"-1\"><b>".coupeMotsLongs($nom[$compt],$longueurMaxMots)."</b>&nbsp, le ".$date[$compt]." :</font> \n");
        print("</td> \n");
        print("</tr> \n");
        print("</table> \n");
      print("</td></tr> \n");
      print("<tr><td bgcolor=\"$couleurFondLigneCommentaireTableauA\"> \n");
        print("<table> \n");
        print("<tr> \n");
        print("<td width=\"20\">&nbsp;</td> \n");
        print("<td> \n");
        print("<font face=\"$policeLignesCommentairesTableauA\" color=\"$couleurPoliceLignesCommentairesTableauA\">".coupeMotsLongs($commentaire[$compt],$longueurMaxMots)."</font>\n");
        print("</td> \n");
        print("</tr> \n");
        print("</table> \n");
      print("</td></tr> \n");
    }

    if(($nCommentaires>$NombreComParPage) and $p<=min($NombreMaxPages,floor((($nCommentaires-1)/$NombreComParPage)+1))) {
      print("<tr> \n");
      print("<td bgcolor=\"$couleurFondEnteteTableauA\" height=\"20\"> \n");
      print("<center> \n");
      print("<font face=\"$policeEnteteTableauA\" color=\"$couleurPoliceEnteteTableauA\" size=\"-2\"> \n");
      print("<b>pages</b> &nbsp; \n");
      print("<b> \n");
      for($a=1;$a<=min($NombreMaxPages,floor((($nCommentaires-1)/$NombreComParPage)+1));$a++) {
        if($a==$p) print("$a &nbsp; \n");
        else print("<a href=\"livredor.php?p=$a\">$a</a> &nbsp; \n");
      }
      print("</b> \n");
      print("</font> \n");
      print("</center> \n");
      print("</td> \n");
      print("</tr> \n");
    }

    print("</table> \n");

  print("</td></tr> \n");

  print("</table> \n");

  print("<br> \n");

}


if($nCommentaires<1)  {
  print("<table align=\"center\" width=\"$largeurTableauxA\" border=\"1\"> \n");
  print("<tr><td bgcolor=\"$couleurFondLigneNomAuteurTableauA\" height=\"30\"> \n");
  print("<center> \n");
  print("<font face=\"$policeLignesNomAuteurTableauA\" color=\"$couleurPoliceLignesNomAuteurTableauA\" size=\"-1\"> \n");
  print("<b>Le livre d'or ne comporte encore aucun commentaire.</b> \n");
  print("</font> \n");
  print("</center> \n");
  print("</td></tr> \n");
  print("</table> \n");
  print("<br> \n");
}


print("<a name=\"ajout\"></a>");

print("<table border=\"0\" cellspacing=\"0\" cellpadding=\"0\" width=\"$largeurTableauxB\" align=\"center\" bgcolor=\"$couleurBordTableauB\"> \n");
print("<tr><td> \n");

  print("<table border=\"0\" width=\"100%\" cellspacing=\"1\" align=\"center\" cellpadding=\"5\"> \n");

  print("<tr> \n");
  print("<td bgcolor=\"$couleurFondEnteteTableauB\" height=\"30\"> \n");
  print("<font face=\"$policeEnteteTableauB\" color=\"$couleurPoliceEnteteTableauB\" size=\"-1\"> \n");

  if($nCommentaires>0) print("<b><center>Ajouter un nouveau commentaire :</center></b> \n");
  else print("<b><center>Envoyer un premier commentaire :</center></b> \n");

  print("</font> \n");
  print("</td> \n");
  print("</tr> \n");

  print("<tr><td bgcolor=\"$couleurFondFormulaireTableauB\"> \n");
  print("<form method='POST' action=\"livredor.php\"> \n");
  print("<center> \n");
  print("<br> \n");
  print("<font face=\"$policeFondFormulaireTableauB\" color=\"$couleurPoliceFondFormulaireTableauB\" size=\"-1\"> \n");
  print("<b>Votre nom</b> :&nbsp; \n");
  print("</font> \n");
  print("<input type=\"text\" name=\"n\" size=\"24\"> \n");
  print("<br><br> \n");
  print("<textarea rows=\"6\" name=\"c\" cols=\"55\" wrap=\"virtual\"></textarea> \n");
  print("<br> \n");
  print("<input type=\"submit\" value=\"Envoyer !\" name=\"B1\"> \n");
  print("</form> \n");
  print("</td></tr> \n");

  print("</table> \n");

print("</td></tr> \n");
print("</table> \n");


?>

J'ai eu une erreur sous WAMP avec la fonction ereg() que j'ai remplacée par preg() et je n'ai plus de message d'erreur...

Voici le lien chez Free (php4) ou le livre d'or fonctionne :
http://transbass.free.fr/Site/livredor.php

Et chez Hebeh (php5) où on ne peux pas ajouter de messages ni consulter les différentes pages :
http://www.alexis-coquerel.com/

Merci beaucoup!

Re: Problème livre d'or php5 (php4 ok)

Posté : 03 sept. 2009, 23:52
par Dr@ke
La syntaxe de preg_replace est comme celle de preg_match pour les patterns...
c'est à dire notamment les / au début et à la fin des patterns.
A première vue, en regardant rapidement sans approfondir, tu as donc pt oublié cet élément en remplaçant ereg par preg_replace...

Re: Problème livre d'or php5 (php4 ok)

Posté : 04 sept. 2009, 00:20
par alexi76
j'avais remplacer

[cpp]
function coupeMotsLongs($chaine,$ncaracteres) {
$chaineRes=$chaine;
while(ereg("([^ ]{".$ncaracteres."})[^ ]",$chaineRes,$corres)) {
$partRep=$corres[1];
$chaineRes=ereg_replace($partRep,$partRep." <br> ",$chaineRes);
}
return($chaineRes);
}
[/cpp]

par

[cpp]
function coupeMotsLongs($chaine,$ncaracteres) {
$chaineRes=$chaine;
while(preg_match("/([^ ]{".$ncaracteres."})[^ ]/",$chaineRes,$corres)) {
$partRep=$corres[1];
$chaineRes=preg_replace($partRep,$partRep." <br> ",$chaineRes);
}
return($chaineRes);
}[/cpp]

mais la syntaxe entre ereg_replace et preg_replace n'a pas l'air d'être tout a fait pareille, je vais vérifier ca, si le problème vient uniquement de là ca serai bien!

Re: Problème livre d'or php5 (php4 ok)

Posté : 04 sept. 2009, 00:54
par Dr@ke
Et de cette manière:
function coupeMotsLongs($chaine, $ncaracteres) {
$chaineRes = $chaine;
while(preg_match("/([^ ]{$ncaracteres})[^ ]/", $chaineRes, $corres)) {
$partRep=$corres[1];
$chaineRes=preg_replace("/$partRep/", $partRep . ' <br> ', $chaineRes);
}
return($chaineRes);
}

Re: Problème livre d'or php5 (php4 ok)

Posté : 04 sept. 2009, 01:11
par Invité
Ca ne fonctionne pas non plus de cette façon, j'ai retiré cette fonction pour couper les mots trop longs, et j'ai toujours le même problème :(

Re: Problème livre d'or php5 (php4 ok)

Posté : 04 sept. 2009, 01:20
par Dr@ke
Supprime tous les commentaires sur plusieurs lignes, c'est pas propre et illisible...
Supprime tous les @
Supprime les balises <?php ?> en trop...
Je le fais:
<?php
$largeurTableauxA="97%";                             // Largeur du TableauA
$couleurBordTableauA="#f4f4f4";                      // Couleur de la bordure du TableauA
$couleurFondEnteteTableauA="#f4f4f4";                // Couleur de fond de la ligne d'entête du tableauA
$policeEnteteTableauA="verdana";                     // Police utilisée dans la ligne d'entête du tableauA
$couleurPoliceEnteteTableauA="#0e0e0e";              // Couleur de la police utilisée dans la ligne d'entête du tableauA
$couleurFondLigneNomAuteurTableauA="#242424";        // Couleur de fond des lignes "Nom de l'auteur"
$policeLignesNomAuteurTableauA="verdana";            // Police utilisée dans les lignes "Nom de l'auteur"
$couleurPoliceLignesNomAuteurTableauA="#b60909";     // Couleur de la police utilisée dans les lignes "Nom de l'auteur"
$couleurFondLigneCommentaireTableauA="#f4f4f4";      // Couleur de fond des lignes "Commentaire"
$policeLignesCommentairesTableauA="times";           // Police utilisée dans les lignes "Commentaire"
$couleurPoliceLignesCommentairesTableauA="#000000";  // Couleur de la police utilisée dans les lignes "Commentaire"

$NombreComParPage=8;              // Nombre maximum de commentaires à afficher dans le tableau (par page)
$NombreMaxPages=40;                // Nombre maximum de pages de commentaires susceptibles d'être affichées

// === Paramètres d'affichage du TableauB (affichage du formulaire permettant d'ajouter un nouveau commentaire) ===

$largeurTableauxB="97%";                             // Largeur du TableauB
$couleurBordTableauB="#0e0e0e";                      // Couleur de la bordure du TableauB
$couleurFondEnteteTableauB="#242424";                // Couleur de fond de la ligne d'entête du tableauB
$policeEnteteTableauB="verdana";                     // Police utilisée dans la ligne d'entête du tableauB
$couleurPoliceEnteteTableauB="#f4f4f4";              // Couleur de la police utilisée dans la ligne d'entête du tableauB
$couleurFondFormulaireTableauB="#f4f4f4";            // Couleur de fond de la cellule affichant le formulaire
$policeFondFormulaireTableauB="verdana";             // Police utilisée dans la cellule affichant le formulaire
$couleurPoliceFondFormulaireTableauB="#0e0e0e";      // Couleur de la police utilisée dans la cellule affichant le formulaire

// === Paramètres destinés au contrôle des messages postés (dispositif "anti-piratage") ===

$longueurMaxCommentaires="2000";   // Nombre maximum de caractères pouvant être postés dans un commentaire
$longueurMaxMots="20";              // Nombre maximum de caractères par "mot" (ce dispositif permet d'empêcher une éventuelle augmentation incontrôlée de la largeur des tableaux)

if((strlen($n)>$longueurMaxCommentaires) or (strlen($c)>$longueurMaxCommentaires)) {
  print("Désolé, la taille maximale des commentaires pouvant être postés est limitée à $longueurMaxCommentaires caractères.<br>\n");
  print("<a href=\"livredor.php\">Retour au Livre d'Or</a>\n");
  exit;
}

if(!file_exists("ADmod/livre.dat")) {
  $idFicLivre=fopen("ADmod/livre.dat","w+");
    fputs($idFicLivre,"Fichier Index. Ne pas éditer !\n");
  fclose($idFicLivre);
}

if(!isset($c)) $c="";
if(!isset($n)) $n="";
if(!isset($p)) $p="";

function coupeMotsLongs($chaine, $ncaracteres) {
$chaineRes = $chaine;
while(preg_match("/([^ ]{$ncaracteres})[^ ]/", $chaineRes, $corres)) {
$partRep=$corres[1];
$chaineRes=preg_replace("/$partRep/", $partRep . ' <br> ', $chaineRes);
}
return($chaineRes);
}

if ($c and $n) {

  // détermination de la date
  $tdate=getdate();
  $jour=sprintf("%02.2d",$tdate["mday"])."/".sprintf("%02.2d",$tdate["mon"])."/".$tdate["year"];
  $heure=sprintf("%02.2d",$tdate["hours"])."H".sprintf("%02.2d",$tdate["minutes"]);
  $d=$jour." à ".$heure;

  // nettoyage du nom
  $n=htmlentities($n);
  $n=stripslashes($n);
  $n=trim($n);

  // nettoyage du commentaire
  $c=htmlentities($c);
  $c=str_replace(chr(10)," <br> ",$c);
  $c=str_replace(chr(13),"",$c);
  $c=stripslashes($c);
  $c=trim($c);

  $idFicLivreCom=fopen("ADmod/livre.dat","a+");
  fputs($idFicLivreCom,$n);         // 1ère ligne
  fputs($idFicLivreCom,"|");        //
  fputs($idFicLivreCom,$d."|\n");   //
  fputs($idFicLivreCom,$c."\n");    // 2ème ligne
  fclose($idFicLivreCom);

}

$TabLivre=file("ADmod/livre.dat");
$nLignesTabLivre=count($TabLivre)-1;
$nCommentaires=$nLignesTabLivre/2;

for($compt=1;$compt<=$nCommentaires;$compt++) {
  $nom[$compt]=trim(stripslashes(strtok($TabLivre[($compt*2)-1],"|")));
  $date[$compt]=trim(stripslashes(strtok("|")));
  $commentaire[$compt]=trim(stripslashes($TabLivre[($compt*2)]));
}

if($n and $c)  {
  print("<table align=\"center\" width=\"$largeurTableauxA\" border=\"1\"> \n");
  print("<tr><td bgcolor=\"$couleurFondLigneNomAuteurTableauA\" height=\"30\"> \n");
  print("<center> \n");
  print("<font face=\"$policeLignesNomAuteurTableauA\" color=\"$couleurPoliceLignesNomAuteurTableauA\" size=\"-1\"> \n");
  print("<b>Merci pour votre participation !</b> \n");
  print("</font> \n");
  print("</center> \n");
  print("</td></tr> \n");
  print("</table> \n");
  print("<br> \n");
}

if(!$p) {
  $p=1;   // $p représente le numéro de la page de commentaire à afficher : par défaut, $p=1
}

if($nCommentaires>0) {

  print("<table border=\"0\" cellspacing=\"0\" cellpadding=\"0\" width=\"$largeurTableauxA\" align=\"center\" bgcolor=\"$couleurBordTableauA\"> \n");
  print("<tr><td> \n");

    print("<table border=\"0\" width=\"100%\" cellspacing=\"1\" align=\"center\" cellpadding=\"5\"> \n");

    print("<tr> \n");
    print("<td bgcolor=\"$couleurFondEnteteTableauA\" height=\"30\"> \n");

    print("<font face=\"$policeEnteteTableauA\" color=\"$couleurPoliceEnteteTableauA\" size=\"-2\"> \n");
    print("<center> \n");
    print("<b><a href=\"#ajout\">Ajouter un nouveau commentaire</a></b> <br> \n");
    print("</center> \n");
    print("</font> \n");
    print("</td> \n");
    print("</tr> \n");

    for($compt=($nCommentaires-(($p-1)*$NombreComParPage));$compt>=max(1,($nCommentaires-($p*$NombreComParPage)+1));$compt--) {
      print("<tr><td bgcolor=\"$couleurFondLigneNomAuteurTableauA\"> \n");
        print("<table> \n");
        print("<tr> \n");
        print("<td width=\"10\">&nbsp;</td> \n");
        print("<td> \n");
        print("<font face=\"$policeLignesNomAuteurTableauA\" color=\"$couleurPoliceLignesNomAuteurTableauA\" size=\"-1\"><b>".coupeMotsLongs($nom[$compt],$longueurMaxMots)."</b>&nbsp, le ".$date[$compt]." :</font> \n");
        print("</td> \n");
        print("</tr> \n");
        print("</table> \n");
      print("</td></tr> \n");
      print("<tr><td bgcolor=\"$couleurFondLigneCommentaireTableauA\"> \n");
        print("<table> \n");
        print("<tr> \n");
        print("<td width=\"20\">&nbsp;</td> \n");
        print("<td> \n");
        print("<font face=\"$policeLignesCommentairesTableauA\" color=\"$couleurPoliceLignesCommentairesTableauA\">".coupeMotsLongs($commentaire[$compt],$longueurMaxMots)."</font>\n");
        print("</td> \n");
        print("</tr> \n");
        print("</table> \n");
      print("</td></tr> \n");
    }

    if(($nCommentaires>$NombreComParPage) and $p<=min($NombreMaxPages,floor((($nCommentaires-1)/$NombreComParPage)+1))) {
      print("<tr> \n");
      print("<td bgcolor=\"$couleurFondEnteteTableauA\" height=\"20\"> \n");
      print("<center> \n");
      print("<font face=\"$policeEnteteTableauA\" color=\"$couleurPoliceEnteteTableauA\" size=\"-2\"> \n");
      print("<b>pages</b> &nbsp; \n");
      print("<b> \n");
      for($a=1;$a<=min($NombreMaxPages,floor((($nCommentaires-1)/$NombreComParPage)+1));$a++) {
        if($a==$p) print("$a &nbsp; \n");
        else print("<a href=\"livredor.php?p=$a\">$a</a> &nbsp; \n");
      }
      print("</b> \n");
      print("</font> \n");
      print("</center> \n");
      print("</td> \n");
      print("</tr> \n");
    }

    print("</table> \n");

  print("</td></tr> \n");

  print("</table> \n");

  print("<br> \n");

}

if($nCommentaires<1)  {
  print("<table align=\"center\" width=\"$largeurTableauxA\" border=\"1\"> \n");
  print("<tr><td bgcolor=\"$couleurFondLigneNomAuteurTableauA\" height=\"30\"> \n");
  print("<center> \n");
  print("<font face=\"$policeLignesNomAuteurTableauA\" color=\"$couleurPoliceLignesNomAuteurTableauA\" size=\"-1\"> \n");
  print("<b>Le livre d'or ne comporte encore aucun commentaire.</b> \n");
  print("</font> \n");
  print("</center> \n");
  print("</td></tr> \n");
  print("</table> \n");
  print("<br> \n");
}

print("<a name=\"ajout\"></a>");

print("<table border=\"0\" cellspacing=\"0\" cellpadding=\"0\" width=\"$largeurTableauxB\" align=\"center\" bgcolor=\"$couleurBordTableauB\"> \n");
print("<tr><td> \n");

  print("<table border=\"0\" width=\"100%\" cellspacing=\"1\" align=\"center\" cellpadding=\"5\"> \n");

  print("<tr> \n");
  print("<td bgcolor=\"$couleurFondEnteteTableauB\" height=\"30\"> \n");
  print("<font face=\"$policeEnteteTableauB\" color=\"$couleurPoliceEnteteTableauB\" size=\"-1\"> \n");

  if($nCommentaires>0) print("<b><center>Ajouter un nouveau commentaire :</center></b> \n");
  else print("<b><center>Envoyer un premier commentaire :</center></b> \n");

  print("</font> \n");
  print("</td> \n");
  print("</tr> \n");

  print("<tr><td bgcolor=\"$couleurFondFormulaireTableauB\"> \n");
  print("<form method='POST' action=\"livredor.php\"> \n");
  print("<center> \n");
  print("<br> \n");
  print("<font face=\"$policeFondFormulaireTableauB\" color=\"$couleurPoliceFondFormulaireTableauB\" size=\"-1\"> \n");
  print("<b>Votre nom</b> :&nbsp; \n");
  print("</font> \n");
  print("<input type=\"text\" name=\"n\" size=\"24\"> \n");
  print("<br><br> \n");
  print("<textarea rows=\"6\" name=\"c\" cols=\"55\" wrap=\"virtual\"></textarea> \n");
  print("<br> \n");
  print("<input type=\"submit\" value=\"Envoyer !\" name=\"B1\"> \n");
  print("</form> \n");
  print("</td></tr> \n");
  print("</table> \n");
print("</td></tr> \n");
print("</table> \n");
?>
Essaye comme ca déja...

Re: Problème livre d'or php5 (php4 ok)

Posté : 04 sept. 2009, 01:36
par alexi76
je te remercie pour ton aide. En retirant les 2 '@' j'obtiens un message d'erreur "variable indéfinie". Je pense que je vais m'orienter vers une autre solution (qui fonctionne directement avec un serveur sous php5) avec base de donnée ca serai peut étre mieux en plus pour un livre d'or.

Re: Problème livre d'or php5 (php4 ok)

Posté : 04 sept. 2009, 01:40
par Dr@ke
Comme tu veux...
Tout en sachant que les @ sont fait pour masquer les erreurs, ce qui n'est justement pas Top quand on veut débugguer un script.
Bonne chance

Re: Problème livre d'or php5 (php4 ok)

Posté : 04 sept. 2009, 02:20
par Dr@ke
Perso, je n'ai pas trop l'habitude de baisser les bras au bout de 5 minutes, surtout quand je suis entrain d'aider quelqu'un...
Donc voici le script corrigé (j'ai fais le minimum) -> il fonctionne -> testé sur mon serveur -> bon :wink:
Au pire -> créer un fichier: livre.dat dans le même dossier, et le script peut être dorénavant renommer par n'importe quel nom...
<?php
$largeurTableauxA="97%";                             // Largeur du TableauA
$couleurBordTableauA="#f4f4f4";                      // Couleur de la bordure du TableauA
$couleurFondEnteteTableauA="#f4f4f4";                // Couleur de fond de la ligne d'entête du tableauA
$policeEnteteTableauA="verdana";                     // Police utilisée dans la ligne d'entête du tableauA
$couleurPoliceEnteteTableauA="#0e0e0e";              // Couleur de la police utilisée dans la ligne d'entête du tableauA
$couleurFondLigneNomAuteurTableauA="#242424";        // Couleur de fond des lignes "Nom de l'auteur"
$policeLignesNomAuteurTableauA="verdana";            // Police utilisée dans les lignes "Nom de l'auteur"
$couleurPoliceLignesNomAuteurTableauA="#b60909";     // Couleur de la police utilisée dans les lignes "Nom de l'auteur"
$couleurFondLigneCommentaireTableauA="#f4f4f4";      // Couleur de fond des lignes "Commentaire"
$policeLignesCommentairesTableauA="times";           // Police utilisée dans les lignes "Commentaire"
$couleurPoliceLignesCommentairesTableauA="#000000";  // Couleur de la police utilisée dans les lignes "Commentaire"

$NombreComParPage=8;              // Nombre maximum de commentaires à afficher dans le tableau (par page)
$NombreMaxPages=40;                // Nombre maximum de pages de commentaires susceptibles d'être affichées

// === Paramètres d'affichage du TableauB (affichage du formulaire permettant d'ajouter un nouveau commentaire) ===

$largeurTableauxB="97%";                             // Largeur du TableauB
$couleurBordTableauB="#0e0e0e";                      // Couleur de la bordure du TableauB
$couleurFondEnteteTableauB="#242424";                // Couleur de fond de la ligne d'entête du tableauB
$policeEnteteTableauB="verdana";                     // Police utilisée dans la ligne d'entête du tableauB
$couleurPoliceEnteteTableauB="#f4f4f4";              // Couleur de la police utilisée dans la ligne d'entête du tableauB
$couleurFondFormulaireTableauB="#f4f4f4";            // Couleur de fond de la cellule affichant le formulaire
$policeFondFormulaireTableauB="verdana";             // Police utilisée dans la cellule affichant le formulaire
$couleurPoliceFondFormulaireTableauB="#0e0e0e";      // Couleur de la police utilisée dans la cellule affichant le formulaire

// === Paramètres destinés au contrôle des messages postés (dispositif "anti-piratage") ===

$longueurMaxCommentaires="2000";   // Nombre maximum de caractères pouvant être postés dans un commentaire
$longueurMaxMots="20";              // Nombre maximum de caractères par "mot" (ce dispositif permet d'empêcher une éventuelle augmentation incontrôlée de la largeur des tableaux)

if((strlen($n)>$longueurMaxCommentaires) or (strlen($c)>$longueurMaxCommentaires)) {
  print("Désolé, la taille maximale des commentaires pouvant être postés est limitée à $longueurMaxCommentaires caractères.<br>\n");
  print("<a href=\"livredor.php\">Retour au Livre d'Or</a>\n");
  exit;
}

if(!file_exists("livre.dat")) {
  $idFicLivre=fopen("livre.dat","w+");
    fwrite($idFicLivre,"Fichier Index. Ne pas éditer !\n");
  fclose($idFicLivre);
}

if(!isset($c)) $c="";
if(!isset($n)) $n="";
if(!isset($p)) $p="";

function coupeMotsLongs($chaine, $ncaracteres) {
$chaineRes = $chaine;
while(preg_match("/([^ ]{$ncaracteres})[^ ]/", $chaineRes, $corres)) {
$partRep=$corres[1];
$chaineRes=preg_replace("/$partRep/", $partRep . ' <br> ', $chaineRes);
}
return($chaineRes);
}

if ($c and $n) {

  // détermination de la date
  $tdate=getdate();
  $jour=sprintf("%02.2d",$tdate["mday"])."/".sprintf("%02.2d",$tdate["mon"])."/".$tdate["year"];
  $heure=sprintf("%02.2d",$tdate["hours"])."H".sprintf("%02.2d",$tdate["minutes"]);
  $d=$jour." à ".$heure;

  // nettoyage du nom
  $n=htmlentities($n);
  $n=stripslashes($n);
  $n=trim($n);

  // nettoyage du commentaire
  $c=htmlentities($c);
  $c=str_replace(chr(10)," <br> ",$c);
  $c=str_replace(chr(13),"",$c);
  $c=stripslashes($c);
  $c=trim($c);

  $idFicLivreCom=fopen("livre.dat","a+");
  fwrite($idFicLivreCom,$n);         // 1ère ligne
  fwrite($idFicLivreCom,"|");        //
  fwrite($idFicLivreCom,$d."|\n");   //
  fwrite($idFicLivreCom,$c."\n");    // 2ème ligne
  fclose($idFicLivreCom);

}

$TabLivre=file("livre.dat");
$nLignesTabLivre=count($TabLivre)-1;
$nCommentaires=$nLignesTabLivre/2;

for($compt=1;$compt<=$nCommentaires;$compt++) {
  $nom[$compt]=trim(stripslashes(strtok($TabLivre[($compt*2)-1],"|")));
  $date[$compt]=trim(stripslashes(strtok("|")));
  $commentaire[$compt]=trim(stripslashes($TabLivre[($compt*2)]));
}

if($n and $c)  {
  print("<table align=\"center\" width=\"$largeurTableauxA\" border=\"1\"> \n");
  print("<tr><td bgcolor=\"$couleurFondLigneNomAuteurTableauA\" height=\"30\"> \n");
  print("<center> \n");
  print("<font face=\"$policeLignesNomAuteurTableauA\" color=\"$couleurPoliceLignesNomAuteurTableauA\" size=\"-1\"> \n");
  print("<b>Merci pour votre participation !</b> \n");
  print("</font> \n");
  print("</center> \n");
  print("</td></tr> \n");
  print("</table> \n");
  print("<br> \n");
}

if(!$p) {
  $p=1;   // $p représente le numéro de la page de commentaire à afficher : par défaut, $p=1
}

if($nCommentaires>0) {

  print("<table border=\"0\" cellspacing=\"0\" cellpadding=\"0\" width=\"$largeurTableauxA\" align=\"center\" bgcolor=\"$couleurBordTableauA\"> \n");
  print("<tr><td> \n");

    print("<table border=\"0\" width=\"100%\" cellspacing=\"1\" align=\"center\" cellpadding=\"5\"> \n");

    print("<tr> \n");
    print("<td bgcolor=\"$couleurFondEnteteTableauA\" height=\"30\"> \n");

    print("<font face=\"$policeEnteteTableauA\" color=\"$couleurPoliceEnteteTableauA\" size=\"-2\"> \n");
    print("<center> \n");
    print("<b><a href=\"#ajout\">Ajouter un nouveau commentaire</a></b> <br> \n");
    print("</center> \n");
    print("</font> \n");
    print("</td> \n");
    print("</tr> \n");

    for($compt=($nCommentaires-(($p-1)*$NombreComParPage));$compt>=max(1,($nCommentaires-($p*$NombreComParPage)+1));$compt--) {
      print("<tr><td bgcolor=\"$couleurFondLigneNomAuteurTableauA\"> \n");
        print("<table> \n");
        print("<tr> \n");
        print("<td width=\"10\">&nbsp;</td> \n");
        print("<td> \n");
        print("<font face=\"$policeLignesNomAuteurTableauA\" color=\"$couleurPoliceLignesNomAuteurTableauA\" size=\"-1\"><b>".coupeMotsLongs($nom[$compt],$longueurMaxMots)."</b>&nbsp, le ".$date[$compt]." :</font> \n");
        print("</td> \n");
        print("</tr> \n");
        print("</table> \n");
      print("</td></tr> \n");
      print("<tr><td bgcolor=\"$couleurFondLigneCommentaireTableauA\"> \n");
        print("<table> \n");
        print("<tr> \n");
        print("<td width=\"20\">&nbsp;</td> \n");
        print("<td> \n");
        print("<font face=\"$policeLignesCommentairesTableauA\" color=\"$couleurPoliceLignesCommentairesTableauA\">".coupeMotsLongs($commentaire[$compt],$longueurMaxMots)."</font>\n");
        print("</td> \n");
        print("</tr> \n");
        print("</table> \n");
      print("</td></tr> \n");
    }

    if(($nCommentaires>$NombreComParPage) and $p<=min($NombreMaxPages,floor((($nCommentaires-1)/$NombreComParPage)+1))) {
      print("<tr> \n");
      print("<td bgcolor=\"$couleurFondEnteteTableauA\" height=\"20\"> \n");
      print("<center> \n");
      print("<font face=\"$policeEnteteTableauA\" color=\"$couleurPoliceEnteteTableauA\" size=\"-2\"> \n");
      print("<b>pages</b> &nbsp; \n");
      print("<b> \n");
      for($a=1;$a<=min($NombreMaxPages,floor((($nCommentaires-1)/$NombreComParPage)+1));$a++) {
        if($a==$p) print("$a &nbsp; \n");
        else print("<a href=\"livredor.php?p=$a\">$a</a> &nbsp; \n");
      }
      print("</b> \n");
      print("</font> \n");
      print("</center> \n");
      print("</td> \n");
      print("</tr> \n");
    }

    print("</table> \n");

  print("</td></tr> \n");

  print("</table> \n");

  print("<br> \n");

}

if($nCommentaires<1)  {
  print("<table align=\"center\" width=\"$largeurTableauxA\" border=\"1\"> \n");
  print("<tr><td bgcolor=\"$couleurFondLigneNomAuteurTableauA\" height=\"30\"> \n");
  print("<center> \n");
  print("<font face=\"$policeLignesNomAuteurTableauA\" color=\"$couleurPoliceLignesNomAuteurTableauA\" size=\"-1\"> \n");
  print("<b>Le livre d'or ne comporte encore aucun commentaire.</b> \n");
  print("</font> \n");
  print("</center> \n");
  print("</td></tr> \n");
  print("</table> \n");
  print("<br> \n");
}

print("<a name=\"ajout\"></a>");

print("<table border=\"0\" cellspacing=\"0\" cellpadding=\"0\" width=\"$largeurTableauxB\" align=\"center\" bgcolor=\"$couleurBordTableauB\"> \n");
print("<tr><td> \n");

  print("<table border=\"0\" width=\"100%\" cellspacing=\"1\" align=\"center\" cellpadding=\"5\"> \n");

  print("<tr> \n");
  print("<td bgcolor=\"$couleurFondEnteteTableauB\" height=\"30\"> \n");
  print("<font face=\"$policeEnteteTableauB\" color=\"$couleurPoliceEnteteTableauB\" size=\"-1\"> \n");

  if($nCommentaires>0) print("<b><center>Ajouter un nouveau commentaire :</center></b> \n");
  else print("<b><center>Envoyer un premier commentaire :</center></b> \n");

  print("</font> \n");
  print("</td> \n");
  print("</tr> \n");

  print("<tr><td bgcolor=\"$couleurFondFormulaireTableauB\"> \n");
  print("<form method='POST' action=\"#\"> \n");
  print("<center> \n");
  print("<br> \n");
  print("<font face=\"$policeFondFormulaireTableauB\" color=\"$couleurPoliceFondFormulaireTableauB\" size=\"-1\"> \n");
  print("<b>Votre nom</b> :&nbsp; \n");
  print("</font> \n");
  print("<input type=\"text\" name=\"n\" size=\"24\"> \n");
  print("<br><br> \n");
  print("<textarea rows=\"6\" name=\"c\" cols=\"55\" wrap=\"virtual\"></textarea> \n");
  print("<br> \n");
  print("<input type=\"submit\" value=\"Envoyer !\" name=\"B1\"> \n");
  print("</form> \n");
  print("</td></tr> \n");
  print("</table> \n");
print("</td></tr> \n");
print("</table> \n");
?>

Re: Problème livre d'or php5 (php4 ok)

Posté : 04 sept. 2009, 03:39
par alexi76
Tu as quelle version de php sur ton serveur? En copiant le code tel-quel chez Free ca fonctionne mais pas chez Hebeh ni sous WAMP et Easy Php (sous Wamp et easy php il me met une erreur au niveau des variable "n" et "c" de :

Code : Tout sélectionner

if((strlen($n)>$longueurMaxCommentaires) or (strlen($c)>$longueurMaxCommentaires)) {


En même temps, sous VAMP j'ai récupéré php4 et apache 2.0 (comme chez free je suppose) et sa ne fonctionne pas non plus.
je n'y comprend vraiment rien pi j'ai passé toute la journée là dessus en plus :oops: merci beaucoup de prendre le temps de me répondre en tout cas! Je vais continuer a chercher pour se livre d'or là, les autres me plaisent pas...

Re: Problème livre d'or php5 (php4 ok)

Posté : 04 sept. 2009, 05:34
par Invité
Finalement j'ai trouvé un scripte a peu prés équivalent (plus complet) avec une base SQL, développé en php4, j'arrive a poster des messages, mais j'ai toujours le meme problème quand il y a plusieurs pages de commentaires (je reste bloqué sur la première) Je vais regarder demain (il commence a se faire tard!) si la fonction a changer entre les versions de php...

Re: Problème livre d'or php5 (php4 ok)

Posté : 04 sept. 2009, 10:14
par Dr@ke
Je suis sous Php5, le script brut ne fonctionnait pas sur mon serveur, maintenant oui.
Pour les erreurs $n et $c, ce n'est pas une question de version de Php, c'est une question de rapport d'erreur Notice, et cela fonctionne chez free car le rapport d'erreur est surement configuré par défaut. C'est à dire: les erreurs de type Notice ne sont pas affichées...
Ces deux erreurs étaient donc présente sur Php4 aussi, mais masquées par @.
Bref, le script ci-dessous, devrait fonctionner sans erreurs, je n'ai pas testé, mais logiquement oui:
<?php
$largeurTableauxA="97%";                             // Largeur du TableauA
$couleurBordTableauA="#f4f4f4";                      // Couleur de la bordure du TableauA
$couleurFondEnteteTableauA="#f4f4f4";                // Couleur de fond de la ligne d'entête du tableauA
$policeEnteteTableauA="verdana";                     // Police utilisée dans la ligne d'entête du tableauA
$couleurPoliceEnteteTableauA="#0e0e0e";              // Couleur de la police utilisée dans la ligne d'entête du tableauA
$couleurFondLigneNomAuteurTableauA="#242424";        // Couleur de fond des lignes "Nom de l'auteur"
$policeLignesNomAuteurTableauA="verdana";            // Police utilisée dans les lignes "Nom de l'auteur"
$couleurPoliceLignesNomAuteurTableauA="#b60909";     // Couleur de la police utilisée dans les lignes "Nom de l'auteur"
$couleurFondLigneCommentaireTableauA="#f4f4f4";      // Couleur de fond des lignes "Commentaire"
$policeLignesCommentairesTableauA="times";           // Police utilisée dans les lignes "Commentaire"
$couleurPoliceLignesCommentairesTableauA="#000000";  // Couleur de la police utilisée dans les lignes "Commentaire"
$NombreComParPage=8;              // Nombre maximum de commentaires à afficher dans le tableau (par page)
$NombreMaxPages=40;                // Nombre maximum de pages de commentaires susceptibles d'être affichées
// === Paramètres d'affichage du TableauB (affichage du formulaire permettant d'ajouter un nouveau commentaire) ===
$largeurTableauxB="97%";                             // Largeur du TableauB
$couleurBordTableauB="#0e0e0e";                      // Couleur de la bordure du TableauB
$couleurFondEnteteTableauB="#242424";                // Couleur de fond de la ligne d'entête du tableauB
$policeEnteteTableauB="verdana";                     // Police utilisée dans la ligne d'entête du tableauB
$couleurPoliceEnteteTableauB="#f4f4f4";              // Couleur de la police utilisée dans la ligne d'entête du tableauB
$couleurFondFormulaireTableauB="#f4f4f4";            // Couleur de fond de la cellule affichant le formulaire
$policeFondFormulaireTableauB="verdana";             // Police utilisée dans la cellule affichant le formulaire
$couleurPoliceFondFormulaireTableauB="#0e0e0e";      // Couleur de la police utilisée dans la cellule affichant le formulaire
// === Paramètres destinés au contrôle des messages postés (dispositif "anti-piratage") ===
$longueurMaxCommentaires="2000";   // Nombre maximum de caractères pouvant être postés dans un commentaire
$longueurMaxMots="20";              // Nombre maximum de caractères par "mot" (ce dispositif permet d'empêcher une éventuelle augmentation incontrôlée de la largeur des tableaux)

if(!file_exists("livre.dat")) {
  $idFicLivre=fopen("livre.dat","w+");
    fwrite($idFicLivre,"Fichier Index. Ne pas éditer !\n");
  fclose($idFicLivre);
}

function coupeMotsLongs($chaine, $ncaracteres) {
$chaineRes = $chaine;
while(preg_match("/[ ]{$ncaracteres}[ ]/", $chaineRes, $corres)) {
$partRep=$corres[1];
$chaineRes=preg_replace("/$partRep/", $partRep . ' <br> ', $chaineRes);
}
return($chaineRes);
}

if (isset($c) and isset($n)) {
if((strlen($n)>$longueurMaxCommentaires) or (strlen($c)>$longueurMaxCommentaires)) {
  print("Désolé, la taille maximale des commentaires pouvant être postés est limitée à $longueurMaxCommentaires caractères.<br>\n");
  print('<a href="' . $_SERVER["PHP_SELF"] . '">Retour au Livre d\'Or</a>' . "\n");
  exit;
}
  // détermination de la date
  $tdate=getdate();
  $jour=sprintf("%02.2d",$tdate["mday"])."/".sprintf("%02.2d",$tdate["mon"])."/".$tdate["year"];
  $heure=sprintf("%02.2d",$tdate["hours"])."H".sprintf("%02.2d",$tdate["minutes"]);
  $d=$jour." à ".$heure;

  // nettoyage du nom
  $n=htmlentities($n);
  $n=stripslashes($n);
  $n=trim($n);

  // nettoyage du commentaire
  $c=htmlentities($c);
  $c=str_replace(chr(10)," <br> ",$c);
  $c=str_replace(chr(13),"",$c);
  $c=stripslashes($c);
  $c=trim($c);

  $idFicLivreCom=fopen("livre.dat","a+");
  fwrite($idFicLivreCom,$n);         // 1ère ligne
  fwrite($idFicLivreCom,"|");        //
  fwrite($idFicLivreCom,$d."|\n");   //
  fwrite($idFicLivreCom,$c."\n");    // 2ème ligne
  fclose($idFicLivreCom);

  print("<table align=\"center\" width=\"$largeurTableauxA\" border=\"1\"> \n");
  print("<tr><td bgcolor=\"$couleurFondLigneNomAuteurTableauA\" height=\"30\"> \n");
  print("<center> \n");
  print("<font face=\"$policeLignesNomAuteurTableauA\" color=\"$couleurPoliceLignesNomAuteurTableauA\" size=\"-1\"> \n");
  print("<b>Merci pour votre participation !</b> \n");
  print("</font> \n");
  print("</center> \n");
  print("</td></tr> \n");
  print("</table> \n");
  print("<br> \n");
}

$TabLivre=file("livre.dat");
$nLignesTabLivre=count($TabLivre)-1;
$nCommentaires=$nLignesTabLivre/2;

for($compt=1;$compt<=$nCommentaires;$compt++) {
  $nom[$compt]=trim(stripslashes(strtok($TabLivre[($compt*2)-1],"|")));
  $date[$compt]=trim(stripslashes(strtok("|")));
  $commentaire[$compt]=trim(stripslashes($TabLivre[($compt*2)]));
}

if(!isset($p)) {
  $p=1;   // $p représente le numéro de la page de commentaire à afficher : par défaut, $p=1
}

if($nCommentaires>0) {
    print("<table border=\"0\" cellspacing=\"0\" cellpadding=\"0\" width=\"$largeurTableauxA\" align=\"center\" bgcolor=\"$couleurBordTableauA\"> \n");
    print("<tr><td> \n");
    print("<table border=\"0\" width=\"100%\" cellspacing=\"1\" align=\"center\" cellpadding=\"5\"> \n");
    print("<tr> \n");
    print("<td bgcolor=\"$couleurFondEnteteTableauA\" height=\"30\"> \n");
    print("<font face=\"$policeEnteteTableauA\" color=\"$couleurPoliceEnteteTableauA\" size=\"-2\"> \n");
    print("<center> \n");
    print("<b><a href=\"#ajout\">Ajouter un nouveau commentaire</a></b> <br> \n");
    print("</center> \n");
    print("</font> \n");
    print("</td> \n");
    print("</tr> \n");

    for($compt=($nCommentaires-(($p-1)*$NombreComParPage));$compt>=max(1,($nCommentaires-($p*$NombreComParPage)+1));$compt--) {
        print("<tr><td bgcolor=\"$couleurFondLigneNomAuteurTableauA\"> \n");
        print("<table> \n");
        print("<tr> \n");
        print("<td width=\"10\">&nbsp;</td> \n");
        print("<td> \n");
        print("<font face=\"$policeLignesNomAuteurTableauA\" color=\"$couleurPoliceLignesNomAuteurTableauA\" size=\"-1\"><b>".coupeMotsLongs($nom[$compt],$longueurMaxMots)."</b>&nbsp, le ".$date[$compt]." :</font> \n");
        print("</td> \n");
        print("</tr> \n");
        print("</table> \n");
        print("</td></tr> \n");
        print("<tr><td bgcolor=\"$couleurFondLigneCommentaireTableauA\"> \n");
        print("<table> \n");
        print("<tr> \n");
        print("<td width=\"20\">&nbsp;</td> \n");
        print("<td> \n");
        print("<font face=\"$policeLignesCommentairesTableauA\" color=\"$couleurPoliceLignesCommentairesTableauA\">".coupeMotsLongs($commentaire[$compt],$longueurMaxMots)."</font>\n");
        print("</td> \n");
        print("</tr> \n");
        print("</table> \n");
        print("</td></tr> \n");
    }

    if(($nCommentaires>$NombreComParPage) and $p<=min($NombreMaxPages,floor((($nCommentaires-1)/$NombreComParPage)+1))) {
      print("<tr> \n");
      print("<td bgcolor=\"$couleurFondEnteteTableauA\" height=\"20\"> \n");
      print("<center> \n");
      print("<font face=\"$policeEnteteTableauA\" color=\"$couleurPoliceEnteteTableauA\" size=\"-2\"> \n");
      print("<b>pages</b> &nbsp; \n");
      print("<b> \n");
      for($a=1;$a<=min($NombreMaxPages,floor((($nCommentaires-1)/$NombreComParPage)+1));$a++) {
        if($a==$p) print("$a &nbsp; \n");
        else print('<a href="' . $_SERVER["PHP_SELF"] . '?p=' . "$a\">$a</a> &nbsp; \n");
      }
      print("</b> \n");
      print("</font> \n");
      print("</center> \n");
      print("</td> \n");
      print("</tr> \n");
    }
  print("</table> \n");
  print("</td></tr> \n");
  print("</table> \n");
  print("<br> \n");

}
else  {
  print("<table align=\"center\" width=\"$largeurTableauxA\" border=\"1\"> \n");
  print("<tr><td bgcolor=\"$couleurFondLigneNomAuteurTableauA\" height=\"30\"> \n");
  print("<center> \n");
  print("<font face=\"$policeLignesNomAuteurTableauA\" color=\"$couleurPoliceLignesNomAuteurTableauA\" size=\"-1\"> \n");
  print("<b>Le livre d'or ne comporte encore aucun commentaire.</b> \n");
  print("</font> \n");
  print("</center> \n");
  print("</td></tr> \n");
  print("</table> \n");
  print("<br> \n");
}

  print("<a name=\"ajout\"></a>");
  print("<table border=\"0\" cellspacing=\"0\" cellpadding=\"0\" width=\"$largeurTableauxB\" align=\"center\" bgcolor=\"$couleurBordTableauB\"> \n");
  print("<tr><td> \n");
  print("<table border=\"0\" width=\"100%\" cellspacing=\"1\" align=\"center\" cellpadding=\"5\"> \n");
  print("<tr> \n");
  print("<td bgcolor=\"$couleurFondEnteteTableauB\" height=\"30\"> \n");
  print("<font face=\"$policeEnteteTableauB\" color=\"$couleurPoliceEnteteTableauB\" size=\"-1\"> \n");

  if($nCommentaires>0) print("<b><center>Ajouter un nouveau commentaire :</center></b> \n");
  else print("<b><center>Envoyer un premier commentaire :</center></b> \n");

  print("</font> \n");
  print("</td> \n");
  print("</tr> \n");
  print("<tr><td bgcolor=\"$couleurFondFormulaireTableauB\"> \n");
  print("<form method='POST' action='{$_SERVER["PHP_SELF"]}'> \n");
  print("<center> \n");
  print("<br> \n");
  print("<font face=\"$policeFondFormulaireTableauB\" color=\"$couleurPoliceFondFormulaireTableauB\" size=\"-1\"> \n");
  print("<b>Votre nom</b> :&nbsp; \n");
  print("</font> \n");
  print("<input type=\"text\" name=\"n\" size=\"24\"> \n");
  print("<br><br> \n");
  print("<textarea rows=\"6\" name=\"c\" cols=\"55\" wrap=\"virtual\"></textarea> \n");
  print("<br> \n");
  print("<input type=\"submit\" value=\"Envoyer !\" name=\"B1\"> \n");
  print("</form> \n");
  print("</td></tr> \n");
  print("</table> \n");
  print("</td></tr> \n");
  print("</table> \n");
?>
[EDIT]
Fonction preg_match et preg_replace corrigées, le script fonctionnait mais pas cette fonction:
function coupeMotsLongs($chaine, $ncaracteres) {
$chaineRes = $chaine;
while(preg_match("/[ ]{$ncaracteres}[ ]/", $chaineRes, $corres)) {
$partRep=$corres[1];
$chaineRes=preg_replace("/$partRep/", $partRep . ' <br> ', $chaineRes);
}
return($chaineRes);
}
[EDIT 2]
Légère simplification du code...

J'ai édité le script plus haut, pour le reste, ce n'est pas mon script :wink: