Page 1 sur 1

Erreur introuvable ??

Posté : 19 sept. 2007, 14:31
par kweb
Bonjour,
je rencontre cette erreur "Parse error: syntax error, unexpected T_ELSEIF......". et je n'arrive pas a trouver l'erreur dans le code. voila 3h que je me penche dessus :cry:

j'ai compté le nombre de "{" - "}" - "(" - ")" pour voir si j'avais un nombre impaire. mais tout est correcte.

Pourriez m'aider ? merci de votre participation

je mets ci dessous la partie de code ou est généré l'erreur, (ligne 91 = elseif).
A titre d'info, mon code contient 250 lignes
<?php
		// SINON SI LA VARIABLE EXISTE
		elseif (isset($_GET['supprimer']))
			{ 
				// Réuperation des variables
					$supprimer = $_GET['supprimer'];
				
				// creation d'une variable qui demande d'inserer les donn&eacute;e dans la BD 
					$sql = "DELETE FROM categorie WHERE id_categorie=".$supprimer;
					$requete = mysql_query ($sql) or die ('Suppression impossible : <br />'.mysql_error());
			
			?>

Posté : 19 sept. 2007, 14:39
par d-sam
montre nous le code du if au elseif.
Unexcepted T_ELSEIF veut dire qu'il ne s'attendait pas à un elseif ici...

Posté : 19 sept. 2007, 14:46
par kweb
Voici le code (désolé mais il fais un peux plus de 20 lignes..)
<?php if (isset($_GET['confirmation']))
	{
		// Réuperation des variables
			$nom_categorie = $_POST['Nom']; 
		
		// creation d'une variable qui demande d'inserer les donnée dans la BD 
			$sql = "INSERT INTO categorie VALUES ('','$nom_categorie')";
		
		//  requéte SQL
			$sql2 = mysql_query ($sql) or die ('Ex&eacute;cution de la requ&ecirc;tes impossible : <br />'.mysql_error()); 
?>
		<!-- AFFICHE la confirmation d'insertion et affiche le formulaire pour soumettre + affiche toutes les catégorie existante  -->
			L'insertion de la nouvelle cat&eacute;gorie, c'est bien effectu&eacute;
			<br />
			<form id="form1" name="form1" method="post" action="index2.php?confirmation">
				<label>
					<strong>Nom :</strong>
					<input name="Nom" type="text" id="Nom" size="50" />
				</label>&nbsp;
				<label>
					<input type="submit" name="button" id="button" value="Cr&eacute;er" />
				</label>
			</form>
			  <br /><br />
			  <strong>Liste des cat&eacute;gories existante :</strong><br />

		<?php
		//ON AFFICHE LE TABLEAU QUI VAS LISTER TOUTES LES CATÉGORIE EXISTANTE
			//Appel de la function
			include ('function/alternance_couleur.func.php');	

			// Cr&eacute;ation d'un tableau
				echo '<table  border="0" cellspacing="1" cellpadding="0">';

			// CREATION d'une Ligne 1
				echo '<tr>';

			//CREATION de Cellule fixe
				//echo '<td width="18">&nbsp;</td>';
				echo '<td colspan="3" bgcolor="#FFCC66">&nbsp;<strong>CATEGORIES EXISTANTES<strong></td>';
				//echo '<td width="150" bgcolor="#DFE6E6" <strong>NOM DES CATEGORIES</strong></td>';

			// FIN de la ligne 1
				echo "</tr>";

			// SELECTIONNER tous les champs de la table email par domaine_email qui est &eacute;gale a
				$affichage = "SELECT * FROM categorie ORDER BY txt_categorie";
				$affichage_retour =  mysql_query($affichage) or die (mysql_error());
				
				while ($ligne = mysql_fetch_array($affichage_retour))
					{
						// CREATION d'une Ligne 2
						echo "<tr bgcolor=\""; echo switchcolor(); echo "\">";

						//Cellule SUPPRIMER
						echo '<td bgcolor="#FFFFFF" width="18">';
						echo '<a href="ip.php?supprimer='.$ligne['id_categorie'].'"><img src="../images/corbeille.gif" alt="Supprimer" width="14" height="16" border="0"></a>';
						echo '</td>';

						//Cellule MODIFICATION
						echo '<td bgcolor="#FFFFFF" width="20">';
						echo '<a href="ip_modifier.php?modifier='.$ligne['id_categorie'].'"><img src="../images/modifier.gif" alt="Modifier" width="16" height="16" border="0"></a>';
						echo '</td>';

						//Cellule CATEGORIE
						echo '<td id="tableau_email" width="200">';
						echo '<strong>'.ucfirst($ligne['txt_categorie']).'</strong>' ;
						echo '</td>';

						//FIN de la ligne 2
						echo '</tr>';
					}
				//FIN du tableau
				echo '</table><br /><br /><br />';

	}	?>

Posté : 19 sept. 2007, 14:55
par d-sam
par hasard, essaye d'enlever les ?> <?php qui sont juste avant le elseif (on ne sait jamais, sinon en effet les { } ont l'air correctes)

autre chose: fais TRES attention à ce code :
     $supprimer = $_GET['supprimer'];
     $sql = "DELETE FROM categorie WHERE id_categorie=".$supprimer;
C'est une vulnérabilité qu'on appelle SQL Injection. En gros, en mettant un morceau de requête dans $_GET['supprimer'], on peut exécuter des requêtes dans ta base...
Vérifie, au minimum, que $_GET['supprimer'] est bien un nombre (is_numeric($_GET['supprimer'])

Posté : 19 sept. 2007, 15:03
par kweb
Effectivement, lorsque je supprime les "<php?" et "?>" cela fonctionne.

Pour que des conditions fonctionnent il faut qu'elles soit imbriquées dans la même balise php ?

Concernant le problème de sécurité, je garde sa en mémoire. Mais ce que je dévellope est pour un intranet. donc la sécurité n'est pas le point fort.

Encore merci pour ton aide

Posté : 19 sept. 2007, 15:17
par d-sam
je pense plutot que le elseif doit directement suivre le } ...

pense au tag [résolu], ça fera plaisir aux modos ;)

Posté : 19 sept. 2007, 15:19
par kweb
J'attendais juste que tu me réponde....
merci @+