Page 1 sur 1

formulaire PHP avec enregistrement dans une BDD MySQL

Posté : 29 nov. 2011, 10:38
par amonite57
Bonjour,

Voici mon soucis,
J'ai un formulaire pour envoyer des informations dans ma base de donées MySQL, mais a chaque fois cela me met qu'il y a une erreur, et je ne la trouve pas.

Je vous met mon code en dessous, si quelqu'un a une petite idée, je suis preneur.

Merci d'avance.
<div class="ajouter">
                    	<p class="titre">Ajouter : </p>
                        	<p class="promo"><form action="" method="post"><input type="checkbox" name="ajout_promo" /> Une promotion</p><br /><br />
                            
                        <p class="titre">Supprimer : </p>
                        	<p class="promo"><input type="checkbox" name="suppr_promo" /> Une promotion </p><br /><br />
                       
                            
                            <input type="submit" name="envoyer" /></form>
                    
                    
                    </div>
                             <?php     
							 
							 
							 if (isset($_POST['ajout_promo']))
							 {
								 ?>
                                 <form action="" method="post" enctype="multipart/form-data">
                                <table border="0" bgcolor="#CCCCCC">
                                <tr>
                                <td> Titre :</td><td> <input type="text" name="titre" /></td>
                                </tr>
                                
                                <tr>
                                <td> Description : </td><td><input type="text" name="description" /></td>
                                </tr>
                                
                                <tr>
                                <td>Réduction : (sans le %, ex: 10)</td><td> <input type=text name="reduction" id=a1></td>
                                <tr>
                                
                                <tr>
              					<td> Prix initial : (sans le €) </td><td> <input type=text name="prix_i" id=b1></td>
                                <tr>
                                
                                <tr>
                                <td>Prix promo : (sans le €) </td><td><input type="hidden" name=c1 id=c1>
                                <input type="text" name="prix_p" id=d1 />
							
					
		



								
								
								<input type="button" onclick="calcul(1);" value="Calculer" /></td>
                                </tr>
                                
                                <tr>
                                <td>Image </td><td> <input type="hidden" name="MAX_FILE_SIZE" value="100000"/> <input type="file" name="image" /></td>
                                </tr>
                                 </table>
                           
                               <center><input type="submit" name="envoyer_promo" /></center>
                               
                                 </form>
                                 <?php					 
							 }
							 
	
							 if (isset($_POST['envoyer_promo']))
							 {
								 $titre = $_POST['titre'];
								 $description = $_POST['description'];
								 $reduction = $_POST['reduction'];
								 $prix_i = $_POST['prix_i'];
								 $prix_p = $_POST['prix_p'];
								 
								 $erreur = '';
								
								
							     $dossier = '../img/';
							 	 $fichier = basename($_FILES['image']['name']);
							  	 $taille_maxi = 100000;
								 $taille = filesize($_FILES['image']['tmp_name']);
								 $extensions = array('.png', '.gif', '.jpg', '.jpeg');
								 $extension = strrchr($_FILES['image']['name'], '.'); 
								 
								 
								 if (empty($titre) || empty($description) || empty($reduction) || empty($prix_i) || empty($prix_p) || empty($fichier))
								 {
								 			 echo $erreur = 'Veuillez entrer tous les champs.';
							  	 }
		
									if(!in_array($extension, $extensions)) //Si l'extension n'est pas dans le tableau
									{
										 echo $erreur = 'Veuillez charger une image de format .png ou .gif ou .jpg(.jpeg).'; 
								
									}
									
										if(!isset($erreur2)) //S'il n'y a pas d'erreur, on upload
											{
												
												 //On formate le nom du fichier ici...
												 $fichier = strtr($fichier, 
												'ÀÁÂÃÄÅÇÈÉÊËÌÍÎÏÒÓÔÕÖÙÚÛÜÝàáâãäåçèéêëìíîïðòóôõöùúûüýÿ', 
												'AAAAAACEEEEIIIIOOOOOUUUUYaaaaaaceeeeiiiioooooouuuuyy');
												
												 $fichier = preg_replace('/([^.a-z0-9]+)/i', '-', $fichier);
												 
													if(move_uploaded_file($_FILES['image']['tmp_name'], $dossier . $fichier)) //Si la fonction renvoie TRUE, c'est que ça a fonctionné...
														  {
																 echo $erreur = 'Image chargée avec succès.'; 
																 

									 
																 $file = "../img/".$_FILES['image']['name'].""; // L'emplacement de l'image à redimensionner. 
							
																 $x = 250;
							
																 $y = 250;
							
																 $size = getimagesize($file);
							
							
															


													include('../connexion.php');
													
													$titre = mysql_real_escape_string($titre);
													$description = mysql_real_escape_string($description);
													$reduction = mysql_real_escape_string($reduction);
													
											
												 
													// Insertion dans la bdd
													$req_promo = mysql_query('SELECT * FROM promos ;');
												
													while ($sql_promo = mysql_fetch_assoc($req_promo))
													 {
														$query = "insert into " . TABLE_PROMOS . "(id,titre,description,reduction,image,prix_initial,prix_promo) values('', '$titre', '$description', '$reduction', './img/".$_FILES['image']['name']."', '$prix_i', '$prix_p' )";
													 }
													mysql_real_escape_string($query);
											
											
													if (mysql_query($query))
													{
														 echo $erreur = 'Promotion ajoutée avec succès.'; 
													}
													else
													{
														echo $erreur = 'Une erreur a été détectée.';
													}
													
												}
											} 
										} // fin isset envoyer promo
					



Re: formulaire PHP avec enregistrement dans une BDD MySQL

Posté : 29 nov. 2011, 10:47
par Mazarini
...mais a chaque fois cela me met qu'il y a une erreur...
Erreur que je n'ai pas vu dans ton post pourtant fort long

Re: formulaire PHP avec enregistrement dans une BDD MySQL

Posté : 29 nov. 2011, 12:11
par moogli
surement dû au fait que $erreur2 existe nulle part sans dans le test, et que avant c'est $erreur qui est utilisé ?

donc le getimagesize rale fortement ?

bon le reste j'peux pas tester ^^

@+

Re: formulaire PHP avec enregistrement dans une BDD MySQL

Posté : 29 nov. 2011, 15:03
par amonite57
Donc je reviens suite mon problème,

il n'envoie aucune donnée à la base de données. et il me met image chargée avec succèes . une erreur a été detectée

Help me please :D

Re: formulaire PHP avec enregistrement dans une BDD MySQL

Posté : 29 nov. 2011, 15:51
par Mazarini
Bonjour,
if (mysql_query($query))
{
   echo $erreur = 'Promotion ajoutée avec succès.';
}
else
{
    echo $erreur = 'Une erreur a été détectée.';
}
A remplacer par :
mysql_query($query);
if (mysql_errno() == 0)
{
   echo $erreur = 'Promotion ajoutée avec succès.';
}
else
{
    echo $erreur = 'Une erreur a été détectée.';
    echo '<br>',mysql_error(); 
}
mysql_error() permet de voir ce que mysql repproche à ta requête.
mysql_errno() vaut 0 si pas d'erreur.

Re: formulaire PHP avec enregistrement dans une BDD MySQL

Posté : 29 nov. 2011, 16:28
par amonite57
Bonjour Mazarini,

Merci de ton aide.

Nouveau message d'erreur avec la modification :

Image chargée avec succès.Une erreur a été détectée.
Query was empty

apparament, ca ne fonctionne pas, si vous avez un autre solution, je suis preneur.

Merci d'avance.

Re: formulaire PHP avec enregistrement dans une BDD MySQL

Posté : 29 nov. 2011, 16:49
par Mazarini
Cela veux dire que la variable qui contient la requete est vide.
Il faut donc que tu regardes pourquoi elle ne contient rien ou que tu ne l'exécute pas si elle est vide.

Re: formulaire PHP avec enregistrement dans une BDD MySQL

Posté : 29 nov. 2011, 17:56
par moogli
le merdier viens surement de la
// Insertion dans la bdd
$req_promo = mysql_query('SELECT * FROM promos ;');

while ($sql_promo = mysql_fetch_assoc($req_promo))
{
$query = "insert into " . TABLE_PROMOS . "(id,titre,description,reduction,image,prix_initial,prix_promo) values('', '$titre', '$description', '$reduction', './img/".$_FILES['image']['name']."', '$prix_i', '$prix_p' )";
}
mysql_real_escape_string($query);


Pourquoi une requête pour insertion ? tu recréer ta requête autant de fois qu'il y a de tuples dans la table promos. si y en a 10000 ton while fait 10000 tours ......
vire touts cela et construit une seule fois la requête.

de plus tu n'utilise pas correctement la fonction mysql_real_escape_string. Elle doit être utilisée sur chaque éléments que tu passe dans la requête. en gros ici 8 fois.

@+

Édit : pas de support par MP
Corrige ton code s'il y a toujours des problèmes revient avec les éventuels messages d'erreur l'explication du disfonctionnement et le code (dans les balises
 stp ;) )

Re: formulaire PHP avec enregistrement dans une BDD MySQL

Posté : 30 nov. 2011, 10:21
par amonite
Bonjour Moogli,

Merci de ton aide,
J'ai contourner le probleme en en entrant directement dans MySQL, mais pourrais tu stp me dire comment tu retranscrirais le code modifié stp.

Merci d'avance.

Cordialement

Re: formulaire PHP avec enregistrement dans une BDD MySQL

Posté : 30 nov. 2011, 12:17
par moogli
non désolé, si tu n'essaie pas tu n'y arrivera pas.

on l'a tous fait, on commence par buter, on demande de l'aide et petit a petit on comprend et résous le problème seul (le but c'est que tu soit autonome ;) )

si tu bloque sur quelque chose, si tu ne comprend pas ce que j'ai mis ce n'est pas un problème, je n'espère pas être toujours clair, et ce qui l'ai pour moi ne l'est pas forcément pour les autres, demande et je répondrais au mieux.

Mais je ne ferais pas le code ;)


@+