Syntax error, unexpected 'else' (T_ELSE) in

Bonjour,

Cela fait maintenant 2 jours que le problème persiste:
syntax error, unexpected 'else' (T_ELSE) in /Applications/MAMP/htdocs/dropshipping/admin/admin.php on line 287

et le code:

<?php
session_start();
if(isset($_SESSION['username'])){
}else{
header('Location: ../index.php');
}
?>
<link href="../style/bootstrap.css" type="text/css" rel="stylesheet"/>
<h1>Bienvenue, <?php echo $_SESSION['username']; ?></h1>
<br/>
<a href="?action=add">Ajouter un produit</a>
<a href="?action=model">Modifier / Supprimer un produit</a><br/><br/>

<a href="?action=add_cat">Ajouter une catégorie</a>
<a href="?action=model_cat">Modifier / Supprimer une catégorie</a><br/><br/>
<?php

if(isset($_GET['action'])){
if($_GET['action']=='add'){


if(isset($_POST['submit'])){

$title=$_POST['title'];
$description=$_POST['description'];
$price=$_POST['price'];

$img = $_FILES['img']['name'];

$img_tmp = $_FILES['img']['tmp_name'];

if(!empty($img_tmp)){

 $image = explode('.',$img);

 $image_ext = end($image);

 if(in_array(strtolower($image_ext),array('png','jpg','jpeg'))==false){

  echo'Veuillez rentrer une image ayant pour extension : png, jpeg ou jpg';

 }else{

 $image_size = getimagesize($img_tmp);

 if($image_size['mime']=='image/jpeg'){

  $image_src = imagecreatefromjpeg($img_tmp);

 }else if($image_size['mime']=='image/png'){

  $image_src = imagecreatefrompng($img_tmp);

 }else{

  $image_src = false;
  echo'Veuillez rentrer une image valide';

 }

 if($image_src!==false){

  $image_width=170;

  if($image_size[0]==$image_width){

   $image_finale = $image_src;

  }else{

   $new_width[0]=$image_width;

   $new_height[1] = 170;

   $image_finale = imagecreatetruecolor($new_width[0],$new_height[1]);

   imagecopyresampled($image_finale, $image_src, 0, 0, 0, 0, $new_width[0], $new_height[1], $image_size[0], $image_size[1]);

  }

  imagejpeg($image_finale,'imgs/'.$title.'.jpg');

  }

 }



}else{

echo'veuillez inserer une image';

}

if($title&&$description&&$price){

try{

  $db = new PDO('mysql:host=localhost;dbname=dropshipping', 'root','root');
  $db->setAttribute(PDO::ATTR_CASE, PDO::CASE_LOWER); // les noms de champs seront en caractères minuscules
  $db->setAttribute(PDO::ATTR_ERRMODE , PDO::ERRMODE_EXCEPTION); // les erreurs lanceront des exceptions
  global $db;
}catch(Exception $e)
{
    echo 'Problème: ' . $e->getMessage();
}
if (isset($_POST["category"]))
{
  $category = $_POST['category'];
} 



//execution de la requete
try{
$insert = $db->prepare("INSERT INTO products VALUES('0','$title','$description','$price','$category')");
$insert->execute();
}catch(Exception $e)
{
    echo 'Problème: ' . $e->getMessage();

}
}else{

echo'Veuillez remplir tous les champs';
}
}
?>
<form action="" method="post" enctype="multipart/form-data">
<h3>Titre du produit</h3><input type="text" name="title"/>
<h3>Description du produit</h3><textarea name="description"></textarea>
<h3>Prix du produit</h3><input type="text" name="price"/><br/><br/>
<h3>Image</h3>
<input type="file" name="img"/><br/><br/>
<h3>Categorie</h3><select name="category">

<?php
try{

  $db = new PDO('mysql:host=localhost;dbname=dropshipping', 'root','root');
  $db->setAttribute(PDO::ATTR_CASE, PDO::CASE_LOWER); // les noms de champs seront en caractères minuscules
  $db->setAttribute(PDO::ATTR_ERRMODE , PDO::ERRMODE_EXCEPTION); // les erreurs lanceront des exceptions
  global $db;
}catch(Exception $e)
{
    echo 'Problème: ' . $e->getMessage();
}

 $select=$db->query("SELECT * FROM category");

 while($s = $select->fetch(PDO::FETCH_OBJ)){

  ?>

  <option><?php echo $s->name; ?></option>

  <?php

 }

?>

</select>
<br/><br/><br/>
<input type="submit" name="submit"/>
</form>

<?php

}else if($_GET['action']=='model'){
 try{

  $db = new PDO('mysql:host=localhost;dbname=dropshipping', 'root','root');
  $db->setAttribute(PDO::ATTR_CASE, PDO::CASE_LOWER); // les noms de champs seront en caractères minuscules
  $db->setAttribute(PDO::ATTR_ERRMODE , PDO::ERRMODE_EXCEPTION); // les erreurs lanceront des exceptions
  global $db;
}catch(Exception $e)
{
    echo 'Problème: ' . $e->getMessage();
}

try{
$select = $db->prepare("SELECT * FROM products");
$select->execute();

}catch(Exception $e)
{
    echo 'Problème: ' . $e->getMessage();
}

while($s=$select->fetch(PDO::FETCH_OBJ)){


 echo $s->title;
 ?>
 <a href="?action=modify&id=<?php echo $s->id; ?>">Modifier</a>
 <a href="?action=delete&id=<?php echo $s->id; ?>">Supprimer</a><br/><br/>
 <?php 

}
}else if($_GET['action']=='delete'){
 
 try{

  $db = new PDO('mysql:host=localhost;dbname=dropshipping', 'root','root');
  $db->setAttribute(PDO::ATTR_CASE, PDO::CASE_LOWER); // les noms de champs seront en caractères minuscules
  $db->setAttribute(PDO::ATTR_ERRMODE , PDO::ERRMODE_EXCEPTION); // les erreurs lanceront des exceptions
  global $db;
}catch(Exception $e)
{
    echo 'Problème: ' . $e->getMessage();
}
 $id=$_GET['id'];
 $select = $db->prepare("DELETE FROM products WHERE id=$id");
 $select->execute();

}else if($_GET['action']=='add_cat'){

if(isset($_POST['submit'])){

 $name = $_POST['name'];


 if($name){
 try{

  $db = new PDO('mysql:host=localhost;dbname=dropshipping', 'root','root');
  $db->setAttribute(PDO::ATTR_CASE, PDO::CASE_LOWER); // les noms de champs seront en caractères minuscules
  $db->setAttribute(PDO::ATTR_ERRMODE , PDO::ERRMODE_EXCEPTION); // les erreurs lanceront des exceptions
  global $db;
}catch(Exception $e)
{
    echo 'Problème: ' . $e->getMessage();
}
  $insert = $db->prepare("INSERT INTO category VALUES('0','$name')");
  $insert->execute();

 }else{

  echo'Veuillez remplir tous les champs';

 }

 }
 
 ?>

<form action="" method="post">
<h3>Titre de la catégorie</h3><input type="text" name="name"/><br/><br/>
<input type="submit" name="submit" value="Ajouter"/>
</form>

 <?php


}else if($_GET['action']=='model_cat'){

 try{

  $db = new PDO('mysql:host=localhost;dbname=dropshipping', 'root','root');
  $db->setAttribute(PDO::ATTR_CASE, PDO::CASE_LOWER); // les noms de champs seront en caractères minuscules
  $db->setAttribute(PDO::ATTR_ERRMODE , PDO::ERRMODE_EXCEPTION); // les erreurs lanceront des exceptions
  global $db;
}catch(Exception $e)
{
    echo 'Problème: ' . $e->getMessage();
}

try{
$select = $db->prepare("SELECT * FROM category");
$select->execute();

}catch(Exception $e)
{
    echo 'Problème: ' . $e->getMessage();
}

while($s=$select->fetch(PDO::FETCH_OBJ)){


 echo $s->name;
 ?>
 <a href="?action=modify_cat&id=<?php echo $s->id; ?>">Modifier</a>
 <a href="?action=delete_cat&id=<?php echo $s->id; ?>">Supprimer</a><br/><br/>
 <?php 

}else if($_GET['action']=='model_cat'){

 $id=$_GET['id'];

 $select = $db->prepare("SELECT * FROM category WHERE id=$id");
 $select->execute();

 $data = $select->fetch(PDO::FETCH_OBJ);

 ?>

  <form action="" method="post">
<h3>Titre du produit</h3><input value="<?php echo $data->name; ?>" type="text" name="title"/><br/><br/>
<input type="submit" name="submit" value="Modifier"/>
</form>

 <?php

 if(isset($_POST['submit'])){

 $name=$_POST['name'];

 $update = $db->prepare("UPDATE category SET name='$title' WHERE id=$id");
 $update->execute();
 header('Location: admin.php?action=model_cat');


}

}

}else if($_GET['action']=='delete_cat'){

try{

  $db = new PDO('mysql:host=localhost;dbname=dropshipping', 'root','root');
  $db->setAttribute(PDO::ATTR_CASE, PDO::CASE_LOWER); // les noms de champs seront en caractères minuscules
  $db->setAttribute(PDO::ATTR_ERRMODE , PDO::ERRMODE_EXCEPTION); // les erreurs lanceront des exceptions
  global $db;
}catch(Exception $e)
{
    echo 'Problème: ' . $e->getMessage();
}

$id=$_GET['id'];
 $select = $db->prepare("DELETE FROM category WHERE id=$id");
 $select->execute();

}else if($_GET['action']=='modify'){
  try{

  $db = new PDO('mysql:host=localhost;dbname=dropshipping', 'root','root');
  $db->setAttribute(PDO::ATTR_CASE, PDO::CASE_LOWER); // les noms de champs seront en caractères minuscules
  $db->setAttribute(PDO::ATTR_ERRMODE , PDO::ERRMODE_EXCEPTION); // les erreurs lanceront des exceptions
  global $db;
}catch(Exception $e)
{
    echo 'Problème: ' . $e->getMessage();
}

 $id=$_GET['id'];

 $select = $db->prepare("SELECT * FROM products WHERE id=$id");
 $select->execute();

 $data = $select->fetch(PDO::FETCH_OBJ);

 ?>

  <form action="" method="post">
<h3>Titre du produit</h3><input value="<?php echo $data->title; ?>" type="text" name="title"/>
<h3>Description du produit</h3><textarea name="description" ><?php echo $data->description; ?></textarea>
<h3>Prix du produit</h3><input value="<?php echo $data->price; ?>" type="text" name="price"/><br/><br/>
<input type="submit" name="submit" value="Modifier"/>
</form>

 <?php

 if(isset($_POST['submit'])){

 $title=$_POST['title'];
 $description=$_POST['description'];
 $price=$_POST['price'];

 $update = $db->prepare("UPDATE products SET title='$title',description='$description',price='$price' WHERE id=$id");
 $update->execute();
 header('Location: admin.php?action=model');


}
}
}
?>
<br/><br/>
<a href="../index.php">Accueil</a>


EDIT: Correction des balises de code

je ne sais pas comment afficher le numéro des lignes
Merci d'avance

3 réponses

  1. Donc concrètement qu'est-ce que je dois faire et si possible si vous pouviez refaire cette parti du code, j'en serais très reconaissant ! Merci d'avance
    1. Modérateur
      Ferme ton while avant ton else..

      Et puis applique ce qui est marqué dans les liens que je t'ai donné
  2. Merci pour la vitesse de ta réponse mais le while se ferme à la toute fin du code et sinon, je ne sais pas où est-ce qu'il faudrait le fermer.
    1. Modérateur
      Tu ne peux pas avoir un ELSE sans avoir un IF avant dans une boucle ...

      while($s=$select->fetch(PDO::FETCH_OBJ)){
      
      
       echo $s->name;
       ?>
       <a href="?action=modify_cat&id=<?php echo $s->id; ?>">Modifier</a>
       <a href="?action=delete_cat&id=<?php echo $s->id; ?>">Supprimer</a><br/><br/>
       <?php 
      
      }else if($_GET['action']=='model_cat'){
      
      
  3. Modérateur
    Bonjour,

    Ton while n'est pas fermé.

    1. Modérateur
      Au passage... je t'invite fortement à suivre ces quelques recomandations dans l'écriture de ton code
      https://forums.commentcamarche.net/forum/affich-37584947-php-gestion-des-erreurs-debogage-et-ecriture-du-code

      Et concernant la gestion des erreurs PDO :
      https://forums.commentcamarche.net/forum/affich-37584941-php-pdo-gerer-les-erreurs

      Pour finir, lorsque tu postes ton code sur le forum, merci de penser à y mettre le LANGAGE afin d'avoir la coloration syntaxique.
      Explications disponibles ici : https://codes-sources.commentcamarche.net/faq/11288-poster-un-extrait-de-code