Update impossible vers DB

Eléphant du PHP | 52 Messages

24 mars 2008, 20:04

Bonjour,

Dans la partie d'administration de mon site, je peux modifier/éditer les profils. J'ai donc un formulaire qui s'affiche avec les informations de chaques utilisateurs dans des champs d'édition. Je modifie au besoin les champs remplis par les membres puis je clique sur "Update". Mais, voilà, rien ne se met à jour dans la base de données.
J'ai fait un essai sur un serveur php4 et mysql 4, ca fonctionne sans problème.

Mon serveur actuel: PHP 5 / MYSQL 5

Je ne sais pas trop ou chercher étant donné que mes compétences dans le domaines sont plus que limitées. Je vous propose toutefois un morceau de code en espérant qu'une incompatibilité avec php 5 ou mysql 5 soit flagrante.
if (getParam("submit",""))
{
	// Update all fields affected

	$sql = "update users set ";
	foreach ($_REQUEST as $key => $value) {
		if ($key<>"submit" AND $key<>"PHPSESSID" AND $key<>"profile" AND $key<>"phpbb2mysql_data"
		) 
			$sql.= "$key='" . $value . "',";
		
	}
	$sql=substr($sql,0,-1);
	$sql.=" where username='".$_REQUEST["profile"]."'";
	$res_ret=query($sql);
	echo "<b>Fields updated</b><br>More than " . mysql_affected_rows() . " columns was changed from before.";
}

if (getParam("show",""))
{
	echo "<form method='post' action='edit_user.php'>";
	echo "<input type='submit' name='submit' value='Update'>";
	echo "<input type='hidden' name='profile' value='".$_REQUEST["profile"]."'>";
	echo "<table width='95%'>";
	$result = query("SHOW COLUMNS FROM users");
	if (!$result) {
	   echo 'Could not run query: ' . mysql_error();
	   exit;
	}
	if (mysql_num_rows($result) > 0) {
	   while ($row_col = mysql_fetch_assoc($result)) {
	       //print_r($row_col);
	       $fieldname=$row_col[Field];
	       
	  echo "<tr><td>$fieldname</td><td> <input type='text' name='$fieldname' value='".$row["$fieldname"]."'";
	  if ($fieldname=="username" || $fieldname=="password" || $fieldname=="show")
	  	echo " disabled=disabled";
	  echo "></td></tr>";
	       
	   }
	}
	echo "</table>";
	echo "<input type='submit' name='submit' value='Update'>";
	echo "</form>";
}
Vous avez une idée ?

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 13231 Messages

24 mars 2008, 20:09

Quel est le code de la fonction GetParam() ?

Sinon, il vaut mieux utiliser $_GET ou $_POST à $_REQUEST.
Connaître son ignorance est la meilleure part de la connaissance
Pour un code lisible : n'hésitez pas à sauter des lignes et indenter

twitter - site perso - Github - Zend Certified Engineer

Eléphant du PHP | 52 Messages

24 mars 2008, 20:20

J'ai trouvé ça pour la fonction:
function getParam($aVarName,$aVarAlt)
{
	if (!Empty($_REQUEST[$aVarName]))
		return strip_tags($_REQUEST[$aVarName],"<b><br><p><table><tr><td><hr><span>");
	else 
		return $aVarAlt;
}
Modifié en dernier par nelumbo le 25 mars 2008, 19:04, modifié 1 fois.

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 13231 Messages

24 mars 2008, 20:48

Essaye de remplacer tout les $_REQUEST par des $_GET ou $_POST, selon tes paramètres ;)

Si le paramètres register_global de ton php.ini est à off (ce qui est le cas par défaut pour PHP 5.*), ce tableau n'est pas rempli
Connaître son ignorance est la meilleure part de la connaissance
Pour un code lisible : n'hésitez pas à sauter des lignes et indenter

twitter - site perso - Github - Zend Certified Engineer

Eléphant du PHP | 52 Messages

24 mars 2008, 21:39

J'ai choisi $_POST dans if (getParam("submit","")) ...

Les modifications sont prisent en compte. Register_globals est sur off .

Mille merci :D :D :D

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 13231 Messages

24 mars 2008, 22:06

Modération :
nelumbo, si ta question est résolue, pense à ajouter le tag [Résolu]
pour indiquer aux personnes qui voudront consulter ce sujet qu'il contient une solution.
Tu peux réaliser cette opération en cliquant sur le bouton Image en haut à gauche de ce sujet.
Connaître son ignorance est la meilleure part de la connaissance
Pour un code lisible : n'hésitez pas à sauter des lignes et indenter

twitter - site perso - Github - Zend Certified Engineer

Eléphant du PHP | 52 Messages

25 mars 2008, 13:30

je prends note :wink:

@ bientôt