[PHP] probleme code

Résolu/Fermé
zeelox Messages postés 119 Date d'inscription samedi 30 mai 2015 Statut Membre Dernière intervention 8 mars 2019 - Modifié par jordane45 le 6/07/2015 à 11:33
miramaze Messages postés 1429 Date d'inscription mercredi 29 juillet 2009 Statut Contributeur Dernière intervention 1 mai 2022 - 17 juil. 2015 à 08:51
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.
.
A voir également:

2 réponses

Thorak83 Messages postés 1051 Date d'inscription jeudi 20 juin 2013 Statut Membre Dernière intervention 22 décembre 2017 156
6 juil. 2015 à 11:14
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
Thorak83 Messages postés 1051 Date d'inscription jeudi 20 juin 2013 Statut Membre Dernière intervention 22 décembre 2017 156
6 juil. 2015 à 11:15
avec un bon editeur de texte et une bonne indentation ce genre de problème se voit très vite
0
zeelox Messages postés 119 Date d'inscription samedi 30 mai 2015 Statut Membre Dernière intervention 8 mars 2019
6 juil. 2015 à 11:31
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
zeelox Messages postés 119 Date d'inscription samedi 30 mai 2015 Statut Membre Dernière intervention 8 mars 2019
6 juil. 2015 à 11:33
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
zeelox Messages postés 119 Date d'inscription samedi 30 mai 2015 Statut Membre Dernière intervention 8 mars 2019
6 juil. 2015 à 11:34
c'est peut être psk il y a 2 $select non ??
0
MAESTRO > zeelox Messages postés 119 Date d'inscription samedi 30 mai 2015 Statut Membre Dernière intervention 8 mars 2019
13 juil. 2015 à 18:08
true
false
0
jordane45 Messages postés 38144 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 21 avril 2024 4 650
Modifié par jordane45 le 6/07/2015 à 12:05
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
jordane45 Messages postés 38144 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 21 avril 2024 4 650
6 juil. 2015 à 11:55
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
zeelox Messages postés 119 Date d'inscription samedi 30 mai 2015 Statut Membre Dernière intervention 8 mars 2019 > jordane45 Messages postés 38144 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 21 avril 2024
6 juil. 2015 à 12:24
yeah ;) merci :D
0
zeelox Messages postés 119 Date d'inscription samedi 30 mai 2015 Statut Membre Dernière intervention 8 mars 2019
6 juil. 2015 à 12:27
fe
0
zeelox Messages postés 119 Date d'inscription samedi 30 mai 2015 Statut Membre Dernière intervention 8 mars 2019 > jordane45 Messages postés 38144 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 21 avril 2024
6 juil. 2015 à 12:28
le 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
jordane45 Messages postés 38144 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 21 avril 2024 4 650
6 juil. 2015 à 13:14
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