Page 1 sur 1

Problème d'erreur php

Posté : 12 juin 2016, 14:16
par Larker
Bonjour,

Je viens de passer de la version 5.3 à la version 5.5 de php et je rencontre un certain nombres d'erreurs. Pour la plupart j'ai réussi à les corriger mais pour certaines je n'y parviens pas et je ne vois pas d'où peut venir l'erreur.
Par exemple l'affichage d'une news me donne une erreur :

Parse error: syntax error, unexpected 'else' (T_ELSE) in /public_html/accueil/modules/news.php on line 81

Normalement cette erreur veut dire qu'il doit manquer une accolade à un endroit mais pourtant j'ai vérifié et tout est bon.

Voici mon code :
<?php
if (!empty($_GET)) {
    if (isset($_GET[id])) {
    $stmt = $bdd->prepare("SELECT id, titre, posteur, id_posteur, resume, img, contenu, DATE_FORMAT(date, '%d/%m/%Y') AS date, active FROM news WHERE active=1 AND id = :id");
    $stmt->bindValue(':id',$_GET['id'],PDO::PARAM_INT);
    if (!$stmt->execute()) {
        echo 'ERREUR';
        exit; //pas obligatoire
    }
    $data = $stmt->fetch();
	$stmt->closeCursor();
	}
	}
?>
<?php
if (!empty($data)){
?>
<h4 class="news-title"><?=$data['titre']; ?></h4>
				<div class="contenuviewnews">
					<div id="news-date">
						<i>Ajout&eacute; le <?=$data['date']; ?>, Par <a href="?mod=profil&id=<?=$data['id_posteur']; ?>" class="lien_profil"><?=$data['posteur']; ?></a>&nbsp;&nbsp;<img src="images/vu.jpg" title="visites"/>
						<b><?=$visit['nb']; ?></b>
						</i>
					</div>
					<div id="news-contenu">
<?php
    $stmt = $bdd->prepare("SELECT * FROM news_genre WHERE id_news = :id");
	$stmt->bindValue(':id',$_GET['id'],PDO::PARAM_INT);
    if (!$stmt->execute()) {
        echo 'ERREUR';
        exit; //pas obligatoire
    }
    while ($getGenre = $stmt->fetch()) {
?>    
					<a style="text-decoration:none;" href="?mod=genre news&genre=<?=$getGenre['genre']; ?>"><div class="genre"><?=$getGenre['genre']; ?></div></a>
<? } ?>
					<br><br>
					<b><?=nl2br(stripslashes($data['resume'])); ?></b><br><br>
					<div>
							<?=nl2br(stripslashes($data['contenu'])); ?>				
					</div>
					</div>
				</div>
<?php } else{
echo '<script language="Javascript">
<!--
document.location.replace(\'index.php\');
// -->
</script>';} ?>
La ligne 81 est cette ligne :
<?php } else{
echo '<script language="Javascript">
<!--
document.location.replace(\'index.php\');
// -->
</script>';} ?>
Merci d'avance pour votre aide. ;)

Re: Problème d'erreur php

Posté : 12 juin 2016, 15:44
par or 1
le code indiqué n'a pas 81 lignes, il faudrait donc le code complet.

Re: Problème d'erreur php

Posté : 12 juin 2016, 15:46
par Larker
D'accord, voici le code complet :
<?php
if(!defined(PROTECTION_FICHIER) && PROTECTION_FICHIER != 'protection_Projet')
{
	header('Location: index.php');
}
// Stats visite critique
$id_news = $_GET['id'];
    $visitIpQuery = $bdd->prepare("SELECT ip FROM visite_news WHERE id_news = :id AND ip='".$_SERVER['REMOTE_ADDR']."'");
    $visitIpQuery->bindValue(':id',$_GET['id'],PDO::PARAM_INT);
    if (!$visitIpQuery->execute()) {
        echo 'ERREUR';
        exit; //pas obligatoire
    }
    $visiteur = $visitIpQuery->fetch();
	$visitIpQuery->closeCursor();
if($visitIpQuery->rowCount() == 0) {
$req = $bdd->prepare('INSERT INTO visite_news(id_news, ip, date) VALUES(:id_news, :ip, :date)');
$req->execute(array(
	'id_news' => $id_news,
	'ip' => $_SERVER['REMOTE_ADDR'],
	'date' => date('d\-n\-Y')
    ));
}
?>
<?php
    $visitNews = $bdd->prepare("SELECT COUNT(ip) AS 'nb' FROM visite_news WHERE id_news = :id");
    $visitNews->bindValue(':id',$_GET['id'],PDO::PARAM_INT);
    if (!$visitNews->execute()) {
        echo 'ERREUR';
        exit; //pas obligatoire
    }
    $visit = $visitNews->fetch();
	$visitNews->closeCursor();
?>
<div class="container_12">
	<div class="grid_8" style="overflow:hidden;">
		<div id="news" class="page-news">		
<?php
if (!empty($_GET)) {
    if (isset($_GET[id])) {
    $stmt = $bdd->prepare("SELECT id, titre, posteur, id_posteur, resume, img, contenu, DATE_FORMAT(date, '%d/%m/%Y') AS date, active FROM news WHERE active=1 AND id = :id");
    $stmt->bindValue(':id',$_GET['id'],PDO::PARAM_INT);
    if (!$stmt->execute()) {
        echo 'ERREUR';
        exit; //pas obligatoire
    }
    $data = $stmt->fetch();
	$stmt->closeCursor();
	}
	}
?>
<?php
if (!empty($data)){
?>
<h4 class="news-title"><?=$data['titre']; ?></h4>
				<div class="contenuviewnews">
					<div id="news-date">
						<i>Ajout&eacute; le <?=$data['date']; ?>, Par <a href="?mod=profil&id=<?=$data['id_posteur']; ?>" class="lien_profil"><?=$data['posteur']; ?></a>&nbsp;&nbsp;<img src="images/vu.jpg" title="Nombre de visites"/>
						<b><?=$visit['nb']; ?></b>
						</i>
					</div>
					<div id="news-contenu">
<?php
    $stmt = $bdd->prepare("SELECT * FROM news_genre WHERE id_news = :id");
	$stmt->bindValue(':id',$_GET['id'],PDO::PARAM_INT);
    if (!$stmt->execute()) {
        echo 'ERREUR';
        exit; //pas obligatoire
    }
    while ($getGenre = $stmt->fetch()) {
?>    
					<a style="text-decoration:none;" href="?mod=genre news&genre=<?=$getGenre['genre']; ?>"><div class="genre"><?=$getGenre['genre']; ?></div></a>
<? } ?>
					<br><br>
					<b><?=nl2br(stripslashes($data['resume'])); ?></b><br><br>
					<div>
							<?=nl2br(stripslashes($data['contenu'])); ?>				
					</div>
					</div>
				</div>
<?php } else{
echo '<script language="Javascript">
<!--
document.location.replace(\'?mod=accueil\');
// -->
</script>';} ?>
	</div>
<div id="fb-root"></div>
<script>(function(d, s, id) {
  var js, fjs = d.getElementsByTagName(s)[0];
  if (d.getElementById(id)) return;
  js = d.createElement(s); js.id = id;
  js.src = "//connect.facebook.net/fr_FR/sdk.js#xfbml=1&version=v2.0";
  fjs.parentNode.insertBefore(js, fjs);
}(document, 'script', 'facebook-jssdk'));</script>
<div class="fb-comments" data-href="" data-numposts="5" data-colorscheme="light" data-width="100%"></div>
	</div>
		<div class="grid_4">
	<?php
	$getNewsQuery = $bdd->prepare("SELECT id, titre, posteur, contenu, resume, genre, img, DATE_FORMAT(date, '%d/%m/%Y') AS date FROM `news` WHERE `active` = '1' AND id != :id ORDER BY `id` DESC LIMIT 0,5");
	$getNewsQuery->bindValue(':id',$_GET['id'],PDO::PARAM_INT);
    if (!$getNewsQuery->execute()) {
        echo 'ERREUR';
        exit; //pas obligatoire
    }
    while ($getNews = $getNewsQuery->fetch()) {
?> 
                            <div class="wrapper img-top2">
<div class="img-indent1"><a href="?mod=news&id=<?=$getNews['id']; ?>"><div class="grows imgnews"><img src="<?=$getNews['img']; ?>" width="300" height="168" alt="img"></div></a></div>
                            	<div class="autocollant"><?if ($getNews['genre'] == "1")
{
    echo 'Film';
}
elseif ($getNews['genre'] == "2")
{
    echo 'Série';
}
elseif ($getNews['genre'] == "3")
{
    echo 'Tv';
}
?></div>
								<div class="element-news"><a style="color:#FFF;text-decoration:none;font-weight:bold" href="?mod=news&id=<?=$getNews['id']; ?>"><?=$getNews['titre']; ?></a></div>
                            </div>
<?php } ?><br>

	</div>
                <div class="wrapper">
                	<div class="grid_12">
                    	<div class="border1"></div>
                    </div>
                </div>
</div>

Re: Problème d'erreur php

Posté : 12 juin 2016, 17:44
par @rthur
Hmmm...

Je dirai que tu as le paramètre shorttags désactivé et donc tu as oublié de mettre <?php ici :
<? } ?>
http://php.net/manual/en/ini.core.php#i ... t-open-tag

Re: Problème d'erreur php

Posté : 12 juin 2016, 17:50
par Larker
Bien vu merci @rthur ! :)

Re: [RESOLU] Problème d'erreur php

Posté : 13 juin 2016, 10:11
par Spols
Du coup, vérifie tes tag du style <?=$getGenre['genre']; ?> il ne fonctionneront probablement pas non plus

Re: [RESOLU] Problème d'erreur php

Posté : 13 juin 2016, 10:17
par @rthur
Du coup, vérifie tes tag du style <?=$getGenre['genre']; ?> il ne fonctionneront probablement pas non plus
Je m'étais fait la même réflexion mais après vérification, depuis PHP 5.4 l'opérateur <?= fonctionne en permanence et n'est plus concerné par la directive short-tags