requête update ne fonctionne plus

jplale
Invité n'ayant pas de compte PHPfrance

12 févr. 2010, 15:13

bonjour, je me casse la tête depuis bien 1 semaine sur un problème de requête UPDATE

j'ai une base avec une table stock
-- 
-- Structure de la table `stock`
-- 

CREATE TABLE IF NOT EXISTS `stock` (
  `ID` int(8) NOT NULL auto_increment,
  `page` varchar(8) NOT NULL default '',
  `ref` varchar(20) NOT NULL default '',
  `designation` varchar(50) NOT NULL default '',
  `couleur` varchar(20) NOT NULL default '',
  `taille` varchar(20) NOT NULL,
  `position` varchar(20) NOT NULL default '',
  `reel` int(6) NOT NULL default '0',
  `mini` int(6) NOT NULL default '0',
  PRIMARY KEY  (`ID`)
) ENGINE=MyISAM  DEFAULT CHARSET=utf8 AUTO_INCREMENT=3642 ;

-- 
-- Contenu de la table `stock`
-- 

INSERT INTO `stock` (`ID`, `page`, `ref`, `designation`, `couleur`, `taille`, `position`, `reel`, `mini`) VALUES 
(1, '126', '101', 'Stylo Green Pen', 'BLEU ', 'S/T ', 'D25', 7, 4),
tout marchait parfaitement mais depuis peu j'ai rajouter un champ taille à ma table

j'ai donc modifier mes fichiers php (liste, ajout et modif)
tout marche bien sauf pour mon fichier modif
<?php
require_once("connexionMysql.inc.php");
if(isset($_POST['bouton']))
{
	$requete="UPDATE stock SET 
	ref='".$_POST['ref']."' ,
	page='".$_POST['page']."' ,
	designation='".$_POST['designation']."' ,
	couleur='".$_POST['couleur']."', 
	taille='".$_POST['taille']."',
	position='".$_POST['position']."',
	reel='".$_POST['reel']."' ,
	mini='".$_POST['mini']."' WHERE ID='".$_POST['ID']."'  " ;
	mysql_query($requete);
	
	//redirection vers liste du stock en fin de query
	function redirection($url){
		echo "<script type=\"text/javascript\">\n"
		. "<!--\n"
		. "\n"
		. "function redirect() {\n"
		. "window.location='" . html_entity_decode($url) . "'\n"
		. "}\n"
		. "setTimeout('redirect()','0');\n"
		. "\n"
		. "// -->\n"
		. "</script>\n";
	}
	redirection('listestock.php');

}
//--------------requête de la fiche modif
$requete3="SELECT * FROM stock  WHERE  ID='".$_GET['ID']."' " ;
$resultat3=mysql_query($requete3);
$stock=mysql_fetch_array($resultat3);
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<link rel="icon" type="image/ico" href="../favicon.ico" />
<title>modif référence</title>
<link href="general.css" rel="stylesheet" type="text/css" />

</head>
<body>
<div class="centrage">
<form id="monform" name="form1" method="post" enctype="multipart/form-data" action="stockModif.php">
  
  	<p>
		<label>
		  <input type="submit" name="bouton"  value="Sauver" />
		</label>
	<a href="../listestock.php" >retour stock</a>
	</p>
	
  <table width="950" border="0" cellspacing="2" cellpadding="0">
	  <tr bgcolor="#d3dce3">		
		<td><strong>Référence</strong></td>
		<td align="center"><strong>Page</strong></td>
		<td><strong>Désignation</strong></td>
		<td><strong>Couleur</strong></td>
		<td align="center"><strong>Taille</strong></td>
		<td align="center"><strong>Position</strong></td>
		<td align="center"><strong>Stock réel</strong></td>
		<td align="center"><strong>Stock mini</strong></td>
	  </tr>
	
	  <tr >		
		<td ><input type="text" name="ref"  value="<?php echo $stock['ref']; ?>" /></td>
		<td align="center"><input type="text" name="page"  value="<?php echo $stock['page']; ?>" /></td>
		<td><input type="text" name="designation"  value="<?php echo $stock['designation']; ?>" /></td>
		<td><input type="text" name="couleur"  value="<?php echo $stock['couleur']; ?>" /></td>
		<td><input type="text" name="taille"  value="<?php echo $stock['taille']; ?>" /></td>
		<td align="center"><input type="text" name="position"  value="<?php echo $stock['position']; ?>" /></td>
		<td align="center"><input type="text" name="reel"  value="<?php echo $stock['reel']; ?>" /></td>
		<td align="center"><input type="text" name="mini"  value="<?php echo $stock['mini']; ?>" /></td>
		</tr>
	</table>
    
</form>
</div>
</body>
</html>
je ne vois pas d'où peut venir le problème? je suis même revenu en arrière en enlevant mon champ taille sur la base et de même sur mes fichiers php, mais sans succés :cry:

merci d'avance pour votre aide.

ViPHP
ViPHP | 5462 Messages

12 févr. 2010, 15:22

fait un
mysql_query($requete) || exit(mysql_error());
tu verras ce qu'il te dis
Modifié en dernier par stealth35 le 12 févr. 2010, 15:25, modifié 1 fois.

Eléphanteau du PHP | 16 Messages

12 févr. 2010, 15:25

je viens de rajouter

Code : Tout sélectionner

mysql_query($requete) or exit(mysql_error());
mais je n'ai toujours pas de mise à jour ni d'erreur ! :?

ViPHP
ViPHP | 5462 Messages

12 févr. 2010, 15:27

enlève ta redirection

Eléphanteau du PHP | 16 Messages

12 févr. 2010, 15:30

pareil j'avais essayé en remplaçant par un header et sans rien...

pour info je teste en local avec wamp, si ça peut aider à trouver le pb

ViPHP
ViPHP | 5462 Messages

12 févr. 2010, 15:32

pareil j'avais essayé en remplaçant par un header et sans rien...

pour info je teste en local avec wamp, si ça peut aider
ca te marque rien dutout page blanche ? as tu les erreurs d'activé , travail tu en E_ALL | E_STRICT ?
:wink:

Eléphanteau du PHP | 16 Messages

12 févr. 2010, 15:37

en fait en reglant la duré de la mémorisation je m'aperçois que ma page modif est rafraichi en se vidant de ses champs puis redirection vers ma liste, c'est tout

"E_ALL | E_STRICT " c'est paramètre du php.ini ?

je viens de les de-commenter puis relance du serveur et pareil aucune erreur?

ViPHP
ViPHP | 5462 Messages

12 févr. 2010, 15:41

en fait en reglant la duré de la mémorisation je m'aperçois que ma page modif est rafraichi en se vidant de ses champs puis redirection vers ma liste, c'est tout

"E_ALL | E_STRICT " c'est paramètre du php.ini ?

je viens de les decommenter et pareil aucune erreur?

oui,
error_reporting = E_ALL | E_STRICT
fait un "exit();" apres "mysql_query($requete) || exit(mysql_error());" et affiche la requete
echo $requete;
mysql_query($requete) || exit(mysql_error());
exit;
et montre ce que ca donne

Eléphanteau du PHP | 16 Messages

12 févr. 2010, 15:45

j'obtiens ça : UPDATE stock SET ref='testxcvxc' , page='325' , designation='test' , couleur='noire', taille='', position='A15', reel='3' , mini='2' WHERE ID=''

donc il n'arrive pas à faire l'update pour l'ID demandé puisqu'il ne le trouve pas ! bizarre puisqu'il ouvre bien la bonne ligne à modifier :shock:

ViPHP
ViPHP | 5462 Messages

12 févr. 2010, 15:48

on y arrive, faire un
echo '<pre>' . print_r($_POST, true) . '</pre>;
parce que finalement nul par dans ton formulaire tu lui donne l'id

Eléphanteau du PHP | 16 Messages

12 févr. 2010, 15:49

j'ai rajouté <input type="hidden" name="ID" value="<?php echo $stock['ID']; ?>" /> et ça marche maintant :
<table width="950" border="0" cellspacing="2" cellpadding="0">
      <tr bgcolor="#d3dce3">        
        <td><strong>Référence</strong></td>
        <td align="center"><strong>Page</strong></td>
        <td><strong>Désignation</strong></td>
        <td><strong>Couleur</strong></td>
        <td align="center"><strong>Taille</strong></td>
        <td align="center"><strong>Position</strong></td>
        <td align="center"><strong>Stock réel</strong></td>
        <td align="center"><strong>Stock mini</strong></td>
      </tr>
    
      <tr >    <input type="hidden" name="ID"  value="<?php echo $stock['ID']; ?>" />    
        <td ><input type="text" name="ref"  value="<?php echo $stock['ref']; ?>" /></td>
        <td align="center"><input type="text" name="page"  value="<?php echo $stock['page']; ?>" /></td>
        <td><input type="text" name="designation"  value="<?php echo $stock['designation']; ?>" /></td>
        <td><input type="text" name="couleur"  value="<?php echo $stock['couleur']; ?>" /></td>
        <td><input type="text" name="taille"  value="<?php echo $stock['taille']; ?>" /></td>
        <td align="center"><input type="text" name="position"  value="<?php echo $stock['position']; ?>" /></td>
        <td align="center"><input type="text" name="reel"  value="<?php echo $stock['reel']; ?>" /></td>
        <td align="center"><input type="text" name="mini"  value="<?php echo $stock['mini']; ?>" /></td>
        </tr>
    </table>
:D

Eléphanteau du PHP | 16 Messages

12 févr. 2010, 15:50

quelle est la meilleure méthode?

ViPHP
ViPHP | 5462 Messages

12 févr. 2010, 15:51

comme ta fais c'est très bien

Eléphanteau du PHP | 16 Messages

12 févr. 2010, 15:55

merci stealth35 pour ton aide

j'ai pas encore le réflexe d'afficher mes requêtes...c'est pourtant indispensable

ViPHP
ViPHP | 5462 Messages

12 févr. 2010, 15:57

merci stealth35 pour ton aide

j'ai pas encore le réflexe d'afficher mes requêtes...c'est pourtant indispensable

oui,
tu pourrais faire ca
mysql_query($requete) ||  exit(mysql_error() . '<br />' . $requete);
ps : met ton post "résolus" petit croix vert sur le message qui a résolus ton probleme :wink: