Signaler

J aimerai retrouves mes donnees saisi dans la BDD [Résolu]

Posez votre question hm0123 35Messages postés lundi 24 juillet 2017Date d'inscription 31 juillet 2017 Dernière intervention - Dernière réponse le 31 juil. 2017 à 01:28 par hm0123
Bonjour,
j ai un petit souci puisque j ai du mal a retrouve mes donnes saisi dans le fomulaire dans ma base de donnees et avant la page s affiche avec les le formulaire en question mais maintenant la page est vide je sais pas pourquoi!!
voila mes codes
<?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=localhost;dbname=site-e-commerce', '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 
} 
catch(Exception $e){ die('Une erreur est survenue');
}
 $insert = $db->prepare("INSERT INTO products (title, description, prices) VALUES('$title','$description','$price')"); 
 $insert->execute();

}else{
 echo'veuillez remplir tous les champs';
}
} 

?>

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

</form>


<?php

}else if($_GET['action']=='modily'){

}else if($_GET['action']=='delete'){


}else{
 die('une erreur s\'est produite.');
 
}
}else{

}
}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" rel="nofollow noopener noreferrer" target="_blank">Ajouter un produit</a>
<a href="?action=modify" rel="nofollow noopener noreferrer" target="_blank">Modifier un produit</a>
<a href="?action=delete" rel="nofollow noopener noreferrer" target="_blank">Suprimer un produit</a>



Utile
+0
plus moins
bonsoir, si je devine bien ce que tu essaies de faire (et que tu n'expliques pas), tu devrais plutôt mettre l' action (ajouter, modifier, supprimer) comme une option dans ton formulaire, et récupérer l'option choisie via un $_POST.
hm0123 35Messages postés lundi 24 juillet 2017Date d'inscription 31 juillet 2017 Dernière intervention - 26 juil. 2017 à 21:16
bonsoir,
je crois avoir deja fait ca
vois un peut quelque code de reference

if(isset($_GET['action'])){
if($_GET['action']=='add'){

et la suite apres</form>

<?php

}else if($_GET['action']=='modify'){

}else if($_GET['action']=='delete'){


et pour finir il ya ca

<a href="?action=add" rel="nofollow noopener noreferrer" target="_blank">Ajouter un produit</a>
<a href="?action=modify" rel="nofollow noopener noreferrer" target="_blank">Modifier un produit</a>
<a href="?action=delete" rel="nofollow noopener noreferrer" target="_blank">Suprimer un produit</a>

je crois pour plus clarification c est mieuc de check le code au dessus un peu plus en details!!
Répondre
yg_be 3569Messages postés lundi 9 juin 2008Date d'inscription ContributeurStatut 17 octobre 2017 Dernière intervention - 26 juil. 2017 à 21:47
je te suggère de commencer avec des exercices beaucoup plus simples, par exemple avec un bouton radio dans un formulaire, et un code php qui utilise l'option choisie.
ton formulaire n'est pas correct, ton code php n'est pas correct, et j'ai l'impression que tu ne connais pas les concepts de base de php et html.
mettre l'action (ajouter, modifier, supprimer) comme une option dans ton formulaire, cela signifie avoir cette option après le <form et avant le </form>. et pas utiliser des <a href.
Répondre
hm0123 35Messages postés lundi 24 juillet 2017Date d'inscription 31 juillet 2017 Dernière intervention - 26 juil. 2017 à 22:03
merci pour votre proposition mais je crois j ai un peu du ma a faire comprendre
voila un peut le code comment c'etait a la base avec que je puis ajoute la connection a la base de donnee est autres
<?php
session_start();

if(isset($_SESSION['username'])){}
if(isset($_GET['action'])){ 
}
?>
<form action="" method="post">
<h3>Titre du produit :</h3><input type="text" name="title">
<h3>Description du produit :</h3><input type="text" name="Description">
<h3>Prix :</h3><input type="text" name="price">
<br/>
 <input type="submit" name="submit" value="submit">

</form>



<link href="../style/bootstrap.css" type="text/css" rel="stylesheet"/>
<h1>Bienvenue,<?php echo $_SESSION['username'];  ?></h1>
<br/>
<a href="?action=add" rel="nofollow noopener noreferrer" target="_blank">Ajouter un produit</a>
<a href="?action=modify" rel="nofollow noopener noreferrer" target="_blank">Modifier un produit</a>
<a href="?action=delete" rel="nofollow noopener noreferrer" target="_blank">Suprimer un produit</a>

et pour le href c est just le lien qui ramene sur sur la page de l action choisie
je crois mon vraie probleme est au niveau de database puisque le reste marche bien deja mais seulement que apres avoir mis de connexion a la bas de donnees sa ma pose probleme...je coir si vous essaiez le code nouveaux je je viens de mettre c est mieux
Répondre
Donnez votre avis
Utile
+0
plus moins
Bonjour,

Tu as mal placé tes accolades,
Tu as mal orthographié "modify"
Tu as mal orthographié "description" par rapport au NAME de ton input
Tu n'as pas placé ta requête dans un bloc try/catch
Tu n'as pas activé l'affichage des erreurs php


bref... essaye ça :

<?php
//démarrage des sessions
session_start();

//Affichage des erreurs PHP
error_reporting(E_ALL);
ini_set('display-errors','on');

//connexion à la bdd
try{ 
  $db = new PDO('mysql:host=localhost;dbname=site-e-commerce', '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 
}catch(Exception $e){ 
  echo 'Une erreur est survenue';
  exit();
}


//récupération PROPRE des variables AVANT de les utiliser
$title = !empty($_POST['title']) ? $_POST['title'] : NULL ;
$description = !empty($_POST['description']) ? $_POST['description'] : NULL;
$price = !empty($_POST['price']) ? $_POST['price'] : NULL;
$action = !empty($_GET['action']) ? $_GET['action'] : NULL;

$username = !empty($_SESSION['username']) ? $_SESSION['username'] : NULL;

if($username){
  if(isset($_POST['submit'])){  
    //préférer un SWITCH au lieu de IF ELSIF ...
    switch($action){
      case 'add':
       if($title&&$description&&$price){
         $sql = "INSERT INTO products (title, description, prices) VALUES(:title,:description,:price)";
         $datas = array(':title'=>$title,':description'=>$description,':price'=>$price);
       }else{
         echo'veuillez remplir tous les champs';
       } 
      break;
      
      case 'modify':
       if($title&&$description&&$price){
         $sql = "UPDATE products SET title = :title, description = :description , prices=:prices WHERE id=:id";
         $datas = array(':title'=>$title,':description'=>$description,':price'=>$price,':id'=>$id);
       }else{
         echo'veuillez remplir tous les champs';
       } 
      break;
      
      case 'delete':
         $sql = "DELETE FROM products WHERE id=:id";
         $datas = array(':id'=>$id);
      break;
      
      default:
       echo "Action inconnue ! Erreur ! ";
       break;
      
    }
    
    if($sql){
      //execution de la requete
      try{
        $insert = $db->prepare($sql); 
        $insert->execute($datas);
      }catch(Exception $e){ 
        echo 'Erreur : ' .$e->getMessage();
      }
    }
  }
}else{
  header('location: ../index.php');
  exit(); //toujours mettre un EXIT après une redirection
}


if($action){
?>
 <form action="" method="post">
   <h3>Titre du produit :</h3>
   <input type="text" name="title" value="<?php echo $title; ?>">
   <h3>Description du produit :</h3>
   <input type="text" name="description" value="<?php echo $description; ?>">
   <h3>Prix :</h3>
   <input type="text" name="price" value="<?php echo $price; ?>">
   <br/>
   <input type="submit" name="submit" value="submit">
 </form>
<?php
}
?>

<link href="../style/bootstrap.css" type="text/css" rel="stylesheet"/>
<h1>Bienvenue, <?php echo $username;?></h1>
<br/>
<a href="?action=add" rel="nofollow noopener noreferrer" target="_blank">Ajouter un produit</a>
<a href="?action=modify" rel="nofollow noopener noreferrer" target="_blank">Modifier un produit</a>
<a href="?action=delete" rel="nofollow noopener noreferrer" target="_blank">Suprimer un produit</a>

yg_be 3569Messages postés lundi 9 juin 2008Date d'inscription ContributeurStatut 17 octobre 2017 Dernière intervention - 30 juil. 2017 à 20:39
je pense que tu as une page blanche parce que ton site n'affiche pas les erreurs de syntaxe php. je pense que tu peux modifier cela dans ton fichier php.ini.
Répondre
hm0123 35Messages postés lundi 24 juillet 2017Date d'inscription 31 juillet 2017 Dernière intervention - 30 juil. 2017 à 20:42
okey mais ou je peux retrouve ce fichier php.ini
Répondre
hm0123 35Messages postés lundi 24 juillet 2017Date d'inscription 31 juillet 2017 Dernière intervention - 30 juil. 2017 à 20:43
je vien de trouve ca mais je sais pas comment modifie ca pour que sa puis m affichee les erreurs
Répondre
yg_be 3569Messages postés lundi 9 juin 2008Date d'inscription ContributeurStatut 17 octobre 2017 Dernière intervention - 30 juil. 2017 à 20:52
quel est le contenu de la ligne avec error_reporting?
Répondre
hm0123 35Messages postés lundi 24 juillet 2017Date d'inscription 31 juillet 2017 Dernière intervention - 30 juil. 2017 à 21:02
error_reporting(E_ALL);
ini_set('display-errors','on');

voila
Répondre
Donnez votre avis
Utile
+0
plus moins
Tu t'assures que tu as les valeurs suivantes dans ton fichier php.ini
error_reporting  =  E_ALL & ~E_NOTICE

Et
display_errors = On

Une fois ces valeurs modifiées dans ton fichier ini ... tu redémarres ton apache

Ensuite... tu reliras bien ton code....
Tu as encore des accolades qui ne sont pas fermées.....
Sans parler du code qui est en bordel complet......


Sachant que ce code :

<?php
//démarrage des sessions
session_start();

//Affichage des erreurs PHP
error_reporting(E_ALL);
ini_set('display-errors','on');

//connexion à la bdd
try{ 
  $db = new PDO('mysql:host=localhost;dbname=site-e-commerce', '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 ! ' . $e->getMessage();
  exit();
}




//récupération PROPRE des variables AVANT de les utiliser
$title = !empty($_POST['title']) ? $_POST['title'] : NULL ;
$description = !empty($_POST['description']) ? $_POST['description'] : NULL;
$price = !empty($_POST['price']) ? $_POST['price'] : NULL;
$action = !empty($_GET['action']) ? $_GET['action'] : NULL;

$username = !empty($_SESSION['username']) ? $_SESSION['username'] : NULL;

//---------------------------//
//le temps des tests
echo "<br>username : " . $username;
echo "<br>action : " . $action;
echo "<br><pre> Variables POST :<br>";
print_r($_POST);
echo "</pre>";
//---------------------------//

if($username){
  if(isset($_POST['submit'])){  
    //préférer un SWITCH au lieu de IF ELSIF ...
    switch($action){
      case 'add':
       if($title&&$description&&$price){
         $sql = "INSERT INTO products (title, description, prices) VALUES(:title,:description,:price)";
         $datas = array(':title'=>$title,':description'=>$description,':price'=>$price);
       }else{
         echo'veuillez remplir tous les champs';
       } 
      break;
      
      case 'modify':
       if($title&&$description&&$price){
         $sql = "UPDATE products SET title = :title, description = :description , prices=:prices WHERE id=:id";
         $datas = array(':title'=>$title,':description'=>$description,':price'=>$price,':id'=>$id);
       }else{
         echo'veuillez remplir tous les champs';
       } 
      break;
      
      case 'delete':
         $sql = "DELETE FROM products WHERE id=:id";
         $datas = array(':id'=>$id);
      break;
      
      default:
       echo "Action inconnue ! Erreur ! ";
       break;
      
    }
    
    //---------------------------//
    //le temps des tests
    echo "SQL : " .$sql;
    echo "<br> DATAS :<br><pre>";
    print_r($datas);
    echo "</pre>";
    //---------------------------//
    
    
    if($sql){
      //execution de la requete
      try {
        $insert = $db->prepare($sql); 
        $insert->execute($datas);
      }catch(Exception $e) { 
        echo 'Erreur : ' .$e->getMessage();
      }
    }
  }
}else{
   echo " AUCUN USERNAME de présent !!!! ERREUR !!! Grosse erreur !!!!"; //le temps des tests !
  //header('location: ../index.php');
  //exit(); //toujours mettre un EXIT après une redirection
}


if($action){
?>
 <form action="" method="post">
   <h3>Titre du produit :</h3>
   <input type="text" name="title" value="<?php echo $title; ?>">
   <h3>Description du produit :</h3>
   <input type="text" name="description" value="<?php echo $description; ?>">
   <h3>Prix :</h3>
   <input type="text" name="price" value="<?php echo $price; ?>">
   <br/>
   <input type="submit" name="submit" value="submit">
 </form>
<?php
}
?>

<link href="../style/bootstrap.css" type="text/css" rel="stylesheet"/>
<h1>Bienvenue, <?php echo $username;?></h1>
<br/>
<a href="?action=add" rel="nofollow noopener noreferrer" target="_blank">Ajouter un produit</a>
<a href="?action=modify" rel="nofollow noopener noreferrer" target="_blank">Modifier un produit</a>
<a href="?action=delete" rel="nofollow noopener noreferrer" target="_blank">Suprimer un produit</a>

fonctionne parfaitement......

Au passage... j'y ai mis un peu de debug .. que tu pourras retiré une fois que ta page fonctionnera totalement.

Ah..et... au passage ....Assures toi que tes fichiers sont bien encodés en UTF8 sans BOM.
(voir chapitre 1 ici : http://www.commentcamarche.net/faq/47069-html-php-caracteres-accentues-et-l-utf8 )
jordane45 18440Messages postés mercredi 22 octobre 2003Date d'inscription ModérateurStatut 17 octobre 2017 Dernière intervention - 31 juil. 2017 à 00:45
Comme ça : http://www.commentcamarche.net/faq/2380-ccm-inserer-une-image-dans-une-discussion
Répondre
jordane45 18440Messages postés mercredi 22 octobre 2003Date d'inscription ModérateurStatut 17 octobre 2017 Dernière intervention - 31 juil. 2017 à 00:51
Enfin bon.. ne pas savoir comment poster l'image ne te dérange en rien pour répondre à la principale question : EST CE QUE LES DEBUG S'AFFICHENT ET QUE CONTIENNENT T'ILS ????!!!!

Et question bonus.... comment vérifies tu qu'en bases tu n'a rien ? Tu passes par quoi ? PhpMyadmin ???
Là aussi il serait bien de nous en faire une capture avant ET après le submit (en ayant rafraichi avant de faire la capture bien entendu....)
Répondre
hm0123 35Messages postés lundi 24 juillet 2017Date d'inscription 31 juillet 2017 Dernière intervention - 31 juil. 2017 à 01:06
oui je crois et voila son contenu
1)
username : hema
action : add

Variables POST :
Array
(
[title] => single
[description] => single blanche
[price] => 67
[submit] => submit
)

SQL : INSERT INTO products (title, description, prices) VALUES(:title,:description,:price)
DATAS :

Array
(
[:title] => single
[:description] => single blanche
[:price] => 67
)

Erreur : SQLSTATE[42S22]: Column not found: 1054 Unknown column 'prices' in 'field list'



2)
-j actualise la page de ma bdd d abord
-j utilise MAMP
Répondre
jordane45 18440Messages postés mercredi 22 octobre 2003Date d'inscription ModérateurStatut 17 octobre 2017 Dernière intervention - 31 juil. 2017 à 01:10
Heuuuu.... tu ne sais pas lire ???
Tu as vu ce qui est écrit :
Erreur : SQLSTATE[42S22]: Column not found: 1054 Unknown column 'prices' in 'field list'

C'est pourtant clair.... il y a une erreur dans ta requête !
La colonne "prices" n'existe pas....
Tu as fait une faute de frappe à mon avis !... il te suffit de corriger ta requête avec les bons noms de colonne....


PS: A l'avenir... pense à LIRE (et essayer de comprendre...) TOUT ce qui s'affiche sur ta page.... Tu gagneras du temps et nous aussi.
Répondre
hm0123 35Messages postés lundi 24 juillet 2017Date d'inscription 31 juillet 2017 Dernière intervention - 31 juil. 2017 à 01:28
Woow c etais chaud pour moi merci je pu retifie puis sa c etait au niveau du price merci encore une fois pour votre temps et merci pour votre conseil vraiment!!! et vous avez une sacre patience vraiment thx
Répondre
Donnez votre avis

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes.

Le fait d'être membre vous permet d'avoir des options supplémentaires.

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !