Partage
  • Partager sur Facebook
  • Partager sur Twitter

Probleme PHP Site E-Commerce

    24 janvier 2017 à 15:12:32

    Bonjour, je suis entrain de faire un site e-commerce pour mon projet de mon école et je suis bloqué lors de l'ajout d'un produit depuis la page d'admin du site. Je vous joint tout les documents en lien avec mon problème.

    https://gyazo.com/6c09422b6b59bb1d9c2a3a5e82063e27 (vue code)

    https://gyazo.com/f17aaa274c39bffd5964c940424ddaed (vue erreur)

    https://gyazo.com/b6a0dbed7d458615903eabf98fc25df6 (vue PHPMyAdmin)

    • Partager sur Facebook
    • Partager sur Twitter
    Anonyme
      24 janvier 2017 à 15:18:47

      Il faut que tu définissent les parametres de ta requete avec bindParam :)

      -
      Edité par Anonyme 24 janvier 2017 à 15:20:01

      • Partager sur Facebook
      • Partager sur Twitter
        24 janvier 2017 à 15:19:54

        Salut, evite les captures d'ecran pour le code mieux vaut le copier coller ici entre les balises de code. Ton code s'arrete la? Si oui il te manque des accolades fermantes.
        • Partager sur Facebook
        • Partager sur Twitter
          24 janvier 2017 à 15:21:10

          Bonjour,

          Vu l'erreur levée, tu as une erreur de frappe, un caractère manquant ou une parenthèse non refermée. Mais indente ton code, ça sera plus lisible.

          • Partager sur Facebook
          • Partager sur Twitter
            24 janvier 2017 à 15:23:59

            <?php
            session_start();
            if(isset($_SESSION['username'])){
            if(isset($_GET['action'])){
            if ($_GET['action']=='add') {
            if (isset($_POST['submit'])) {
            $nom=$_POST['nom'];
            $description=$_POST['description'];
            $prix=$_POST['prix'];
            if ($nom&&$description&&$prix) {
            try{
              $db = new PDO('mysql:host=127.0.0.1;dbname=site_e_commerce(ok)', '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   
            }
            catch(Exception $e){
            die('Une erreur est survenue');
            }
            $insert=$db->prepare("INSERT INTO products VALUES('','$nom','$description','$prix')");
            $insert->execute();
            }else{
            echo "Veuillez remplir tout les champs";
            }
            }
            ?>
            <form action="" method="post">
            <h3>Nom du produit :<input type="text" name="nom"></h3>
            <h3>Description du produit :<input type="text" name="description"></h3>
            <h3>Prix du produit :<input type="text" name="prix"></h3><br><br>
            <input type="submit" name="submit">
            </form>
            <?php
            }else if($_GET['action']=='modify'){
            }else if($_GET['action']=='delete'){
            }else{
            die('Une erreur c\'est produite.');
            }
            }else{
            }
            }else{
            header('Location: ../index.php');
            }
            ?>
            <link rel="stylesheet" type="text/css" href="../style/bootstrap.css">
            <h1>Bienvenue, <?php echo $_SESSION['username']?></h1>
            <br>
            <a href="?action=add">Ajouter un produit</a>
            <a href="?action=modify">Modifier un produit</a>
            <a href="?action=delete">Supprimer un produit</a>
            Voila mon code au complet. Oui, je ferai lindentation apres avoir tout fini, pour l'instant je suis dans la recherche de l'erreur. ^^
            • Partager sur Facebook
            • Partager sur Twitter
              24 janvier 2017 à 15:25:31

              Utilise les balises de code pour l'insérer. Et indenter ton code te fera gagner du temps dans tes recherches d'erreur (et comme tu en auras probablement plus d'une, fais-le maintenant).
              • Partager sur Facebook
              • Partager sur Twitter
                24 janvier 2017 à 15:29:50

                Indentation faite. Quelles sont les premieres manips à faire ?

                -
                Edité par YannickDugué 24 janvier 2017 à 15:30:38

                • Partager sur Facebook
                • Partager sur Twitter
                  24 janvier 2017 à 15:35:08

                  Peux tu modifier ton message precedent pour mettre le code dans les balises de code histoire qu'on y voit un peu plus clair?

                  • Partager sur Facebook
                  • Partager sur Twitter
                    24 janvier 2017 à 15:43:55

                    Ton code est vraiment pas beau, tout est mélangé, les requêtes, le traitement php, la vue html.

                    Avant de corriger des erreurs, travaille la structure de ton code parce que là tu vas dans le mur.

                    Edit : et utilises les requêtes préparées, dans un fichier dédié.

                    -
                    Edité par adrienrosi 24 janvier 2017 à 15:44:58

                    • Partager sur Facebook
                    • Partager sur Twitter
                      24 janvier 2017 à 15:53:46

                      Psychotik a écrit:

                      Peux tu modifier ton message precedent pour mettre le code dans les balises de code histoire qu'on y voit un peu plus clair?


                      Comment ca ?

                      • Partager sur Facebook
                      • Partager sur Twitter
                        24 janvier 2017 à 15:55:12

                        Tu as un bouton </> quand tu poste un message ca te permet de mettre ton code dans des balises faites pour generer la coloration syntaxique
                        • Partager sur Facebook
                        • Partager sur Twitter
                          24 janvier 2017 à 15:55:16

                          adrienrosi a écrit:

                          Ton code est vraiment pas beau, tout est mélangé, les requêtes, le traitement php, la vue html.

                          Avant de corriger des erreurs, travaille la structure de ton code parce que là tu vas dans le mur.

                          Edit : et utilises les requêtes préparées, dans un fichier dédié.

                          -
                          Edité par adrienrosi il y a 8 minutes


                          Je ferai la propreté de mon code une fois mes erreurs résolues, j'ai fais a hier soir tard, je suis d'accord il est pas propre mais je l''ai fais vite sans penser a la propreté pensant la faire apres
                          • Partager sur Facebook
                          • Partager sur Twitter
                            24 janvier 2017 à 16:07:44

                            Justement, pense à la structure de ton code avant de le réaliser, sinon tu vas devoir tout reprendre une fois que tu te seras rendu compte que ton code est inutilisable tel quel. Tu gagneras un temps fou.
                            • Partager sur Facebook
                            • Partager sur Twitter
                              24 janvier 2017 à 16:32:40

                              Meme si ma structure est pas belle, pas bien indentée, avez vous des suggestions pour resoudre mon probleme?

                              • Partager sur Facebook
                              • Partager sur Twitter
                                24 janvier 2017 à 16:38:00

                                Personellement je refuse de lire ton code tant que tu ne les aura pas mis dans les balises de code c'est absolument illisible actuellement
                                • Partager sur Facebook
                                • Partager sur Twitter
                                  24 janvier 2017 à 16:39:44

                                  Psychotik a écrit:

                                  Personellement je refuse de lire ton code tant que tu ne les aura pas mis dans les balises de code c'est absolument illisible actuellement


                                  Quelles balises? les portions php et html sont affichées....

                                  Je suis débutant dans le domaine du php, soyez indulgent

                                  -
                                  Edité par YannickDugué 24 janvier 2017 à 16:43:57

                                  • Partager sur Facebook
                                  • Partager sur Twitter
                                    24 janvier 2017 à 16:45:07

                                    Je t'ai explique au dessus.

                                    Quand tu postes un messages tu as des boutons au dessus dont un bouton </> qui te permet de mettre ton code dans les balises de code. Ce qui fait la difference entre ca:

                                    <?php
                                    session_start();
                                    if(isset($_SESSION['username'])){
                                    if(isset($_GET['action'])){
                                    if ($_GET['action']=='add') {
                                    if (isset($_POST['submit'])) {
                                    $nom=$_POST['nom'];
                                    $description=$_POST['description'];
                                    $prix=$_POST['prix'];
                                    if ($nom&&$description&&$prix) {
                                    try{
                                      $db = new PDO('mysql:host=127.0.0.1;dbname=site_e_commerce(ok)', '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   
                                    }
                                    et ca:
                                    <?php
                                    session_start();
                                    if(isset($_SESSION['username'])){
                                        if(isset($_GET['action'])){
                                            if ($_GET['action']=='add') {
                                                if (isset($_POST['submit'])) {
                                                    $nom=$_POST['nom'];
                                                    $description=$_POST['description'];
                                                    $prix=$_POST['prix'];
                                                    if ($nom&&$description&&$prix) {
                                                        try{
                                                            $db = new PDO('mysql:host=127.0.0.1;dbname=site_e_commerce(ok)', '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   
                                                        }

                                    -
                                    Edité par Aurélien Massé 24 janvier 2017 à 16:46:29

                                    • Partager sur Facebook
                                    • Partager sur Twitter
                                      24 janvier 2017 à 16:46:09

                                      Psychotik a écrit:

                                      Je t'ai explique au dessus.

                                      Quand tu postes un messages tu as des boutons au dessus dont un bouton </> qui te permet de mettre ton code dans les balises de code. Ce qui fait la difference entre ca:

                                      <?php
                                      session_start();
                                      if(isset($_SESSION['username'])){
                                      if(isset($_GET['action'])){
                                      if ($_GET['action']=='add') {
                                      if (isset($_POST['submit'])) {
                                      $nom=$_POST['nom'];
                                      $description=$_POST['description'];
                                      $prix=$_POST['prix'];
                                      if ($nom&&$description&&$prix) {
                                      try{
                                        $db = new PDO('mysql:host=127.0.0.1;dbname=site_e_commerce(ok)', '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   
                                      }
                                      et ca:
                                      <?php
                                      session_start();
                                      if(isset($_SESSION['username'])){
                                      if(isset($_GET['action'])){
                                      if ($_GET['action']=='add') {
                                      if (isset($_POST['submit'])) {
                                      $nom=$_POST['nom'];
                                      $description=$_POST['description'];
                                      $prix=$_POST['prix'];
                                      if ($nom&&$description&&$prix) {
                                      try{
                                        $db = new PDO('mysql:host=127.0.0.1;dbname=site_e_commerce(ok)', '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   
                                      }

                                      Ah ok désolé. voulez vous que je vous le repose avec </> d'activé?



                                      • Partager sur Facebook
                                      • Partager sur Twitter
                                        24 janvier 2017 à 16:47:08

                                        Tu peux directement modifier ton message plus haut
                                        • Partager sur Facebook
                                        • Partager sur Twitter
                                          24 janvier 2017 à 16:48:07

                                          <?php
                                          	session_start();
                                          
                                          		if(isset($_SESSION['username'])){
                                          			if(isset($_GET['action'])){
                                          				if ($_GET['action']=='add'){
                                          			
                                          					if (isset($_POST['submit'])){
                                          
                                          						$nom=$_POST['nom'];
                                          						$description=$_POST['description'];
                                          						$prix=$_POST['prix'];
                                          
                                          						if ($nom&&$description&&$prix){
                                          
                                          							try{
                                          							  $db = new PDO('mysql:host=127.0.0.1;dbname=site_e_commerce(ok)', '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   
                                          							}
                                          
                                          							catch(Exception $e){
                                          								echo "Une erreur est survenue";
                                          								die();
                                          							}
                                          
                                          						$insert=$db->prepare("INSERT INTO products VALUES('','$nom','$description','$prix')");
                                          						$insert->execute();
                                          
                                          						}else{
                                          							echo "Veuillez remplir tout les champs";
                                          						}
                                          					}
                                          	?>
                                          
                                          <form action="" method="post">
                                          	<h3>Nom du produit :<input type="text" name="nom"></h3>
                                          	<h3>Description du produit :<input type="text" name="description"></h3>
                                          	<h3>Prix du produit :<input type="text" name="prix"></h3><br><br>
                                          	<input type="submit" name="submit">
                                          </form>
                                          
                                          <?php
                                          
                                          				}else if($_GET['action']=='modify'){
                                          
                                          				}else if($_GET['action']=='delete'){
                                          
                                          					}else{
                                          					die('Une erreur c\'est produite.');
                                          					}
                                          
                                          			}else{
                                          
                                          			}
                                          		}else{
                                          			header('Location: ../index.php');
                                          		}
                                          ?>
                                          
                                          
                                          <link rel="stylesheet" type="text/css" href="../style/bootstrap.css">
                                          <h1>Bienvenue, <?php echo $_SESSION['username']?></h1>
                                          <br>
                                          <a href="?action=add">Ajouter un produit</a>
                                          <a href="?action=modify">Modifier un produit</a>
                                          <a href="?action=delete">Supprimer un produit</a>
                                           

                                          -
                                          Edité par YannickDugué 24 janvier 2017 à 16:48:26

                                          • Partager sur Facebook
                                          • Partager sur Twitter
                                            24 janvier 2017 à 16:58:48

                                            Voila qui est mieux.

                                            Peux tu mettre ces deux lignes:

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


                                            dans ton try{} au dessus et retester?

                                            • Partager sur Facebook
                                            • Partager sur Twitter

                                            Probleme PHP Site E-Commerce

                                            × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                                            × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
                                            • Editeur
                                            • Markdown