Aller au contenu

Form html et connection mysql


Krapace

Messages recommandés

Ca fait maintenant une semaine que j'essaye de me faire une interface web pour alimenter une BDD alimentaire.

 

Rentrer les produits en rentrant des courses et les selectionner avant de faire sa liste pour qu'il sorte quel magasin visiter en fonction des prix des différents produits voulus.

 

Ca allait pas trop mal jusqu'a hier...J'avais tres tres doucement mais j'avancait. Mais hier soir c'est la cata :pleure:

 

J'ai decouvert que mysql_query() n'est pput d'actualité et qu'il faut passer par PDO (orienté objet hein...)

 

Du coup j'ai tout perdu et j'arrive put a alimenter ma BDD. Comble du code j'ai carrément une page vide.

 

Le <form> fonctionne bien puisque qu'en commentant mon code PHP il s'affiche bien...

 

Bref je vous laisse le code parce que je voit vraiment pas d'ou ca vient (enfin si mais je voit pas comment resoudre)

<html>
	<head>
	<link rel="stylesheet" href="style.css"><!--Reference a la feuille CSS de style ajout_prod-->	
        <title>Ajout de produits</title>   
    </head>
	<body>
	<table>
	<tr><td><?php include ("menu.php"); ?> </td>
        <td><h1>Entrez les donnees demandees :</h1>
        <form name="ajout_prod" method="post" action="ajout_prod.php">
		Entrez le produit : <input type="text" name="produit"> <br>
		Entrez la marque : <input type="text" name="marque"> <br>
		Catégorie : <select name="cat" size="1">
				<option value="pain">Pain/Viennoiserie</option>
				<option value="conserve">Conserve</option>
				<option value="legume">Légumes</option>
				<option value="viande">Viande</option>
				<option value="charcut">Charcuterie</option>
				<option value="poisson">Poisson</option>
				<option value="sante">Beauté/Santé</option>
				<option value="gateau">Gateaux</option>
				<option value="fromage">Fromage</option>
				<option value="fruit">Fruits</option>
				<option value="alcool">Alcool</option>
				<option value="apero">Apero</option>
				<option value="linge">Linge</option>
				</select><br>
		Conditionnement : <select name="cond" size="1"><br>
				<option value="paquet">Paquet</option>
				<option value="bouteille">Bouteille</option>
				<option value="piecece">Pièce</option>
				</select><br>
		Poid ou contenance :<input type="text" name="quant">
		Unité : <select name="unite" size="1"><br>
				<option value="ml">Ml</option>
				<option value="l">l</option>
				<option value="g">g</option>
				<option value="kg">Kg</option>
				</select><br>						
		Prix : <input type="text" name="prix"><br>
		Magasin : <select name="mag" size="1"><br>
			<option value="lidl">Lidl</option>
			<option value="aldi">Aldi</option>
			<option value="superu">Super U</option>
			<option value="leclerc">Leclerc</option>
			<option value="carrefour">Carrefour</option>
			<option value="match">Match</option>
			<option value="foirfouille">Foire Fouille</option>
			<option value="baboo">Baboo</option>
		</select><br>
		Ville : <input type="radio" name="ville" value="thaon" checked>Thaon<input type="radio" name="ville" value="epinal">Epinal<input type="radio" name="ville" value="golbey">Golbey<br>
            <input type="submit" name="valider" value="OK">
	</form>

<?php       
        if (isset ($_POST['OK'])){ //Si le bouton OK est cliquer 
	try{
	$connection=new PDO('mysql:host=localhost;dbname=course', 'root', '******', '' );
	}
	catch ( Exception $e )
	{
		die( 'Connection à MySQL impossible : ' .$e->getMessage());
	}
            $req = $connection -> prepare('INSERT INTO produit(produit, marque, type, cond, poid, unite, prix, mag, ville)
					   VALUES(?, ?, ?, ?, ?, ?, ?, ?, ?)');
		$success = $req -> exec(array(
			'produit' => $_POST['produit'],
			'marque' => $_POST['marque'],
			'cat' => $_POST['cat'],
			'cond' => $_POST['cond'],
			'quant' => $_POST['quant'],
			'unite' => $_POST['unite'],
			'prix' => $_POST['prix'],
			'mag' => $_POST['mag'],
			'ville' => $_POST['ville'],
			));
	if($success){
	echo ("Vous avez dajouter' .$produit. 'de marque '.$marque. 'du magasin' .$mag. 'de la ville de' .$ville. 'dans la catégorie' .$cat. ";
	//};
?>
</td></tr></table>
	</body>
</html>
Lien vers le commentaire
Partager sur d’autres sites

Je voudrais pas dire de bêtises, mais le catch est à mettre à la fin non ? et tout le reste du code est à mettre dans le try { ... } En tout cas, c'est ce que j'ai fait chez moi.

 

PS : si t'as une page blanche, ça peut venir d'une erreur PHP, voire dans les logs du serveur web, c'est souvent très instructif ;)

Lien vers le commentaire
Partager sur d’autres sites

J'ai essayer d'arranger la chose mais komodo et apache me sorte une erreur 

 

 

Fri Jul 25 12:49:14 2014] [error] [client ::1] PHP Parse error:  syntax error, unexpected end of file in /var/www/ajout_prod.php on line 81, referer: http://localhost/main.php?page=ajout_prod

 
Ca fait reference a la fermeture de balise </html> :reflechise:
 
J'ai pas les yeux en face des trous :craint:
<!DOCTYPE HTML>
<html>
	<head>
	<link rel="stylesheet" href="style.css"><!--Reference a la feuille CSS de style ajout_prod-->	
        <title>Ajout de produits</title>   
	</head>
<body>
	<table>
	<tr><td><?php include ("menu.php"); ?> </td>
        <td><h1>Entrez les donnees demandees :</h1>
        <form name="ajout_prod" method="post" action="ajout_prod.php">
		Entrez le produit : <input type="text" name="produit"> <br>
		Entrez la marque : <input type="text" name="marque"> <br>
		Catégorie : <select name="cat" size="1">
				<option value="pain">Pain/Viennoiserie</option>
				<option value="conserve">Conserve</option>
				<option value="legume">Légumes</option>
				<option value="viande">Viande</option>
				<option value="charcut">Charcuterie</option>
				<option value="poisson">Poisson</option>
				<option value="sante">Beauté/Santé</option>
				<option value="gateau">Gateaux</option>
				<option value="fromage">Fromage</option>
				<option value="fruit">Fruits</option>
				<option value="alcool">Alcool</option>
				<option value="apero">Apero</option>
				<option value="linge">Linge</option>
				</select><br>
		Conditionnement : <select name="cond" size="1"><br>
				<option value="paquet">Paquet</option>
				<option value="bouteille">Bouteille</option>
				<option value="piecece">Pièce</option>
				</select><br>
		Poid ou contenance :<input type="text" name="quant">
		Unité : <select name="unite" size="1"><br>
				<option value="ml">Ml</option>
				<option value="l">l</option>
				<option value="g">g</option>
				<option value="kg">Kg</option>
				</select><br>						
		Prix : <input type="text" name="prix"><br>
		Magasin : <select name="mag" size="1"><br>
			<option value="lidl">Lidl</option>
			<option value="aldi">Aldi</option>
			<option value="superu">Super U</option>
			<option value="leclerc">Leclerc</option>
			<option value="carrefour">Carrefour</option>
			<option value="match">Match</option>
			<option value="foirfouille">Foire Fouille</option>
			<option value="baboo">Baboo</option>
		</select><br>
		Ville : <input type="radio" name="ville" value="thaon" checked>Thaon<input type="radio" name="ville" value="epinal">Epinal<input type="radio" name="ville" value="golbey">Golbey<br>
            <input type="submit" name="valider" value="OK">
	</form>

<?php       
        if (isset ($_POST['OK'])){ //Si le bouton OK est cliquer 
	try{
	$connection=new PDO('mysql:host=localhost;dbname=course', 'root', '1135nf03', '' );
	$req = $connection -> prepare('INSERT INTO produit(produit, marque, type, cond, poid, unite, prix, mag, ville)
					   VALUES(?, ?, ?, ?, ?, ?, ?, ?, ?)');
		$success = $req -> exec(array(
			'produit' => $_POST['produit'],
			'marque' => $_POST['marque'],
			'cat' => $_POST['cat'],
			'cond' => $_POST['cond'],
			'quant' => $_POST['quant'],
			'unite' => $_POST['unite'],
			'prix' => $_POST['prix'],
			'mag' => $_POST['mag'],
			'ville' => $_POST['ville'],));}
                catch ( Exception $e )
	{
		die( 'Connection à MySQL impossible : ' .$e->getMessage());
	}
		if($success) (print_r ("Vous avez dajouter' .$produit. 'de marque '.$marque. 'du magasin' .$mag. 'de la ville de' .$ville. 'dans la catégorie' .$cat. "))
	?>
		</td></tr>
	</table>
</body>
</html>
Lien vers le commentaire
Partager sur d’autres sites

Ca fonctionne j'ai bien mon form qui s'affiche mais au submit ca ajoute rien a la table et ne renvoie aucune erreur....Et rien dans les log de MySQL...

 

Merci quand meme je vais voir ce qui cloche dans la requete :D

<?php       
        if (isset ($_POST['OK'])){ //Si le bouton OK est cliquer 
	try{
	$connection=new PDO('mysql:host=localhost;dbname=course', 'root', '1135nf03', '' );
	$req = $connection -> prepare('INSERT INTO produit(produit, marque, type, cond, poid, unite, prix, mag, ville)
					   VALUES(?, ?, ?, ?, ?, ?, ?, ?, ?)');
		$success = $req -> exec(array(
			'produit' => $_POST['produit'],
			'marque' => $_POST['marque'],
			'cat' => $_POST['cat'],
			'cond' => $_POST['cond'],
			'quant' => $_POST['quant'],
			'unite' => $_POST['unite'],
			'prix' => $_POST['prix'],
			'mag' => $_POST['mag'],
			'ville' => $_POST['ville'],));}
                catch ( Exception $e )
	{
		die( 'Connection à MySQL impossible : ' .$e->getMessage());
	}
		if($success) (print_r ("Ajout de' .$produit. 'de marque '.$marque. 'du magasin' .$mag. 'de la ville de' .$ville. 'dans la catégorie' .$cat. "));
				}
	?>
Lien vers le commentaire
Partager sur d’autres sites

Je ne sais pas trop si ça peut poser problème mais dans ton INSERT INTO tu utilises la valeur "poid" et plus loin tu mets "quant".

 

De plus dans :

        if($success) (print_r ("Ajout de' .$produit. 'de marque '.$marque. 'du magasin' .$mag. 'de la ville de' .$ville. 'dans la catégorie' .$cat. "));

Je vois pas où tu as initialisé tes variables $produit, $marque, etc...

Lien vers le commentaire
Partager sur d’autres sites

poid c'est le nom de la colonne dansla table...J'ai d'ailleurs réduit le code. Les $produit $ marque... sont obtenus par $_POST['produit']

 

Mais pas d'erreur de MySQL et rien dans les logs :(

<?php       
        if (isset ($_POST['OK'])){ //Si le bouton OK est cliquer 
	try{
		$connection=new PDO('mysql:host=localhost;dbname=course', 'root', '1135nf03', '' );
	}
                catch ( Exception $e )
	{
		die( 'Connection à MySQL impossible : ' .$e->getMessage());
	}
	
	$req = $connection -> prepare('INSERT INTO `produit` VALUES (NULL,:produit, :marque, :cat, :cond, :quant, :unite, :prix, :mag, :ville)');
		$connection->beginTransaction();
		$req = $succes -> execute(array(
			'produit' => $_POST['produit'],
			'marque' => $_POST['marque'],
			'cat' => $_POST['cat'],
			'cond' => $_POST['cond'],
			'quant' => $_POST['quant'],
			'unite' => $_POST['unite'],
			'prix' => $_POST['prix'],
			'mag' => $_POST['mag'],
			'ville' => $_POST['ville'],));
		if($success) (print_r ("Ajout de' $produit 'de marque '$marque 'du magasin' $mag 'de la ville de' $ville 'dans la catégorie' $cat " ));
		$connection->commit();		}
	?>
Lien vers le commentaire
Partager sur d’autres sites

Bon ben on avance !!! Les données arrivent bien dans la table :youhou:

 

Reste put qu'a trouver pourquoi il m'affiche pas de message en cas de réussite avec un recap rapide des données entrées :D

<?php       
        if (! empty($_POST)){ //Si le bouton OK est cliquer 
	try{
		$connection=new PDO("mysql:host=localhost;dbname=course", "root", "1135nf03");
	}
                catch ( Exception $e )
	{
		die( 'Connection à MySQL impossible : ' .$e->getMessage());
	}
	
	$req = $connection -> prepare('INSERT INTO `produit` VALUES (NULL,:produit, :marque, :cat, :cond, :quant, :unite, :prix, :mag, :ville)');
		$connection->beginTransaction();
		$req -> execute(array(
			'produit' => $_POST['produit'],
			'marque' => $_POST['marque'],
			'cat' => $_POST['cat'],
			'cond' => $_POST['cond'],
			'quant' => $_POST['quant'],
			'unite' => $_POST['unite'],
			'prix' => $_POST['prix'],
			'mag' => $_POST['mag'],
			'ville' => $_POST['ville'],));
		if($success) (print_r ("Ajout de' .$produit 'de marque '.$marque 'du magasin' .$mag 'de la ville de' .$ville 'dans la catégorie' .$cat " ));
		$connection->commit();		}
	?>
Lien vers le commentaire
Partager sur d’autres sites

Je ne sais pas trop si ça peut poser problème mais dans ton INSERT INTO tu utilises la valeur "poid" et plus loin tu mets "quant".

 

De plus dans :

        if($success) (print_r ("Ajout de' .$produit. 'de marque '.$marque. 'du magasin' .$mag. 'de la ville de' .$ville. 'dans la catégorie' .$cat. "));

Je vois pas où tu as initialisé tes variables $produit, $marque, etc...

 

En fait t'avait raison. Je pensait pouvoir recuperer mes $produit, $prix etc... apres la requete mais pas possible...

 

Donc j'ai declarer les variables et ca passe :D

 

Merci tout plein !! :smack:

 

Je colle le code mais laisse ouvert le topic parce que je pense que ce projet risque de durer un bon moment et que ca va etre dur :transpi:

<?php       
        if (! empty($_POST)){
		$produit=$_POST['produit'];
		$marque=$_POST['marque'];
		$cat=$_POST['cat'];
		$cond=$_POST['cond'];
		$quant=$_POST['quant'];
		$unite=$_POST['unite'];
		$prix=$_POST['prix'];
		$mag=$_POST['mag'];
		$ville=$_POST['ville'];
		//Si le bouton OK est cliquer 
	try{
		$connection=new PDO("mysql:host=localhost;dbname=course", "root", "1135nf03");
	}
                catch ( Exception $e )
	{
		die( 'Connection à MySQL impossible : ' .$e->getMessage());
	}
	
	$req = $connection -> prepare('INSERT INTO `produit` VALUES (NULL,:produit, :marque, :cat, :cond, :quant, :unite, :prix, :mag, :ville)');
		$connection->beginTransaction();
		$req -> execute(array(
			'produit' => $_POST['produit'],
			'marque' => $_POST['marque'],
			'cat' => $_POST['cat'],
			'cond' => $_POST['cond'],
			'quant' => $_POST['quant'],
			'unite' => $_POST['unite'],
			'prix' => $_POST['prix'],
			'mag' => $_POST['mag'],
			'ville' => $_POST['ville'],));
		echo  ("Ajout de' $produit 'de marque '$marque 'du magasin' $mag 'de la ville de' $ville 'dans la catégorie' $cat " );
		$connection->commit();		}
	?>
Lien vers le commentaire
Partager sur d’autres sites

  • 3 mois après...

Autre piste possible, sans chercher à démonter tout ce qui à été dit (et qui est ma foi fort instructif), personne ne parles de mysqli qui est bien plus souple et est un objet prêt à l'emploi.

Perso, je n'en démord plus.

 

Mais cela ne doit rien enlever à cette discussion qui présente une démarche particulièrement pédagogique, on voit tellement de sites soit disant 'pro' qui oublient un peu trop facilement de parler du catch… brrrr

 

Petit exemple :

define('SERVER', 'server');
define('USER', 'user');
define('PSWD', 'pswd');
define('BASE', 'base');
$mysqli = new mysqli(SERVER, USER, PSWD, BASE);
if ($mysqli->connect_errno) {
echo "C‘est la cata ! : " . $mysqli->connect_error;
}
Ensuite dans le code c'est tout simplement

 

$maRequette = $mysqli->query("SELECT…");

 

$infos = $maRequette->mysqli_fetch_assoc…

 

$truc = $infos['machin'];

 

Quant à PDO, je vois un peu par-ci par-là qu'il n'est pas franchement poussé par ses utilisateurs, alors que mysqli se développe vraiment fort ses derniers temps, enfin, je dis ça… :transpi:

Lien vers le commentaire
Partager sur d’autres sites

Si je ne m'abuse, mysqli est justement censé apporter cette partie poo non ?

J'avoue, mon niveau "d'abstraction" est très limité, j'ai toujours rêvé pouvoir papoter avec quelqu'un qui maitrise car je bloque vraiment sur les notions de bases, celle qui malheureusement sont très difficiles à appréhender de manière autodidacte, ce que je suis, finalement :/

Lien vers le commentaire
Partager sur d’autres sites

Si je puis me permettre (je tombe sur le topic), c'est normal que tu ne voyais pas ton success, vu que tu n'affecte nul part ton $success , donc il ne risque pas d'être à true :transpi: 


Allez, un admin pour nous faire une section "le bar des autodidactes" dans le forum code ? ;)

 

Il faut dire que je pense qu'on est tous un peu auto didacte dans la programmation (même si certains, dont moi, en ont fait leur travail)

 

Sinon, il y a un bar : https://forum.nextinpact.com/topic/45146-le-bar-de-la-programmation/page-37 :francais: 

Lien vers le commentaire
Partager sur d’autres sites

Archivé

Ce sujet est désormais archivé et ne peut plus recevoir de nouvelles réponses.

×
×
  • Créer...