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

zougui
Invité n'ayant pas de compte PHPfrance

09 févr. 2017, 19:25

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

Mammouth du PHP | 2703 Messages

09 févr. 2017, 20:07

c'est 2 lignes au dessus qu'il y a un problème.

zougui
Invité n'ayant pas de compte PHPfrance

10 févr. 2017, 10:35

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>';
}

Mammouth du PHP | 1967 Messages

10 févr. 2017, 11:04

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
Spols
pour les fan de rubik's cube ou pour les curieux ==> le portail francophone du rubik's cube

zougui
Invité n'ayant pas de compte PHPfrance

10 févr. 2017, 11:16

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 ?

zougui
Invité n'ayant pas de compte PHPfrance

10 févr. 2017, 11:26

non c'est bon j'ai regler le problème mais le système de pagination ne marche pas esque vous savez pourquoi ?

zougui
Invité n'ayant pas de compte PHPfrance

10 févr. 2017, 11:49

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 ?

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 9782 Messages

10 févr. 2017, 12:18

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.
Quand tout le reste a échoué, lisez le mode d'emploi...