Problème lors de la mise en ligne de mon site

Fermé
ouimaisnormalement Messages postés 11 Date d'inscription samedi 13 octobre 2012 Statut Membre Dernière intervention 15 octobre 2012 - 13 oct. 2012 à 21:32
ouimaisnormalement Messages postés 11 Date d'inscription samedi 13 octobre 2012 Statut Membre Dernière intervention 15 octobre 2012 - 15 oct. 2012 à 18:29
Bonjour,


J'apprend le php et je bute sur un problème que j'ai déjà croisé dans les forums : lors de la création du site en local, tout se passe bien mais lors de sa mise en ligne, j'ai l'erreur suivante :
Parse error: syntax error, unexpected T_CONSTANT_ENCAPSED_STRING in /homez.501/rectangl/www/php/portfolio.php on line 1


Je fais des mises en ligne régulières à chaque étapes importantes de la construction du site. Jusque là tout allait bien.
La page qui pose problème est certainement un peu plus complexe en imbrication que les autres, le problème vient peut-être de là.

Peut-être ai-je fait une erreur de concaténation. J'ai lu quelques posts et je me dis que je n'ai peut-être pas bien compris ça.

Si quelqu'un a un peu de temps pour m'aider à relire mon fichier, ça m'aiderait beaucoup, je trop de points virgules dans les yeux je crois !

Je travaille avec Notepad++. Le fichier est encodé en utf-8(sans BOM)...


Le code de la page :


<?php
require 'connexion.php';

if(isset($_GET['id_rubrique'])){ // si tu n'as pas mémorisé $_GET['id'] la première fois
$id_rubrique=$_GET['id_rubrique']; // alors mémorise-le
}

$rub=$id_rubrique;
$rubrique=$rub;
?>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Rectangluti_Portfolio</title>

<link href="../css/css.css" rel="stylesheet" type="text/css" />

<!-- Spécifications pour IE 5 et supérieur : -->
<!--
[if gte IE 5]>
<link type="text/css" rel="stylesheet" href="styles-ie.css" />
<![endif]
-->

<!-- AFFICHAGE ACCORDEON GALERIES -->
<script type="text/javascript" src="../js/jquery.js"></script>
<script type="text/javascript" src="../js/effet.js"></script>

<!-- COLORBOX -->
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js"></script>
<script src="../js/colorbox/jquery.colorbox.js"></script>
<script>
$(document).ready(function(){
//Examples of how to assign the ColorBox event to elements
$(".group1").colorbox({rel:'group1', width:"75%", height:"75%"});
$(".group2").colorbox({rel:'group2', width:"75%", height:"75%"});
$(".group3").colorbox({rel:'group3', transition:"none", width:"75%", height:"75%"});
$(".group4").colorbox({rel:'group4', slideshow:true});
$(".ajax").colorbox();
$(".youtube").colorbox({iframe:true, innerWidth:425, innerHeight:344});
$(".iframe").colorbox({iframe:true,rel:'group1', width:"75%", height:"75%"});
$(".inline").colorbox({inline:true, width:"40%"});
$(".callbacks").colorbox({
onOpen:function(){ alert('onOpen: colorbox is about to open'); },
onLoad:function(){ alert('onLoad: colorbox has started to load the targeted content'); },
onComplete:function(){ alert('onComplete: colorbox has displayed the loaded content'); },
onCleanup:function(){ alert('onCleanup: colorbox has begun the close process'); },
onClosed:function(){ alert('onClosed: colorbox has completely closed'); }
});

//Example of preserving a JavaScript event for inline calls.
$("#click").click(function(){
$('#click').css({"background-color":"#f00", "color":"#fff", "cursor":"inherit"}).text("Open this window again and this message will still be here.");
return false;
});
});
</script>


</head>

<body>
<div id="conteneur">
<div id="header"> <!-- début "header" -->
<h1><a href="../index.php">Anne Basaille</a></h1>
</div> <!-- fin "header" -->

<div id="menu"> <!-- menugeneral -->
<ul>
<li><a href="../index.php">Accueil</a></li>
</ul>

<ul>
<li><a href="presentation.php">Présentation</a></li>
</ul>

<ul>
<!-- Affichage du menu -->
<?php
// fais une connexion
foreach($connexion->query('SELECT * FROM rubriques') as $ligne){
echo '<li>';
echo '<a href="portfolio.php?id_rubrique='.$ligne['id_rubrique'].'">';
echo $ligne['nom_rubrique'];
echo '</a>';
echo '</li>';
}
?>
</ul>
</div> <!-- /menu -->

<div id="main"> <!-- main -->
<div class="serie">
<ul>
<?php
foreach($connexion->query("SELECT * FROM projets WHERE rub='$rub' ") as $ligne){
$id_projet=$ligne['id_projet'];

echo '<li>';
echo '<div class="serieIcone">'; // div serieIcone
echo '<img src="../images/flecheMarron.gif">';
echo '</div>'; // fin div serieIcone

echo '<div class="serieTitre">'; // div serieTitre
echo $ligne['nom_projet'];
echo '</div>'; // fin div serieTitre

echo '<div class="serieGalerie">'; // div serieGalerie
// on récupère les variables qu'on connait et dont on aura besoin
$id_rubrique=$_GET['id_rubrique'];
$projet=$id_projet;

if($ligne['resume_projet']!=''){
echo '<div class="serieIntro">'; // div serieIntro
echo $ligne['resume_projet'];
echo '</div>'; // fin div serieIntro
}

foreach($connexion->query("SELECT * FROM oeuvres WHERE projet='$projet'") as $ligne){
if($ligne['image']!=''){
echo '<div class="vignettesSite">'; // vignette
echo '<a class="group1" href="../images/'.$ligne['rubrique'].'/'.$ligne['projet'].'/images/'.$ligne['image'].'" title="'.$ligne['titre'].'"><img src="../images/'.$ligne['rubrique'].'/'.$ligne['projet'].'/vignettes/'.$ligne['vignette'].'" /></a>';
echo '</div>'; // /vignette
}
elseif($ligne['video']!=''){
echo '<div class="vignettesSite">'; // vignette
echo '<a class="iframe" href="../images/'.$ligne['rubrique'].'/'.$ligne['projet'].'/videos/'.$ligne['video'].'" title="'.$ligne['titre'].'"><img src="../images/'.$ligne['rubrique'].'/'.$ligne['projet'].'/vignettes/'.$ligne['vignette'].'" /></a>';
echo '</div>'; // /vignette
}
}
echo '</div>'; // fin div serieGalerie
echo '</li>';
}
?>
</ul>
</div> <!-- /série -->

</div> <!-- /main -->

<div id="footer">
<a href="contact.php">Contact</a> - <a href="infosLegales.php">Informations légales</a> - <a href="admin/identification.php">Administration</a> - Copyright 2012
</div>

</div> <!-- /conteneur -->
</body>
</html>


Merci d'avance !!!





A voir également:

17 réponses

Atropa Messages postés 1940 Date d'inscription mercredi 25 juin 2008 Statut Membre Dernière intervention 11 mai 2014 274
13 oct. 2012 à 21:44
Sur ta première ligne de php il manque des parenthèse
sinon si tu es chez ovh ajoute :
SetEnv PHP_VER 5_3 
SetEnv REGISTER_GLOBALS 0


dans le .htaccess à la racine de l'hébergement

et tu peux aussi ajouter ça :

options -indexes -MultiViews


même si ca n'a pas grand chose a voir
0
ouimaisnormalement Messages postés 11 Date d'inscription samedi 13 octobre 2012 Statut Membre Dernière intervention 15 octobre 2012
Modifié par ouimaisnormalement le 13/10/2012 à 22:20
Hello !

Les parenthèse sur le require ne changent rien.
J'ai ajouté options -indexes -MultiViews sur le htaccess. Il avait déjà les 2 autres spécifications. (je suis bien chez ovh oui)

Je continue à chercher une erreur dans la concaténation. Pour l'instant, aucune trouvaille...
0
ouimaisnormalement Messages postés 11 Date d'inscription samedi 13 octobre 2012 Statut Membre Dernière intervention 15 octobre 2012
13 oct. 2012 à 22:25
Par exemple, est-ce que ces lignes sont correctes au niveau de la syntaxe ?

foreach($connexion->query("SELECT * FROM oeuvres WHERE projet='$projet'") as $ligne){
	if($ligne['image']!=''){
		echo '<div class="vignettesSite">'; // vignette
			echo '<a class="group1" href="../images/'.$ligne['rubrique'].'/'.$ligne['projet'].'/images/'.$ligne['image'].'" title="'.$ligne['titre'].'"><img src="../images/'.$ligne['rubrique'].'/'.$ligne['projet'].'/vignettes/'.$ligne['vignette'].'" /></a>';
		echo '</div>'; // /vignette
	}
	elseif($ligne['video']!=''){
		echo '<div class="vignettesSite">'; // vignette
			echo '<a class="iframe" href="../images/'.$ligne['rubrique'].'/'.$ligne['projet'].'/videos/'.$ligne['video'].'" title="'.$ligne['titre'].'"><img src="../images/'.$ligne['rubrique'].'/'.$ligne['projet'].'/vignettes/'.$ligne['vignette'].'" /></a>';
		echo '</div>'; // /vignette
	}
}
0
Atropa Messages postés 1940 Date d'inscription mercredi 25 juin 2008 Statut Membre Dernière intervention 11 mai 2014 274
Modifié par Atropa le 13/10/2012 à 22:34
je ne vois pas

par contre il y a beaucoup de variables inutiles
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
ouimaisnormalement Messages postés 11 Date d'inscription samedi 13 octobre 2012 Statut Membre Dernière intervention 15 octobre 2012
Modifié par ouimaisnormalement le 13/10/2012 à 22:38
grrumpf, je continue
0
Atropa Messages postés 1940 Date d'inscription mercredi 25 juin 2008 Statut Membre Dernière intervention 11 mai 2014 274
13 oct. 2012 à 22:45
je pense avoir trouvé

ca doiit venir de ces lignes

$rub = $id_rubrique;
$rubrique = $rub;

si $id_rubrique n'est pas déclaré ca risque de poser problème
0
Atropa Messages postés 1940 Date d'inscription mercredi 25 juin 2008 Statut Membre Dernière intervention 11 mai 2014 274
13 oct. 2012 à 22:47
ça ne sert a rien ce jeux de variable, pourquoi tu fais ça ?

fait attention aux injections sql il faut utiliser pdo et prepare comme ca tu es sure que niveau injection sql tu es cool
0
Atropa Messages postés 1940 Date d'inscription mercredi 25 juin 2008 Statut Membre Dernière intervention 11 mai 2014 274
13 oct. 2012 à 22:49
j'envois en petit bloque parce que le boutton "créer un nouveau sujet" est super mal placé je clic dessus quasiment a chaque fois que je veux envoyer (faudrait manifester pour qu'ils nous enlèvent ça)
0
ouimaisnormalement Messages postés 11 Date d'inscription samedi 13 octobre 2012 Statut Membre Dernière intervention 15 octobre 2012
13 oct. 2012 à 22:54
très bien les ptits blocs !

Je fais tout ce jeu de variables parce que je galère, je présume !!

Je crois voir ce que tu dis quand à l'utilisation de pdo et prepare. Je vais essayer de réécrire ça correctement
0
ouimaisnormalement Messages postés 11 Date d'inscription samedi 13 octobre 2012 Statut Membre Dernière intervention 15 octobre 2012
Modifié par ouimaisnormalement le 13/10/2012 à 22:51
ok je regarde ça de plus près.
Mais je ne comprends pas quand tu dis "si $id_rubrique n'est pas déclaré ca risque de poser problème".
id_rubrique est déclaré comme étant = à la valeur que lui renvoie le navigatreur (via $_GET['id_rubrique'])
par d"déclaré", est-ce que tu entends, appelé plus bas dans la page ?

Dans mes tables, j'ai 3 variables qui équivalent à id_rubrique. Je fais appel aux une ou aux autres selon les tables que j'appelle justement...

Ceci dit, je ne suis pas étonnée que tu trouves pleins de variables en trop. Je vais essayer d'épurer.

Merci !
0
ouimaisnormalement Messages postés 11 Date d'inscription samedi 13 octobre 2012 Statut Membre Dernière intervention 15 octobre 2012
13 oct. 2012 à 23:04
Est-ce que tu veux parler d'un truc du genre :

$bdd = new PDO('mysql:host='.$hote.';dbname='.$bd, $utilisateur, $passe);

$sql = $bdd->prepare('SELECT * FROM luxe);
$sql->execute();

et après, à la place de mes ligne foreach...

while ($resultat = $sql->fetch(PDO::FETCH_ASSOC)){
.....................
}
0
Atropa Messages postés 1940 Date d'inscription mercredi 25 juin 2008 Statut Membre Dernière intervention 11 mai 2014 274
14 oct. 2012 à 00:07
pour pdo c'est ça. un conseil n'utilise que ca et sous cette forme le plus souvent possible

et pour la variable elle n'est déclaré que si le get existe


if(isset($_GET['id_rubrique'])){ // si tu n'as pas mémorisé $_GET['id'] la première fois
$id_rubrique=$_GET['id_rubrique']; // alors mémorise-le
}

mais il n'y a pas de else donc sinon elle n'existe pas et tu donne une valeur a rub qui n'existe pas

si tu faisais :


$rub = (isset($_GET['id_rubrique']))? (int)$_GET['id_rubrique'] : 0;


au lieu de :


if(isset($_GET['id_rubrique'])){ // si tu n'as pas mémorisé $_GET['id'] la première fois
	$id_rubrique=$_GET['id_rubrique']; // alors mémorise-le
}

$rub = $id_rubrique;
$rubrique = $rub;


la variable $rubrique n'est appelé nul par dans la page

tu aurais le même résultat sans les problèmes de variable inexistante

a la ligne 95 et 109 tu te tapes un bon délire aussi.

ligne 95 : $id_projet=$ligne['id_projet'];
ligne 108 : $id_rubrique=$_GET['id_rubrique']; (tu redéfinit $id_rubrique sans vérifier que le get existe et pour lui donner la même valeur que tu lui a donné au début
ligne 109 : $projet=$id_projet; tu met dans une autre variable $ligne['id_projet']

utilise directement $ligne['id_projet'] et $rub pour c'est 2 cas la

après il y a peut être d'autre chose que je n'ai pas remarqué
0
Atropa Messages postés 1940 Date d'inscription mercredi 25 juin 2008 Statut Membre Dernière intervention 11 mai 2014 274
14 oct. 2012 à 00:09
j'ai pas tout effacé cette fois c'est cool

sinon juste pour ajouter que c'est peut être register global 0 du .htaccess qui fait l'erreur mais qu'il faut mieux laisser le .htaccess comme ça et modifier ton code
0
ouimaisnormalement Messages postés 11 Date d'inscription samedi 13 octobre 2012 Statut Membre Dernière intervention 15 octobre 2012
14 oct. 2012 à 11:44
Bon, je vais essayer de reprendre comme tu me conseilles.

Mais la variable $id_rubrique est déclarée dans le get. J'avais justement vérifié avec des echo.

Après, selon les tables que j'appelle, je fais appel aux variables de ces tables qui ont la même valeur que id_rubrique.

bon, j'ai dû rater un truc...

Je m'y recolle.

Merci !
0
Atropa Messages postés 1940 Date d'inscription mercredi 25 juin 2008 Statut Membre Dernière intervention 11 mai 2014 274
14 oct. 2012 à 12:48
voilà qui devrait fonctionné

<?php
require_once('connexion.php');
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Rectangluti_Portfolio</title>

<link href="../css/css.css" rel="stylesheet" type="text/css" />

<!-- Spécifications pour IE 5 et supérieur : -->
<!--
[if gte IE 5]>
<link type="text/css" rel="stylesheet" href="styles-ie.css" />
<![endif]
-->

<!-- AFFICHAGE ACCORDEON GALERIES -->
<script type="text/javascript" src="../js/jquery.js"></script>
<script type="text/javascript" src="../js/effet.js"></script>

<!-- COLORBOX -->
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js"></script>
<script src="../js/colorbox/jquery.colorbox.js"></script>
<script>
$(document).ready(function(){
//Examples of how to assign the ColorBox event to elements
$(".group1").colorbox({rel:'group1', width:"75%", height:"75%"});
$(".group2").colorbox({rel:'group2', width:"75%", height:"75%"});
$(".group3").colorbox({rel:'group3', transition:"none", width:"75%", height:"75%"});
$(".group4").colorbox({rel:'group4', slideshow:true});
$(".ajax").colorbox();
$(".youtube").colorbox({iframe:true, innerWidth:425, innerHeight:344});
$(".iframe").colorbox({iframe:true,rel:'group1', width:"75%", height:"75%"});
$(".inline").colorbox({inline:true, width:"40%"});
$(".callbacks").colorbox({
onOpen:function(){ alert('onOpen: colorbox is about to open'); },
onLoad:function(){ alert('onLoad: colorbox has started to load the targeted content'); },
onComplete:function(){ alert('onComplete: colorbox has displayed the loaded content'); },
onCleanup:function(){ alert('onCleanup: colorbox has begun the close process'); },
onClosed:function(){ alert('onClosed: colorbox has completely closed'); }
});

//Example of preserving a JavaScript event for inline calls.
$("#click").click(function(){
$('#click').css({"background-color":"#f00", "color":"#fff", "cursor":"inherit"}).text("Open this window again and this message will still be here.");
return false;
});
});
</script>


</head>

<body>
<div id="conteneur">
<div id="header"> <!-- début "header" -->
<h1><a href="../index.php">Anne Basaille</a></h1>
</div> <!-- fin "header" -->

<div id="menu"> <!-- menugeneral -->
<ul>
<li><a href="../index.php">Accueil</a></li>
</ul>

<ul>
<li><a href="presentation.php">Présentation</a></li>
</ul>

<ul>
<!-- Affichage du menu -->
<?php
// fais une connexion
foreach($connexion->query('SELECT * FROM rubriques') as $ligne){
	echo '<li><a href="portfolio.php?id_rubrique='.$ligne['id_rubrique'].'">'.$ligne['nom_rubrique'].'</a></li>';
}
?>
</ul>
</div> <!-- /menu -->

<div id="main"> <!-- main -->
<div class="serie">
<ul>
<?php

$rub = (isset($_GET['id_rubrique'])) $_GET['id_rubrique'] : 0;
foreach($connexion->query('SELECT * FROM projets WHERE rub=\''.$rub.'\'') as $rubLine){

	echo '<li>'.
		'<div class="serieIcone"><img src="../images/flecheMarron.gif"></div>'. // fin div serieIcone
		'<div class="serieTitre">'.$rubLine['nom_projet'].'</div>'. // div serieTitre
		'<div class="serieGalerie">'; // div serieGalerie

	if($rubLine['resume_projet'] != '') echo '<div class="serieIntro">'.$rubLine['resume_projet'].'</div>';

	foreach($connexion->query('SELECT * FROM oeuvres WHERE projet=\''.$rubLine['id_projet'].'\'') as $oline){
		if($oline['image']!='' || $oline['video']!=''){
			echo '<div class="vignettesSite">'; // vignette
			if($oline['image']!= '' ) {
				$class = ($oline['image']!= '' )? 'group1' : 'iframe';
				$href = ($oline['image']!= '' )? '/images/'.$oline['image'] : '/videos/'.$oline['video'];
			}
			echo '<a class="'.$class.'" href="../images/'.$oline['rubrique'].'/'.$oline['projet'].$href.'" title="'.$oline['titre'].'">'.
			'<img src="../images/'.$oline['rubrique'].'/'.$oline['projet'].'/vignettes/'.$oline['vignette'].'" /></a>'.
			'</div>'; // /vignette
		}
	}
	echo '</div>'. // fin div serieGalerie
	'</li>';
}
?>
</ul>
</div> <!-- /série -->

</div> <!-- /main -->

<div id="footer">
<a href="contact.php">Contact</a> - <a href="infosLegales.php">Informations légales</a> - <a href="admin/identification.php">Administration</a> - Copyright 2012
</div>

</div> <!-- /conteneur -->
</body>
</html> 
0
Atropa Messages postés 1940 Date d'inscription mercredi 25 juin 2008 Statut Membre Dernière intervention 11 mai 2014 274
14 oct. 2012 à 12:55
tu nommes mal tes variables et du coup tu t'embrouilles avec

de plus ton code contient trop de répétitions ça embrouille d'autant plus la lecture.

dit toi qu'en générale plus un code est court pour faire une tâche donnée plus il est efficace. mis à part la longueur du nom des variables qui ne change pas grand chose

$ligneRubrique vaut mieux que $ligne ou $lr parce que c'est plus clair
0
ouimaisnormalement Messages postés 11 Date d'inscription samedi 13 octobre 2012 Statut Membre Dernière intervention 15 octobre 2012
14 oct. 2012 à 13:19
argh, non ça ne marche pas.

Je sais bien que plus le code est court, plus clair c'est.
Mais comme j'apprends, je crois que je décortique. Certainement que je me mélange les pinceaux !!

Et alors, je n'ai absolument pas appris à écrire comme tu le fais.

Je continue donc...
0
Atropa Messages postés 1940 Date d'inscription mercredi 25 juin 2008 Statut Membre Dernière intervention 11 mai 2014 274
14 oct. 2012 à 21:07
un code plus court au niveau algorithmique.

évité de répéter plusieurs fois la même chose ce n'est pas qu'au niveau de la lisibilité que c'est important pour l'optimisation ce l'est également.

pour le code que je t'ai donnée si il ne fonctionne pas j'ai peut être fait une erreur je n'ai aps pu le tester vu que je n'ai pas de base de donnée pour

pour la synthaxe tu parles de ca ?
$rub = (isset($_GET['id_rubrique']))? $_GET['id_rubrique'] : 0;


si c'est pour ça c'est tout simplte ca revient a faire

if((isset($_GET['id_rubrique'])) $rub = $_GET['id_rubrique'];
else $rub = 0;


je vient de me rendre compte que j'avais oublié le "?" pour la condition

il faut l'ajouter

ca se présente sous cette forme

$var = (condition)? 'valeur si la condition retourne true' : 'valeur si la condition retourne false';
0
ouimaisnormalement Messages postés 11 Date d'inscription samedi 13 octobre 2012 Statut Membre Dernière intervention 15 octobre 2012
15 oct. 2012 à 10:10
Bon, j'essaie de suivre tes conseils mais ça ne marche pas.

De toute façon, si le reste du site fonctionne, c'est que ma manière d'écrire n'est pas si pourrie que ça.
Je continue à optimiser mes déclarations de variables, ce sera déjà ça de fait.
0
Atropa Messages postés 1940 Date d'inscription mercredi 25 juin 2008 Statut Membre Dernière intervention 11 mai 2014 274
15 oct. 2012 à 17:49
pour la façon d'écrire ça ne change rien c'est juste plus rapide

si vraiment tu ne trouve pas il faudrait que tu m'envoies le contenu complet de ce fichier et de connexion.php
0
ouimaisnormalement Messages postés 11 Date d'inscription samedi 13 octobre 2012 Statut Membre Dernière intervention 15 octobre 2012
15 oct. 2012 à 18:29
alors j'ai refait le fichier en mettant le script de connexion plus bas et en réécrivant le ifset et ses 3 variables différemment.
La connexion plus bas, c'est pas très catholique mais ça passe.

Je crois que ce qui faisait bugger, ce sont mes div dans les div pour afficher un menu déroulant.

En théorie, ça devrait marcher puisque ça marche en local...

Mais, ça ira bien comme ça pour l'instant.
En fait, je dois faire valider un examen basique de php la semaine prochaine, donc les subtilités de webdesign sont remises à plus tard.

En tout cas, je note bien tes conseils, et je suis bien d'accord sur le fait d'optimiser. C'est logique.
Je continue donc dans ce sens.

Merci beaucoup pour ton aide !!
0