Syntax error, unexpected 'else' (T_ELSE) in [Fermé]

Signaler
Messages postés
21
Date d'inscription
dimanche 26 août 2018
Statut
Membre
Dernière intervention
16 décembre 2018
-
Messages postés
30190
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
17 novembre 2020
-
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

Messages postés
30190
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
17 novembre 2020
2 981
Bonjour,

Ton while n'est pas fermé.

Messages postés
30190
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
17 novembre 2020
2 981
Au passage... je t'invite fortement à suivre ces quelques recomandations dans l'écriture de ton code
https://www.commentcamarche.net/faq/48399-php-gestion-des-erreurs-debogage-et-ecriture-du-code

Et concernant la gestion des erreurs PDO :
https://www.commentcamarche.net/faq/46512-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-les-balises-de-code
Messages postés
21
Date d'inscription
dimanche 26 août 2018
Statut
Membre
Dernière intervention
16 décembre 2018

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.
Messages postés
30190
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
17 novembre 2020
2 981
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'){

Messages postés
21
Date d'inscription
dimanche 26 août 2018
Statut
Membre
Dernière intervention
16 décembre 2018

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
Messages postés
30190
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
17 novembre 2020
2 981
Ferme ton while avant ton else..

Et puis applique ce qui est marqué dans les liens que je t'ai donné