Page 1 sur 1

update qui ne fonctionne pas correctement

Posté : 04 juin 2011, 01:52
par veandell
Bonsoir,je suis nouveau sur se forum

Je coince sur mon code depuis plusieurs jours,je vais essayer de vous expliquez se problèmes,donc j'ai un formulaire avec différents nom, prix et stock et une image,
ex:manga_neuf:naruto;prix : 6€ normalement c'est 6€95,mais je ne sais pas encore utilisé les décimal,son stock:10 et l'image du livre,

j'insert tout sa dans ma bdd mais je voudrais faire l'update du manga en rapport a son prix ou son stock ,bien sur je n'ai pas que le livre,j'ai aussi des jeux,figurine etc

je vous met mon code
  <?php
    Session_start();
    include('../tests/cookie.php');
    ?>
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" >
    <head>
    <title>Aux milles trésors du dragon</title>
     <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
    <link rel="stylesheet" media="screen" type="text/css" title= "site" href="../css/site.css" />
    </head>
    <?php
    include("../includes/pseudo.php");
    include("../includes/functions.php");
    include("../includes/constants.php");
    include("../includes/identifiants.php");


         






    $jeu_neuf = htmlspecialchars(addslashes($_POST['jeu_neuf']));
    $manga_neuf = htmlspecialchars(addslashes($_POST['manga_neuf']));
    $figurine_neuf = htmlspecialchars(addslashes($_POST['figurine_neuf']));
    $console_neuf = htmlspecialchars(addslashes($_POST['console_neuf']));
    $dvd_neuf = htmlspecialchars(addslashes($_POST['dvd_neuf']));

    $prix_jeu_neuf = htmlspecialchars(addslashes($_POST['prix_jeu_neuf']));
    $prix_manga_neuf = htmlspecialchars(addslashes($_POST['prix_manga_neuf']));
    $prix_figurine_neuf = htmlspecialchars(addslashes($_POST['prix_figurine_neuf']));
    $prix_console_neuf = htmlspecialchars(addslashes($_POST['prix_console_neuf']));
    $prix_dvd_neuf = htmlspecialchars(addslashes($_POST['prix_dvd_neuf']));

    $stock_jeu_neuf = htmlspecialchars(addslashes($_POST['stock_jeu_neuf']));
    $stock_manga_neuf = htmlspecialchars(addslashes($_POST['stock_manga_neuf']));
    $stock_figurine_neuf = htmlspecialchars(addslashes($_POST['stock_figurine_neuf']));
    $stock_console_neuf = htmlspecialchars(addslashes($_POST['stock_console_neuf']));
    $stock_dvd_neuf = htmlspecialchars(addslashes($_POST['stock_dvd_neuf']));

 
 
 $query = $db->prepare("SELECT id,jeu_neuf,manga_neuf,figurine_neuf,console_neuf,dvd_neuf  FROM `magasin` WHERE 
                                                         prix_jeu_neuf = :prix_jeu_neuf");
    $query->bindValue(':prix_jeu_neuf', $_POST['prix_jeu_neuf'], PDO::PARAM_INT);

	$query->execute();
    $data = $query->fetch();
    print_r($data);
    		 
    	
 
    if (!empty($_FILES['image']['size']))

    {
    	        //On définit les variables :
    	        $maxsize = 35000; //Poid de l'image
    	        $maxwidth = 300; //Largeur de l'image
    	        $maxheight = 300; //Longueur de l'image
    	        $extensions_valides = array( 'jpg' , 'jpeg' , 'gif' , 'png', 'bmp' ); //Liste des extensions valides

    	        if ($_FILES['image']['error'] > 0)
    	        {
    	                $avatar_erreur = "Erreur lors du tranfsert de l'avatar : ";
    	        }
    	        if ($_FILES['image']['size'] > $maxsize)
    	        {
    	                $i++;
    	                $image_erreur1 = "Le fichier est trop gros : (<strong>".$_FILES['image']['size']." Octets</strong>    contre <strong>".$maxsize." Octets</strong>)";
    	        }

    	            $image_sizes = getimagesize($_FILES['image']['tmp_name']);
    	        if ($image_sizes[0] > $maxwidth OR $image_sizes[1] > $maxheight)
    	        {
    	                $i++;
    	                $image_erreur2 = "Image trop large ou trop longue :
    	                (<strong>".$image_sizes[0]."x".$image_sizes[1]."</strong> contre <strong>".$maxwidth."x".$maxheight."</strong>)";
    	        }

    	        $extension_upload = strtolower(substr(  strrchr($_FILES['image']['name'], '.')  ,1));
    	        if (!in_array($extension_upload,$extensions_valides) )
    	        {
    	                $i++;
    	                $image_erreur3 = "Extension de l'avatar incorrecte";
    	        }
    	    }


          
    	         $nomimage=(!empty($_FILES['image']['size']))?move_image($_FILES['image']):'';




    $query = $db->prepare("SELECT COUNT(*) AS nombre_entree FROM `magasin` WHERE id = :id");
    $query->bindValue(':id', $data['id'], PDO::PARAM_INT);
            $query->execute();
    			$donnees = $query->fetch();
    			$nombre_lignes = $donnees['nombre_entree'];
                print_r ($donnees);

    	 if ($nombre_lignes > 0) 
    	 {

             
    	       $query = $db->prepare('INSERT INTO magasin    (jeu_neuf,console_neuf,manga_neuf,image,
    															  figurine_neuf,dvd_neuf,prix_jeu_neuf,prix_console_neuf, 
                                                                                                                           prix_manga_neuf,prix_figurine_neuf,
    															  prix_dvd_neuf,stock_jeu_neuf,stock_console_neuf,
    															  stock_manga_neuf,stock_figurine_neuf,stock_dvd_neuf)

    												   VALUES     (:jeu_neuf,:console_neuf,:manga_neuf,:nomimage,:figurine_neuf,:dvd_neuf,
    															  :prix_jeu_neuf,:prix_console_neuf,:prix_manga_neuf,:prix_figurine_neuf,
    															  :prix_dvd_neuf,:stock_jeu_neuf,:stock_console_neuf,
    															  :stock_manga_neuf,:stock_figurine_neuf,:stock_dvd_neuf)
    														       ');





    					$query->bindvalue(':jeu_neuf', $jeu_neuf, pdo::PARAM_STR);
    					$query->bindvalue(':console_neuf', $console_neuf, pdo::PARAM_STR);
    					$query->bindvalue(':manga_neuf', $manga_neuf, pdo::PARAM_STR);
    					$query->bindvalue(':figurine_neuf', $figurine_neuf, pdo::PARAM_STR);
    					$query->bindvalue(':dvd_neuf', $dvd_neuf, pdo::PARAM_STR);

    					$query->bindvalue(':prix_jeu_neuf', $prix_jeu_neuf, pdo::PARAM_INT);
    					$query->bindvalue(':prix_console_neuf', $prix_console_neuf, pdo::PARAM_INT);
    					$query->bindvalue(':prix_manga_neuf', $prix_manga_neuf, pdo::PARAM_INT);
    					$query->bindvalue(':prix_figurine_neuf', $prix_figurine_neuf, pdo::PARAM_INT);
    					$query->bindvalue(':prix_dvd_neuf', $prix_dvd_neuf, pdo::PARAM_INT);

    					$query->bindvalue(':stock_jeu_neuf', $stock_jeu_neuf, pdo::PARAM_INT);
    					$query->bindvalue(':stock_console_neuf', $stock_console_neuf, pdo::PARAM_INT);
    					$query->bindvalue(':stock_manga_neuf', $stock_manga_neuf, pdo::PARAM_INT);
    					$query->bindvalue(':stock_figurine_neuf', $stock_figurine_neuf, pdo::PARAM_INT);
    					$query->bindvalue(':stock_dvd_neuf', $prix_dvd_neuf, pdo::PARAM_INT);
    					$query->bindvalue(':nomimage', $nomimage, pdo::PARAM_STR);
    					$query->execute() or die(print_r($db->errorinfo()));
    					
                      $query->CloseCursor();     



    	}else{


 $query = $db->prepare('UPDATE magasin

    								                     SET  jeu_neuf = :jeu_neuf,
    														  console_neuf = :console_neuf,
    														  manga_neuf = :manga_neuf,
    														  figurine_neuf =:figurine_neuf,
    														  dvd_neuf = :dvd_neuf,

    														  prix_jeu_neuf = :prix_jeu_neuf,
    														  prix_console_neuf = :prix_console_neuf,
    														  prix_manga_neuf = :prix_manga_neuf,
    														  prix_figurine_neuf =:prix_figurine_neuf,
    														  prix_dvd_neuf = :prix_dvd_neuf,

    														  stock_jeu_neuf = :stock_jeu_neuf,
    														  stock_console_neuf = :stock_console_neuf,
    														  stock_manga_neuf = :stock_manga_neuf,
    														  stock_figurine_neuf = :stock_figurine_neuf,
    														  stock_dvd_neuf = :stock_dvd_neuf

    										          WHERE id = :id
    								            ');




    				$query->bindvalue(':id',$data['id'], pdo::PARAM_INT);
    				$query->bindvalue(':jeu_neuf', $jeu_neuf, pdo::PARAM_STR);
    				$query->bindvalue(':console_neuf', $console_neuf, pdo::PARAM_STR);
    				$query->bindvalue(':manga_neuf', $manga_neuf, pdo::PARAM_STR);
    				$query->bindvalue(':figurine_neuf', $figurine_neuf, pdo::PARAM_STR);
    				$query->bindvalue(':dvd_neuf', $dvd_neuf, pdo::PARAM_STR);

    				$query->bindvalue(':prix_jeu_neuf', $prix_jeu_neuf, pdo::PARAM_INT);
    				$query->bindvalue(':prix_console_neuf', $prix_console_neuf, pdo::PARAM_INT);
    				$query->bindvalue(':prix_manga_neuf', $prix_manga_neuf, pdo::PARAM_INT);
    				$query->bindvalue(':prix_figurine_neuf', $prix_figurine_neuf, pdo::PARAM_INT);
    				$query->bindvalue(':prix_dvd_neuf', $prix_dvd_neuf, pdo::PARAM_INT);

    				$query->bindvalue(':stock_jeu_neuf', $stock_jeu_neuf, pdo::PARAM_INT);
    				$query->bindvalue(':stock_console_neuf', $stock_console_neuf, pdo::PARAM_INT);
    				$query->bindvalue(':stock_manga_neuf', $stock_manga_neuf, pdo::PARAM_INT);
    				$query->bindvalue(':stock_figurine_neuf', $stock_figurine_neuf, pdo::PARAM_INT);
    				$query->bindvalue(':stock_dvd_neuf', $prix_dvd_neuf, pdo::PARAM_INT);
                    
    				$query->execute() or die(print_r($db->errorinfo()));
    			    $query->CloseCursor();



    				
                      
                       
}
    	
    	
    
    	   
    	
    	    echo'<h1>donnée rentré</h1>';
    		echo'<p>donnée bien rentré</p>
    		<p>cliquez <a href = "../tests/magasin.php">ici</a> </p>';











    ?>



                   </div>
              </body>
    </html>



si vous avez besoin de renseignement,je suis dispo

merci de votre aide

Re: update qui ne fonctionne pas correctement

Posté : 04 juin 2011, 10:39
par moogli
salut,

heu j'ai rien compris a ton problème ;)

je vois une fonction perso move_image mais pas sa déclaration dans le doute je dirais que c'est la dedans qu'il y a le move_uploaded_file ?

sinon au vu de ton titre qu'est ce que ne fonctionne pas correctement ?
le fichier n'arrive pas la où tu le souhaite ?
il n'a pas le bon nom ?
tu a un message d'erreur ?

au passage tu ne devrais pas utiliser directement des valeurs issues de formulaire en présumant qu'elle seront fournit, car ne peux absolument pas être certain que personne ne va modifier ton formulaire après tous il est chez le client hein ;)


@+

Re: update qui ne fonctionne pas correctement

Posté : 04 juin 2011, 13:46
par veandell
je vais vous mettre le formulaire et l'exemple,je vois que comme sa pour essayer de vous faire comprendre
 <?php
session_start();
$titre="magasin";
include("../includes/identifiants.php");
include("../includes/magasin_1.php");
include("../includes/pseudo.php");
 echo '<p><i>Vous êtes ici</i> : <a href="./site.php">site</a> --> 
    <a href="./magasin.php">magasin</a></p>';
	
	
if (!verif_auth(ADMIN)) erreur(ERR_AUTH_ADMIN);

if (!empty($_POST['admin']))

	echo'<h1>jeu,console,figurine,manga,dvd neuf</h1>';
	echo'<form method="POST" action="../traitement/magasin_1.php" name="../traitement/magasin" enctype="multipart/form-data">
	
	<fieldset>
	<label for="jeu_neuf">jeu neuf: </label><input name="jeu_neuf" type="text" id="jeu_neuf" /><br/><br/>
	<label for="console_neuf">console neuve: </label><input name="console_neuf" type="text" id="console_neuf" /><br/><br/>
	<label for="figurine_neuf">figurine neuf: </label><input name="figurine_neuf" type="text" id="figurine_neuf" /><br/><br/>
	<label for="manga_neuf">manga neuf: </label><input name="manga_neuf" type="text" id="manga_neuf" /><br/><br/>
	<label for="dvd_neuf">dvd neuf: </label><input name="dvd_neuf" type="text" id="dvd_neuf" /><br/><br/>
	</fieldset>
	<br/>';
	echo '<h1>prix des jeux,consoles,figurines,manga,dvd neuf</h1>
	<fieldset>
	<label for="prix_jeu_neuf">prix du jeu neuf: </label><input name="prix_jeu_neuf" type="text" id="prix_jeu_neuf" /><br/><br/>
	<label for="prix_console_neuf">prix de la console neuve: </label><input name="prix_console_neuf" type="text" id="prix_console_neuf" /><br/><br/>
	<label for="prix_figurine_neuf">prix de la figurine neuve: </label><input name="prix_figurine_neuf" type="text" id="prix_figurine_neuf" /><br/><br/>
	<label for="prix_manga_neuf">prix du manga neuf: </label><input name="prix_manga_neuf" type="text" id="prix_manga_neuf" /><br/><br/>
	<label for="prix_dvd_neuf">prix du dvd neuf: </label><input name="prix_dvd_neuf" type="text" id="prix_dvd_neuf" /><br/><br/>
	</fieldset>
	<br/>';
	echo '<h1>stock des jeux,consoles,figurines,manga,dvd neuf</h1>
	<fieldset>
	<label for="stock_jeu_neuf">stock des jeux neuf: </label><input name="stock_jeu_neuf" type="text" id="stock_jeu_neuf" /><br/><br/>
	<label for="stock_console_neuf">stock en console neuve: </label><input name="stock_console_neuf" type="text" id="stock_console_neuf" /><br/><br/>
	<label for="stock_figurine_neuf">stock en figurine neuf: </label><input name="stock_figurine_neuf" type="text" id="stock_figurine_neuf" /><br/><br/>
	<label for="stock_manga_neuf">stock en manga neuf: </label><input name="stock_manga_neuf" type="text" id="stock_manga_neuf" /><br/><br/>
	<label for="stock_dvd_neuf">stock en dvd neuf: </label><input name="stock_dvd_neuf" type="text" id="stock_dvd_neuf" /><br/><br/>
	<label for="image">image :</label><input type="file" name="image" id="image" /><br />
	

	</fieldset>';
	
  echo'<i><center><input type="submit" value="envoyer"</center></i> </form>';?>
voila le formulaire,je veux rentré le nom d'un jeu: par ex mafia son prix 69€ et le stock 10 et une image,je valide et je l'insert en bdd mais voila plus tard le stock augmente ou diminue et je voudrais mettre par ex 20 en stock,donc update la ligne en rajoutant nouveau stock dans l'id du jeu deja inseré mais l'update ne se fais pas et insert a la place.L'upload de l'image fonctionne trés bien,par contre je vois pas se que tu veux dire par:
au passage tu ne devrais pas utiliser directement des valeurs issues de formulaire en présumant qu'elle seront fournit, car ne peux absolument pas être certain que personne ne va modifier ton formulaire après tous il est chez le client hein ;)

Re: update qui ne fonctionne pas correctement

Posté : 04 juin 2011, 14:13
par Ryle
A priori le problème vient du fait que ta condition et le traitement associé ne sont pas cohérents :
Tu fais un select pour vérifier s'il existe déjà un enregistrement avec l'id spécifié, mais si c'est le cas (if ($nombre_lignes > 0)) tu fais un insert, alors que si l'enregistrement existe déjà, c'est là que tu devrais le modifier et faire l'update (et le insert dans le else)

Quant à la remarque de moogli, c'est surtout lorsque d'autres personnes peuvent utiliser ton formulaire, il faut toujours contrôler et protéger les données qu'ils envoient. En effet, tu n'es pas à l'abri d'une erreur de saisie ou d'une personne malintentionnée qui pourrait essayer d'envoyer du code sql qui serait exécuté en même temps que ta requête (on appelle ça des injections sql)

Re: update qui ne fonctionne pas correctement

Posté : 04 juin 2011, 15:28
par veandell
j'ai inversé l'update et l'insert mais je viens de remarqué que si je fais une sélection de l'id sa m'update au lieu de l'inseré,


ex dans ma bdd j'ai id 3 jeu:mafia,prix 69 stock 3 quand je met dans mon formulaire manga naruto prix 6 stock 10 il me l'update sur l'id 3 au lieu de l'inseré, je ne vois pas quoi mettre dans le WHERE de l'update pour update la bonne lignes,car sélectionné l'id ne fonctionne pas