Hello,
J'ai un formulaire de recherche où l'utilisateur entre sa requête, qui appelle un formulaire qui donne les résultats de la requête tout en donnant la possibilité de modifier ces résultats(dans la même table donc). Tout ça est ok, mais là où ça coince, c'est quand je dois updater ces modifications: rien ne marche.
Un grand merci d'avance
Première étape: requête
Deuxième étape: résultats dans un tableau, obtenus par ceci (qui est OK)
$user="root";$host="localhost";$password="--";$database = "--";
$cxn = mysql_connect($host,$user,$password)or die ("couldn't connect to server");
mysql_select_db($database);
$req = "SELECT * FROM evaluateur WHERE 1=1";
/* test des $_POST
if(!empty($_POST['projet1']))
{if($_POST['projet1'] == '*')
$req .= " AND projet1 NOT LIKE '".$_POST['projet1']."' ";
else
$req .= " AND projet1 LIKE '".$_POST['projet1']."' ";
}
(.....)
/* affichage des résultats
$result = mysql_query($req)
or die ("Couldn't execute query.");
echo "<form action='modif.php' method='POST'>";
<td align='center' > Projet Principal</td>\n
while($row = mysql_fetch_assoc($result))
{
extract($row);
echo "<tr>
/ *le résultat affiché peut-être modifié
<td ><input type='text' name='$projet1' value='$projet1'> </td>
/*appel du fichier suivant, pour modifier le résultat affiché dans la base
echo "<tr> <input type='submit' value='Modifier l évaluateur'>
Troisième étape: appel de modif.php
/*création du tableau des variables postées sur la page précédente mais c'est surement faux
$labels = array( "{$_POST['prenom']}" => "Prénom",
"{$_POST['projet1']}" => "Projet Principal");
/* ceci n'affiche qu'une ligne !
print_r($_POST)
/* test des valeurs entrées
foreach($_POST as $field=> $value)
{ if($value == "" )
{ $blank_array[] = $field;
}
elseif ($field != "codeE" )
{if(!ereg("^[A-Za-z' -]{1,50}$",$value) )
{ $bad_format[] = $field;
}
}
elseif($field == "codeE" )
{if(!ereg("^[0-9)( -]{1,7}(([xX]|(ext)|(ex))?[ -]?[0-9]{1,7})?$",$value) )
{ $bad_format[] = $field;
}
}
}
/* si il manque des valeurs ou si elles sont erronées, on représente le formulaire
/*?mais uniquement pour un seul enregistrement !
if(@sizeof($blank_array) > 0 or @sizeof($bad_format) > 0)
{
$labels = array( "prenom" => "Prénom",
"projet1" => "Projet Principal");
if(@sizeof($blank_array) > 0)
{ echo "<b>Vous n'avez pas saisi un ou plusieurs champs. Veuillez saisir:</font><br>";
foreach($blank_array as $value)
{ echo " {$labels[$value]}<br>";
}
}
if(@sizeof($bad_format) > 0)
{ echo "<b>Un ou plusieurs champs sont incorrects.Veuillez corriger le format de saisir pour:</b><br>";
foreach($bad_format as $value)
{ echo " {$labels[$value]}<br>";
}
}
echo "<p ><hr />";
echo "<h3>Corrigez les coordonnées du nouvel enregistrement</h3>";
echo "<form action='modif.php' method='POST'>
<table >";
foreach($labels as $field => $label)
{
$good_data[$field]=strip_tags(trim($_POST[$field]));
echo "<tr>
<td > $label</td>
<td><input type='text' name='$field' size='21' maxlength='20' value='$good_data[$field]'></td>
</tr>";
}
echo "<tr>
<td > <input type='submit' value='modifer l évaluateur'>";
echo "</td></tr></table>
</form>";
exit();
}
else
/* sinon si c'est OK
{
$user="root";$host="localhost";$password="--";$database = "--";
$cxn = mysql_connect($host,$user,$password)
or die ("Connexion au serveur impossible, réessayez plus tard");
mysql_select_db($database);
$fields_all = array_keys($labels);
foreach($fields_all as $field)
{
$good_data[$field] = strip_tags(trim($_POST[$field]));
if($field == "codeE")
{
$good_data[$field] = ereg_replace("[)( .-]","",$good_data[$field]);
}
$good_data[$field] = mysql_real_escape_string($good_data[$field]);
}
$query = "UPDATE evaluateur SET prenom='$good_data[prenom]' WHERE id='$id'";
$result = mysql_query($query)
or die ("La requête ne peut être exécutée");
echo "<h4>enregistrement modifié<br></h4>";
}