Page 1 sur 1

Parse error: syntax error, unexpected '$nombreDePages' (T_VARIABLE)

Posté : 09 févr. 2017, 19:25
par zougui
bonjour,

j'ai un problème je veu faire un minichat avec un système de pagination qui est à l'origine de mon problème voici le code de minichat.php
<?php setcookie('pseudo', time() + 365*24*3600, null, null, false, true); ?>

<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8" />
        <title>Mini-chat</title>
    </head>
    <style>
    form
    {
        text-align:center;
    }
    </style>
    <body>
    
    <form action="minichat_post.php" method="post">
        <p>
        <label for="pseudo">Pseudo</label> : <input type="text" name="pseudo" id="pseudo" /><br />
        message :<br/>
        <textarea name="message" rows="8" cols="35"></textarea><br />
        <p>Amusez-vous à utiliser du bbCode. Tapez par exemple :</p>

<blockquote style="font-size:0.8em">
<p>
    Je suis un [b]Crystalien[/b], et pourtant j'ai [i]pas voter[/i] sur http://crystalcraft3.wixsite.com/crystal<br />
    Je vous [b][color=green]recommande[/color][/b] d'aller sur ce site, c'est [i][color=purple]génial[/color][/i] !
</p>
</blockquote>

        <input type="submit" name="action" value="Envoyer" />
    </p>
    </form>

<?php
try
{
$bdd = new PDO('mysql:host=*****;dbname=******;charset=utf8', '*****', '******');
}
catch(Exception $e)
{
        die('Erreur : '.$e->getMessage());
}

try
{
    $count='SELECT count(id) as nb_ligne FROM minichat';
    $reponse = $bdd->prepare($count);
    $reponse->execute();
    $nb_enregistrement_total=$reponse->fetch();
}

catch(Exception $e)
{  
    die('Erreur : '.$e->getMessage());
}
$ligne_affichage=10
/* on va calculer le nombre de page que cela va donner */
$nombreDePages = ceil($nb_enregistrement_total['nb_ligne'] / $ligne_affichage);
/* On contrôle le bon format du GET et si il exist si c'est le cas on le reprend bien sinon ou le définit la limite basse de 0 */
if(isset($_GET['page']) and is_numeric($_GET['page']) and $_GET['page']>0) $_GET['page']=intval($_GET['page']); else $_GET['page']=0;
/* si on est dans une limite supérieur on prend les deux bornes */
if($_GET['page']<$nb_enregistrement_total['nb_ligne']) $depart=$ligne_affichage.' OFFSET '.$_GET['page'];
/* sinon on fait un limit simple avec le Nb d'enregistrement de page défini */
else { $depart=$ligne_affichage;}
/* on va maintenant s'occuper de la requête qui intègre les limites */
try
{  
    $liste='SELECT id,pseudo,message, DATE_FORMAT(date_crea, \'%d/%m/%Y\') AS date_creation_fr, TIME_FORMAT(date_crea, \'%Hh%imin%ss\') AS time_creation_fr FROM minichat ORDER BY ID DESC LIMIT 0, 10 '.$depart;
    $reponse = $bdd->prepare($liste);
    $reponse->execute();
}


while ($donnees = $reponse->fetch())
{
    echo '<p><strong>' . htmlspecialchars($donnees['date_creation_fr']) .' : ' . htmlspecialchars($donnees['time_creation_fr']) .' : ' . htmlspecialchars($donnees['pseudo']) . ' :   </strong>'.htmlspecialchars($donnees['message']).'</p>';
}



$reponse->closeCursor();

?>
    </body>
</html>
voici l'erreur exacte
Parse error: syntax error, unexpected '$nombreDePages' (T_VARIABLE) in /home/****/****/minichat.php on line 51

ligne 51 =
$nombreDePages = ceil($nb_enregistrement_total['nb_ligne'] / $ligne_affichage);
merci d'avance pour vos réponses

Re: Parse error: syntax error, unexpected '$nombreDePages' (T_VARIABLE)

Posté : 09 févr. 2017, 20:07
par or 1
c'est 2 lignes au dessus qu'il y a un problème.

Re: Parse error: syntax error, unexpected '$nombreDePages' (T_VARIABLE)

Posté : 10 févr. 2017, 10:35
par zougui
oui effectivement j'avais pas vue mais j'avais oublier le ; mais maintenant il me dit sa Fatal error: Cannot use try without catch or finally in /home/**/**/minichat.php on line 75
ligne 75 =
while ($donnees = $reponse->fetch())
{
    echo '<p><strong>' . htmlspecialchars($donnees['date_creation_fr']) .' : ' . htmlspecialchars($donnees['time_creation_fr']) .' : ' . htmlspecialchars($donnees['pseudo']) . ' :   </strong>'.htmlspecialchars($donnees['message']).'</p>';
}

Re: Parse error: syntax error, unexpected '$nombreDePages' (T_VARIABLE)

Posté : 10 févr. 2017, 11:04
par Spols
Comme souvent, il faut regarder la ligne juste au dessus de la ligne donnée, et bien lire le message d'erreur
Cannot use try without catch = on ne peut pas utiliser try sans catch

en effet tu a une instruction try et pas de catch

Re: Parse error: syntax error, unexpected '$nombreDePages' (T_VARIABLE)

Posté : 10 févr. 2017, 11:16
par zougui
ok merci j'ai mis sa
try
{  
    $liste='SELECT id,pseudo,message, DATE_FORMAT(date_crea, \'%d/%m/%Y\') AS date_creation_fr, TIME_FORMAT(date_crea, \'%Hh%imin%ss\') AS time_creation_fr FROM minichat ORDER BY ID DESC LIMIT 0, 10 '.$depart;
    $reponse = $bdd->prepare($liste);
    $reponse->execute();
}

catch(Exception $e)
{  
    die('Erreur : '.$e->getMessage());
}
sauf que les messages sont pas sauvegarder dans la base de donner, pour le catch je peu mettre quoi ?

Re: Parse error: syntax error, unexpected '$nombreDePages' (T_VARIABLE)

Posté : 10 févr. 2017, 11:26
par zougui
non c'est bon j'ai regler le problème mais le système de pagination ne marche pas esque vous savez pourquoi ?

Re: Parse error: syntax error, unexpected '$nombreDePages' (T_VARIABLE)

Posté : 10 févr. 2017, 11:49
par zougui
de plus en voulant mettre du bbCode cela ne marche pas,
<?php setcookie('pseudo', time() + 365*24*3600, null, null, false, true); 

if (isset($_POST['Message']))
{
    $Message = stripslashes($_POST['Message']); // On enlève les slashs qui se seraient ajoutés automatiquement
    $Message = htmlspecialchars($Message); // On rend inoffensives les balises HTML que le visiteur a pu rentrer
    $Message = nl2br($Message); // On crée des <br /> pour conserver les retours à la ligne
    
    // On fait passer notre message à la moulinette des regex
    $Message = preg_replace('#\[b\](.+)\[/b\]#isU', '<strong>$1</strong>', $Message);
    $Message = preg_replace('#\[i\](.+)\[/i\]#isU', '<em>$1</em>', $Message);
    $Message = preg_replace('#\[color=(red|green|blue|yellow|purple|olive)\](.+)\[/color\]#isU', '<span style="color:$1">$2</span>', $Message);
    $Message = preg_replace('#http://[a-z0-9._/-]+#i', '<a href="$0">$0</a>', $Message);

    // Et on affiche le résultat. Admirez !
    echo $Message . '<br /><hr />';
}
?>

<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8" />
        <title>Mini-chat</title>
    </head>
    <style>
    form
    {
        text-align:center;
    }
    </style>
    <body>
    
    <form action="minichat_post.php" method="post">
        <p>
        <label for="pseudo">Pseudo</label> : <input type="text" name="pseudo" id="pseudo" /><br />
        message :<br/>
        <textarea id="Message" name="message" rows="8" cols="35"></textarea><br />
        <p>Amusez-vous à utiliser du bbCode. Tapez par exemple :</p>

<blockquote style="font-size:0.8em">
<p>
    Je suis un [b]Crystalien[/b], et pourtant j'ai [i]pas voter[/i] sur http://crystalcraft3.wixsite.com/crystal<br />
    Je vous [b][color=green]recommande[/color][/b] d'aller sur ce site, c'est [i][color=purple]génial[/color][/i] !
</p>
</blockquote>

        <input type="submit" name="action" value="Envoyer" />
    </p>
    </form>
quand j'écrit le bbCode sa ne marche pas sa ne met ni en gras ni en italic ni en couleur je ne voit pas où est le problème, les regex sont au tout début du code esque c'est sa le problème ? il faut les placer dans un endroit précis ?

Re: Parse error: syntax error, unexpected '$nombreDePages' (T_VARIABLE)

Posté : 10 févr. 2017, 12:18
par @rthur
Bonjour,

PHPfrance est un forum et pas un chat de discussion, donc il est préférable que tu fasses des tests poussés de ton code d'abord, un premier niveau de debug toi même en cherchant sur Google comment résoudre les problèmes que tu rencontres, et seulement une fois que tu as fait cela si tu es encore bloqué alors il faut que tu nous poses une question en ne mettant que le code qui pose problème , ce que tu as essayé et les messages d'erreurs rencontrés.
Je ne dis ça pas pour être désagréable, mais uniquement car cela va t'aider à progresser.