[PHP] probleme code

Résolu
voila, j'ai un probleme avec mon code php, j'ai un : " Parse error: syntax error, unexpected 'elseif' (T_ELSEIF) in C:\wamp\www\site e-commerce\admin\admin.php on line 79", je n'arrive pas a trouver d'ou sa vient :/ quelqu'un peut m'aider svp ? merci voila mon code :D

<?php

session_start();

if (isset($_SESSION['username'])){
 if(isset($_GET['action'])){
  if($_GET['action']=='add'){
   if(isset($_POST['submit'])){
    $title = $_POST['title'];
    $description = $_POST['description'];
    $price = $_POST['price'];

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

     try
     {
     $db = new PDO('mysql:host=127.0.0.1;dbname=e-commerce', 'root', '');
     $db->setAttribute(PDO::ATTR_CASE, PDO::CASE_LOWER);
     $db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
     }
     catch(exception $e){
      echo 'Une erreur s\'est produite';
      die();
     }

     $insert = $db->prepare("INSERT INTO products VALUES ('', '$title', '$description', '$price')");
     $insert->execute();



    }
    else
    {
     echo "veuillez saisir tout les champs";
    }

   }

   ?>

   <form action="" method="post">
    <h3>Titre du produit :</h3>
    <input type="text" name="title" placeholer="Titre du produit">
    <h3>Description du produit :</h3>
    <input type="text" name="description" placeholer="Description du produit">
    <h3>Prix du produit :</h3>
    <input type="text" name="price" placeholer="Prix du produit">
    <br><br>
    <input type="submit" name="submit">
   </form>

   <?php

  }elseif($_GET['action']=='modifyanddelete'){

   try
   {
   $db = new PDO('mysql:host=127.0.0.1;dbname=e-commerce', 'root', '');
   $db->setAttribute(PDO::ATTR_CASE, PDO::CASE_LOWER);
   $db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
   }
   catch(exception $e){
    echo 'Une erreur s\'est produite';
    die();
   }

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

   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; ?>">X</a>
    <br><br>
    <?php

  }elseif($_GET['action']=='delete'){
   $id = $_GET['id']
   $select = $db->prepare("SELECT FROM products WHERE id=$id");
   $select->execute();
  }

  elseif($_GET['action']=='delete'){

  }

  }else{
   die('Une erreur s\'est produite');
  }
 }
}
else{
 header("Location: ../index.php");
}

?>


EDIT : Ajout du LANGAGE dans les balises de code (la coloration syntaxique).
Explications disponibles ici :
https://codes-sources.commentcamarche.net/faq/10686-le-nouveau-codes-sources-comment-ca-marche#balises-code

Merci d'y penser dans tes prochains messages.
.

2 réponses

  1. Bonjour,
    pourquoi il y a 2 fois le
    elseif($_GET['action']=='delete'){


    sinon il manque une accolade fermée pour le while du "modifyanddelete"
    0
    1. avec un bon editeur de texte et une bonne indentation ce genre de problème se voit très vite
      0
    2. bon editeur de texte, c'est a dire ? j'utilise sublime text 2 , il est pas bien ? merci de ta réponse aussi rapide :p
      0
    3. Parse error: syntax error, unexpected '$select' (T_VARIABLE) in C:\wamp\www\site e-commerce\admin\admin.php on line 82

      maintenant, sa me met sa :/

      j'ai encore mal modifier le code ? il me reste des fautes ? désolé je débute :p

      <?php

      session_start();

      if (isset($_SESSION['username'])){
      if(isset($_GET['action'])){
      if($_GET['action']=='add'){
      if(isset($_POST['submit'])){
      $title = $_POST['title'];
      $description = $_POST['description'];
      $price = $_POST['price'];

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

      try
      {
      $db = new PDO('mysql:host=127.0.0.1;dbname=e-commerce', 'root', '');
      $db->setAttribute(PDO::ATTR_CASE, PDO::CASE_LOWER);
      $db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
      }
      catch(exception $e){
      echo 'Une erreur s\'est produite';
      die();
      }

      $insert = $db->prepare("INSERT INTO products VALUES ('', '$title', '$description', '$price')");
      $insert->execute();

      }
      else
      {
      echo "veuillez saisir tout les champs";
      }

      }

      ?>

      <form action="" method="post">
      <h3>Titre du produit :</h3>
      <input type="text" name="title" placeholer="Titre du produit">
      <h3>Description du produit :</h3>
      <input type="text" name="description" placeholer="Description du produit">
      <h3>Prix du produit :</h3>
      <input type="text" name="price" placeholer="Prix du produit">
      <br><br>
      <input type="submit" name="submit">
      </form>

      <?php

      }elseif($_GET['action']=='modifyanddelete'){

      try
      {
      $db = new PDO('mysql:host=127.0.0.1;dbname=e-commerce', 'root', '');
      $db->setAttribute(PDO::ATTR_CASE, PDO::CASE_LOWER);
      $db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
      }
      catch(exception $e){
      echo 'Une erreur s\'est produite';
      die();
      }

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

      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; ?>">X</a>
      <br><br>
      <?php
      }

      }elseif($_GET['action']=='delete'){
      $id = $_GET['id']
      $select = $db->prepare("SELECT FROM products WHERE id=$id");
      $select->execute();
      }

      elseif($_GET['action']=='modify'){

      }

      }else{
      die('Une erreur s\'est produite');
      }
      }
      }
      else{
      header("Location: ../index.php");
      }

      ?>
      0
    4. c'est peut être psk il y a 2 $select non ??
      0
    5. @zeeloxtrue
      false
      0
  2. Modérateur
    Bonjour,

    Voici le code remis en forme et corrigé.

    <?php
    //fichier de connexion à la BDD : cnxBDD.php
       try
       {
       $db = new PDO('mysql:host=127.0.0.1;dbname=e-commerce', 'root', '');
       $db->setAttribute(PDO::ATTR_CASE, PDO::CASE_LOWER);
       $db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
       }
       catch(exception $e){
        echo 'Une erreur s\'est produite';
        die();
       }
      
    ?>
    

    <?php
    //démarrage "propre" des sessions
    if(session_id() == '') {
      session_start();
    }
    
    // On inclut le fichier de connexion à la BDD
    require_once "cnxBDD.php";
    
    //récupération des variables
    // avec ISSET + écriture Ternaire
    $pseudo = isset($_SESSION['username'])?$_SESSION['username']:NULL;
    $action = isset($_GET['action'])?$_GET['action']:NULL;
    
    $title = !empty($_POST['title'])?$_POST['title']:NULL;
    $description = !empty($_POST['description'])?$_POST['description']:NULL;
    $price = !empty($_POST['price'])?$_POST['price']:NULL;
    $id = !empty($_GET['id'])?$_GET['id']:NULL;
    
     
    if($pseudo){
    
     if(isset($_POST['submit'])){
      //en fonction de l'action: 
      switch($action){
       
      case "add":
        if($title&&$description&&$price){
         $sql = "INSERT INTO products VALUES ('', :title, :description, :price)";
        $params = array(":title"=>$title,":description"=>$description,":price"=>$price);
         $insert = $db->prepare($sql);
           $insert->execute($params); 
        }else{
         echo "veuillez saisir tout les champs";
       }
        break;
      
      case "modifyanddelete":
        
         $select = $db->prepare("SELECT * FROM products");
         $select->execute();
    
         while($s=$select->fetch(PDO::FETCH_OBJ)){
          echo $s->title;
          echo "<a href='?action=modify&id=".$s->id."'>Modifier</a>";
          echo "<a href='?action=delete&id=".$s->id."'>X</a>";
          echo "<br><br>";
         }
         break; 
       
      case "delete":
       if($id){
        $sql = "SELECT FROM products WHERE id=:id";
        $params = array(":id"=>$id);
          $select = $db->prepare($sql);
          $select->execute($params);
       }else{
        echo " No ID !";
       }
       break;
       
      default:  
       // action ne correspond à aucun des choix :
       die('Une erreur s\'est produite');
       break;
      
      }//fin du switch
     
     }// Fin if Submit
    }else{
      // pas de pseudo.
      header("Location: ../index.php");
    }
    
    ?>
       <form action="" method="post">
        <h3>Titre du produit :</h3>
        <input type="text" name="title" placeholer="Titre du produit" value="<php echo $title;>">
        <h3>Description du produit :</h3>
        <input type="text" name="description" placeholer="Description du produit" value="<php echo $description;>">
        <h3>Prix du produit :</h3>
        <input type="text" name="price" placeholer="Prix du produit" value="<php echo $price;>">
        <br><br>
        <input type="submit" name="submit">
       </form>
      
    


    Cordialement,
    Jordane
    0
    1. Modérateur
      Comme tu peux le voir dans mon code :
      - J'ai séparé la connexion à la BDD dans un fichier à part qu'il suffit d'inclure lorsque tu en as besoin
      - Je suis passé par un SWITCH plutot que des IF ELSEIF ...
      - J'ai utilisé proprement les requêtes préparées
      - J'ai récupéré les variables en utilisant la syntaxe de l'écriture ternaire ( une autre syntaxe des IF .. tu trouveras des explications facilement sur le net...)
      0
    2. @jordane45yeah ;) merci :D
      0
    3. fe
      0
    4. @jordane45le pb c 'est que je suivait un tuto sur yt vu que je connait pas encore tres bien le php, mais je galere total... et la du coup je suis perdu dans le code mdr ( et dans le tuto en + ) xD
      0
    5. Modérateur
      Suivre des tutos c'est bien.... à condition de connaitre un minimum les bases....
      Il n'y a rien de particulier dans le code que je t'ai donné..... hormis ce que je t'ai décris dans mon post précédent.
      Et une simple recherche sur le net te permettra de comprendre de quoi il s'agit :

      Par exemple, pour l'écriture ternaire : https://forum.phpfrance.com/tutoriels/expr1-expr2-expr3-operateur-ternaire-t14111.html

      Pour le SWITCH : https://www.php.net/manual/fr/control-structures.switch.php

      Après... pour ce qui est de la connexion à la BDD .. il est clairement préférable de la mettre dans un fichier à part...
      le jour où tu veux modifier les informations de co à ta BDD... tu ne le feras alors que dans un seul fichier au lieu de devoir te retaper toutes les pages de ton site....

      NB : Si le tuto que tu suis place la co à la BDD en plein milieu du code (comme ce que tu nous avais montré avant....) c'est que c'est un mauvais tuto !
      0