Parse error sur des variables déclarées

Résolu/Fermé
Eylun - Modifié par Eylun le 22/02/2014 à 18:12
 Eylun - 22 févr. 2014 à 22:41
Bonjour,

Après diverses recherches, et n'ayant toujours pas résolu un soucis, je pose donc mon soucis ici.

Je suis débutante en PHP, et je suis actuellement en train de tenter de sécuriser mon site avec des requêtes préparées pour éviter les injections SQL.

Jusque-là, pas de soucis, j'ai compris la méthode qu'on m'a apprise, seulement, j'ai cette erreur que je ne parviens décidément pas à résoudre :

Parse error: syntax error, unexpected T_VARIABLE in [...] on line 37

Après quelques recherches, j'ai pu voir que cette erreur surgissait en cas de variables mal déclarées, alors que pourtant, mes variables le sont. Quand ce n'était pas "sécurisé", ça fonctionnait nickel. Et là...plus rien, et j'ai beau revoir l'ensemble du code, et même commenter pour voir, afficher mes variables avec des echo, rien à faire, elles s'affichent, et j'ai quand même cette erreur.

Il n'y a aucune faute de frappe non-plus nulle part. J'ai aussi volontairement remplacé mes noms de table par d'autres mots.

Afin de mieux visualiser mon problème, voici le formulaire concerné :


<form method="post" action="ma_page.php#ancre">
<b>Choisissez une recette à afficher :</b>
<select name="recette">
<?php
//Rechercher toutes les recettes débloquées (table ***)
$req_recettes_debloquees = $bdd->prepare("SELECT * FROM table WHERE pseudo=:pseudo ORDER BY nom_recette");
$req_recettes_debloquees->bindParam(":pseudo",$pseudo,PDO::PARAM_STR);
$req_recettes_debloquees->execute();
while($recettes_debloquees = $req_recettes_debloquees->fetch())
{
echo "<option value='".$recettes_debloquees['id_recette']."'>".$recettes_debloquees['nom_recette']."</option>";
}
?>
</select>
<input type="submit" value="Afficher la recette" />
</form>



[TRAITEMENT DU FORMULAIRE]
<?php
if(!empty($_POST['recette']))
{
$id_recette = $_POST['recette'];


//On va d'abord donc rechercher le nom de potion en fonction de cet id donné.
$req_titre_recette = $bdd->prepare("SELECT nom_recette FROM table WHERE id_recette=:id_recette");
$req_titre_recette->bindParam(":id_recette",$id_recette,PDO::PARAM_STR);
$req_titre_recette->execute();
$resultat_titre_recette = $req_titre_recette->fetch();
$titre_recette = $resultat_titre_recette['nom_recette'];

//Et là, plusieurs cas possibles.
//Pour alléger le code de cette page, on fait le traitement sur un autre fichier.
include ("scripts_potions/script_affichage_recette.php");
}
?>



Et voilà le script concerné, je vous indique la ligne que le message d'erreur désigne :


if($titre_recette == "Piston")
{
//Afficher tous les fragments concernés, afin d'éviter de faire un code trop lourd, on va se référer aux codes.
$code = "^";
$assemble = "oui";
$req_recette1 = $bdd->prepare("SELECT recette FROM table WHERE code=:code
AND pseudo=:pseudo AND fragment_assemble=:assemble ORDER BY num_fragment_recette");
$req_recette1->bindParam(":code",$code,PDO::PARAM_STR);
$req_recette1->bindParam(":pseudo",$pseudo,PDO::PARAM_STR);
$req_recette1->bindParam(":assemble",$assemble,PDO::PARAM_STR);
$req_recette1->execute();
//Plusieurs résultats, donc, une boucle.
//Ne pas oublier l'ancre
echo "<a name='recettes'></a>";
echo "<table cellpadding='5' background='images/fond_histoire.jpg'>";
while($recette1 = $req_recette1->fetch())
{
echo "<tr>
<td><center>".$recette1['recette']."</center></td>
</tr>";
}
echo "</table>";
}
elseif($titre_recette == "Amour")
{
//Afficher tous les fragments concernés, ici, comme le code est différent sur chaque fragment, on fait pour chaque.
$assemble = "oui";

$code1 = "26"
[ERREUR ICI]$req_recette2_morceau1 = $bdd->prepare("SELECT recette FROM table WHERE code=:code1
AND pseudo=:pseudo AND fragment_assemble=:assemble");
$req_recette2_morceau1->bindParam(":code1",$code1,PDO::PARAM_STR);
$req_recette2_morceau1->bindParam(":pseudo",$pseudo,PDO::PARAM_STR);
$req_recette2_morceau1->bindParam(":assemble",$assemble,PDO::PARAM_STR);
$req_recette2_morceau1->execute();
$resultat_recette2_morceau1 = $req_recette2_morceau1->fetch();
$recette2_morceau1 = $resultat_recette2_morceau1['recette'];

$code2 = "24 + 2";
$req_recette2_morceau2 = $bdd->prepare("SELECT recette FROM table WHERE code=:code2
AND pseudo=:pseudo AND fragment_assemble=:assemble");
$req_recette2_morceau2->bindParam(":code2",$code2,PDO::PARAM_STR);
$req_recette2_morceau2->bindParam(":pseudo",$pseudo,PDO::PARAM_STR);
$req_recette2_morceau2->bindParam(":assemble",$assemble,PDO::PARAM_STR);
$req_recette2_morceau2->execute();
$resultat_recette2_morceau2 = $req_recette2_morceau2->fetch();
$recette2_morceau2 = $resultat_recette2_morceau2['recette'];

$code3 = "10 + 16";
$req_recette2_morceau3 = $bdd->prepare("SELECT recette FROM table WHERE code=:code3
AND pseudo=:pseudo AND fragment_assemble=:assemble");
$req_recette2_morceau3->bindParam(":code3",$code3,PDO::PARAM_STR);
$req_recette2_morceau3->bindParam(":pseudo",$pseudo,PDO::PARAM_STR);
$req_recette2_morceau3->bindParam(":assemble",$assemble,PDO::PARAM_STR);
$req_recette2_morceau3->execute();
$resultat_recette2_morceau3 = $req_recette2_morceau3->fetch();
$recette2_morceau3 = $resultat_recette2_morceau3['recette'];

$code4 = "20 + 6";
$req_recette2_morceau4 = $bdd->prepare("SELECT recette FROM table WHERE code=:code4
AND pseudo=:pseudo AND fragment_assemble=:assemble");
$req_recette2_morceau4->bindParam(":code4",$code4,PDO::PARAM_STR);
$req_recette2_morceau4->bindParam(":pseudo",$pseudo,PDO::PARAM_STR);
$req_recette2_morceau4->bindParam(":assemble",$assemble,PDO::PARAM_STR);
$req_recette2_morceau4->execute();
$resultat_recette2_morceau4 = $req_recette2_morceau4->fetch();
$recette2_morceau4 = $resultat_recette2_morceau4['recette'];

$code5 = "25 + 1";
$req_recette2_morceau5 = $bdd->prepare("SELECT recette FROM table WHERE code=:code5
AND pseudo=:pseudo AND fragment_assemble=:assemble");
$req_recette2_morceau5->bindParam(":code5",$code5,PDO::PARAM_STR);
$req_recette2_morceau5->bindParam(":pseudo",$pseudo,PDO::PARAM_STR);
$req_recette2_morceau5->bindParam(":assemble",$assemble,PDO::PARAM_STR);
$req_recette2_morceau5->execute();
$resultat_recette2_morceau5 = $req_recette2_morceau5->fetch();
$recette2_morceau5 = $resultat_recette2_morceau5['recette'];

//Les afficher.
echo "<a name='recettes'></a>";
echo "<table cellpadding='5' background='images/fond_histoire.jpg'>
<tr>
<td>
<center>
".$recette2_morceau1."
<br />
".$recette2_morceau2."
<br />
".$recette2_morceau3."
<br />
".$recette2_morceau4."
<br />
".$recette2_morceau5."
</center>
</td>
</tr>
</table>";
}

Voilà, je ne vous ai mis qu'un extrait car ça continue de la même façon.

Il s'agit d'un script concernant un jeu RPG sur internet que je fais.

Un grand merci d'avance pour vos réponses et au temps que vous prendrez pour analyser mon problème !

(navrée de cette mauvaise présentation du code sur le sujet, j'ai essayé de faire au mieux ><" sur notepad++, c'est évidemment beaucoup plus clair...)

3 réponses

Un grand merci d'avance à la personne qui saura me répondre, merci.
0
Bonsoir

Il te manque le point-virgule à la fin de la ligne précédente.

Pour la présentation, il existe les balises code. Tu as vu le bouton avec <> en haut à droite de la fenêtre de rédaction des messages ? Et la petite flèche vers le bas qui permet même de choisir le langage ?
0
O_O

Argh, en effet ><"

Voilà ce que ça donne quand on est une semaine à fond sur plusieurs centaines de pages, à force, on ne voit plus. Comme quoi, c'est bien de faire lire à des "yeux neufs" comme on dit.

En tout cas, merci beaucoup ! Et navrée du dérangement !
0