par
Maskime » 27 mai 2011, 14:28
Hello,
Tu peux faire un truc comme ça :
<?php
if(isset($_POST['eval']) && !empty($_POST['eval']) && is_array($_POST['eval'])){
$eval = $_POST['eval'];
$evalQuery = array();
$elementsInError = array();
$templateQuery = "UPDATE l_met_scomp SET precedent=##VALEUR## WHERE id=##ELEMENT##";
$toReplace = array("##VALEUR##", "##ELEMENT##");
$hasError = false;
foreach($eval as $element => $valeur){
if(strlen($valeur) > 0 && trim($valeur) != ''){
$replacements = array($valeur, $element);
$sQuery = str_replace($toReplace, $replacements, $templateQuery);
$evalQuery[] = $sQuery;
}else{
$elementsInError[] = $element;
$hasError = true;
}
}
if(!$hasError){
foreach($evalQuery as $query){
$bdd->exec($query);
}
header("Location: niveau_fct.php");
}else{
$elementList = implode(", ", $elementsInError);
echo "Les éléments suivant n'ont pas été complétés : " . $elementList . "<br />";
echo '<a href="' . $_SERVER['HTTP_REFERER'] . '">Cliquez ici pour revenir sur la page précédente</a>';
}
}
?>
Maintenant en faisant comme ça, l'utilisateur qui clique sur le lien "Cliquez ici pour revenir sur la page précédente", retournera bien sur la page précédente, mais le formulaire n'aura pas les valeurs qu'il aura renseigné avant...
Egalement à noter que ce script est sensible à l'injection SQL et que l'utilisateur doit abligatoirement avoir saisi un chiffre, s'il saisi une chaîne de caractères ça plantera...
Hello,
Tu peux faire un truc comme ça :
[php]
<?php
if(isset($_POST['eval']) && !empty($_POST['eval']) && is_array($_POST['eval'])){
$eval = $_POST['eval'];
$evalQuery = array();
$elementsInError = array();
$templateQuery = "UPDATE l_met_scomp SET precedent=##VALEUR## WHERE id=##ELEMENT##";
$toReplace = array("##VALEUR##", "##ELEMENT##");
$hasError = false;
foreach($eval as $element => $valeur){
if(strlen($valeur) > 0 && trim($valeur) != ''){
$replacements = array($valeur, $element);
$sQuery = str_replace($toReplace, $replacements, $templateQuery);
$evalQuery[] = $sQuery;
}else{
$elementsInError[] = $element;
$hasError = true;
}
}
if(!$hasError){
foreach($evalQuery as $query){
$bdd->exec($query);
}
header("Location: niveau_fct.php");
}else{
$elementList = implode(", ", $elementsInError);
echo "Les éléments suivant n'ont pas été complétés : " . $elementList . "<br />";
echo '<a href="' . $_SERVER['HTTP_REFERER'] . '">Cliquez ici pour revenir sur la page précédente</a>';
}
}
?>
[/php]
Maintenant en faisant comme ça, l'utilisateur qui clique sur le lien "Cliquez ici pour revenir sur la page précédente", retournera bien sur la page précédente, mais le formulaire n'aura pas les valeurs qu'il aura renseigné avant...
Egalement à noter que ce script est sensible à l'injection SQL et que l'utilisateur doit abligatoirement avoir saisi un chiffre, s'il saisi une chaîne de caractères ça plantera...