[PHP] probleme code
Résolu
zeelox
Messages postés
119
Date d'inscription
Statut
Membre
Dernière intervention
-
miramaze Messages postés 1429 Date d'inscription Statut Contributeur Dernière intervention -
miramaze Messages postés 1429 Date d'inscription Statut Contributeur Dernière intervention -
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
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.
.
<?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:
- [PHP] probleme code
- Code ascii - Guide
- Code puk bloqué - Guide
- Comment déverrouiller un téléphone quand on a oublié le code - Guide
- Code activation windows 10 - Guide
- Code blocks - Télécharger - Langages
2 réponses
Bonjour,
pourquoi il y a 2 fois le
sinon il manque une accolade fermée pour le while du "modifyanddelete"
pourquoi il y a 2 fois le
elseif($_GET['action']=='delete'){
sinon il manque une accolade fermée pour le while du "modifyanddelete"
Bonjour,
Voici le code remis en forme et corrigé.
Cordialement,
Jordane
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
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...)
- 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...)
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 !
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 !
maintenant, sa me met sa :/
j'ai encore mal modifier le code ? il me reste des fautes ? désolé je débute :p
false