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

Petit nouveau ! | 4 Messages

03 sept. 2009, 23:37

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!
Modifié en dernier par alexi76 le 05 sept. 2009, 03:39, modifié 2 fois.

Mammouth du PHP | 985 Messages

03 sept. 2009, 23:52

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...
Face à la roche, le ruisseau l'emporte toujours, non pas par la force mais par la persévérance.

Petit nouveau ! | 4 Messages

04 sept. 2009, 00:20

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!

Mammouth du PHP | 985 Messages

04 sept. 2009, 00:54

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);
}
Modifié en dernier par Dr@ke le 04 sept. 2009, 01:13, modifié 1 fois.
Face à la roche, le ruisseau l'emporte toujours, non pas par la force mais par la persévérance.

Invité
Invité n'ayant pas de compte PHPfrance

04 sept. 2009, 01:11

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 :(

Mammouth du PHP | 985 Messages

04 sept. 2009, 01:20

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...
Face à la roche, le ruisseau l'emporte toujours, non pas par la force mais par la persévérance.

Petit nouveau ! | 4 Messages

04 sept. 2009, 01:36

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.

Mammouth du PHP | 985 Messages

04 sept. 2009, 01:40

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
Face à la roche, le ruisseau l'emporte toujours, non pas par la force mais par la persévérance.

Mammouth du PHP | 985 Messages

04 sept. 2009, 02:20

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");
?>
Face à la roche, le ruisseau l'emporte toujours, non pas par la force mais par la persévérance.

Petit nouveau ! | 4 Messages

04 sept. 2009, 03:39

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...

Invité
Invité n'ayant pas de compte PHPfrance

04 sept. 2009, 05:34

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...

Mammouth du PHP | 985 Messages

04 sept. 2009, 10:14

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:
Face à la roche, le ruisseau l'emporte toujours, non pas par la force mais par la persévérance.