j ai une page qui s'auto appel apres un post, ce qui fonctionne sans probleme.
Toutefois lorsque je fais refresh sur cette page , le formulaire est reexpedié .
j ai tenté de modifier la variable $_Post['nom'] en lui affectant une autre valeur en vain.le formulaire reexpédié me redonne les valeurs d origine.
le detail est dans la fonction ci dessous, il y a creation d un enregistrement vierge lorsque la ligne vierge est modifiée lors de l edition . le fait que le refresh me redonne le Contenu du precedent Post
a chaque refresh une nouvelle ligne est créée , ce qui n'est pas souhaitable.
d'avance Merci de vos idées, et aides .
-------------------------------------------------------
function savemodif() // aprés modification du formulaire et appuie sur "Enregistrer"
// $POST contient les anciennes valeurs dans le nom du champ sous la forme idchar.ancienne valeur,
// et la nouvelle valeur dans le contenu du champ
// cas particulier de l ajout : la valeur du champ nom etait vide au debut,
// apres enregistrement il faut recreer un enregistrement vide pour l ajout suivant dans la BdD
{ global $table, $colonnes; // colonnes contient le nombre de champs dans la table
// pour chaque champ post
$compteur=0; // inutile
$messenr=FALSE; // message d 'enregistrement affiché si true
$nouveauinsert=FALSE; // TRUE si creation nouvel enregistrement pour insertion dans BdD
if(count($_POST))
{ // pour chaque variable dans le post sauf le bouton submit
while( list($key, $val) = each($_POST) )
{
if ($key!="Enregistrer" && $key!="edition")
{
$newvaleur=$val; // recup nouvelle valeur contenue dans le champ en cours
$posslash= strrpos($key,"/") ;
$posunderbar= strrpos ( $key, "_" ) ;
$id= substr($key,0, $posslash) ; // recup id
$nomchamp= substr($key, $posslash+1, $posunderbar-$posslash-1); // recup nom champ
// recup valeur
$long=strlen($key);
$oldvaleur= substr($key, $posunderbar+1,strlen($key)); //recup ancienne valeur du champ
if ($oldvaleur===FALSE) { $oldvaleur='' ; } // recup erreur substr
$changement= ($newvaleur != $oldvaleur ) ;
$longold=strlen($oldvaleur);
if ( ($long==$posunderbar+1) && !$nouveauinsert && $changement && ($longold==0)) // le contenu du champ est vide,
{ // et le nouvel enregistrement n'est pas crée ( $nouveauinsert)
$oldvaleur=""; // par defaut
// ca marche pas :--->>> $_POST[$key]="refresh"; // pour eviter rajout de ligne supplementaire si refresh et donc repost
// lors du refresh le $_POST reprend ca valeur d origine
//creer un nouvel enregistrement vide
$sql="INSERT INTO ".$table." VALUES('','',''";
for ($k=3;$k<$colonnes;$k++)
{
$sql=$sql.",''";
}
$sql=$sql.")";
$req3=MYSQL_QUERY($sql);
if (!$req3) {
$message = 'Requête update ".$table." invalide : ' . mysql_error() . "<br>";
$message .= 'Requête complète 2: ' . $sql;
die($message);
}
$nouveauinsert = TRUE;
}
if ($newvaleur!=$oldvaleur) // si edition, modification
{
if($oldvaleur!=""&& $nomchamp=="Pseudo") // test si nouveau pseudo à ajouter
{ // creer un nouvel enregistrement vide
$test=2; // breakpoint pour test ??? ce if est unitile ?? faire test
}
// enregistrer la modification dans la table
if ($changement && !$messenr) {
print("Modifications enregistrées");
$messenr=TRUE; // pour ne pas affiché le message ci dessus plusieurs fois
}
$sql=("UPDATE ".$table." SET $nomchamp='$newvaleur' where idname='$id'");
$req2=MYSQL_QUERY($sql);
if (!$req2) {
$message = 'Requête update '.$table.'invalide : ' . mysql_error() . "<br>";
$message .= 'Requête complète : ' . $sql;
die($message);
}
}
$compteur++;
}
}
}
} // savemodif()