8795 sujets

Développement web côté serveur, CMS

Bonjour,

J'aimerais savoir s'il existe une sorte d'équivalent à ce que serait un onSubmit en javascript en PHP.

Je m'explique, j'ai un formulaire html et un bouton submit qui exécute un script, seulement j'aimerais qu'il vérifie une condition avant d'exécuter ce script justement.

Je vous donne mon code (qui ne marche pas puisque la fonction est une fonction PHP) mais c'est pour que vous compreniez l'idée... Je comprends bien pourquoi cela ne marche pas, mais si quelqu'un pouvait m'expliquer la méthode à suivre pour arriver à vérifier une condition avant d'exécuter un script.


function VerifStock() {
    
    // Nouvelle requete pour vérifier l'état des stocks de la BDD à l'instant t
    $erreur = "";
    $sql = "SELECT * FROM produits";
    $r = mysql_query($sql);
    $stock_verifie = array();
        while ($enr = mysql_fetch_assoc($r)) {
            $stock_verifie[] = $enr;
        }
    
    // Comparer panier et stock_verifie
    while(list($key, $val) = each($_SESSION['panier']))
    {
        if ($_SESSION['panier'][$key]['quantite'] > $stock_verifie['quantite'][$key])
        {
            $erreur = "Desoles, certains produits ne sont plus disponibles en quantite voulue.";
        } 
        
        if ($erreur !="") {
            echo '<script language="javascript">alert('.$erreur.')</script>';
            return false;
        } 
        else {
            return true;
        }
     } 



Et le formulaire :

echo '<form action="exe-pdf.php" method="POST" onSubmit="return VerifStock();">'; 
echo '<input type="image" src="images/btn_generate1.png" value="">';
echo '</form>'; 
Erg, n'y a t'il pas d'autres solutions que passer par de l'AJAX ? Comme une méthode totalement différente de celle que j'ai voulue utilisée par exemple ?
Comme tu as écrit :
bidoum a écrit :
j'aimerais qu'il vérifie une condition avant d'exécuter ce script justement.
ça n'est pas possible en PHP simple puisque dans ce cas il faudra d'abord soumettre le formulaire. Comme tu as également besoin d'effectuer une requête SQL je ne vois qu'ajax qui combine JavaScript ET PHP. Smiley hmm


Edit: un compromis serait de récupérer les stocks avant l'affichage de cette page et d'alimenter un array JavaScript à l'aide de PHP. Par contre ce ne serait plus vraiment du temps réel.
Modifié par Heyoan (03 Jun 2009 - 18:28)
Bonjour,

moi je dirait que oui, mais la validation se fera après envoi du formulaire, tu n'a qu'a vérifier tes variables et si tout est bon tu procède au traitement de la requête :

<? if (isset($_POST['submit']))
{
	$ok=true;
	
	// ici on verifi que le champ cmd a été rempli par exemple
	if (str_replace(' ','',$_POST['cmd'])=='') 
		{
			$ok=false;
			$msg="Vous devez remplir le numéro  de la commande"; 
		}
if($ok)
	{
		// Traitement a faire pour la commande
                 $msg="ça marche";
        }
 echo $msg;
}
?>
<form action=""  method="post">
<!-- suite -->
  <input id="submit" value="Confirmer" name="submit" type="submit">
</form>

et laissez le champs action de la forme vide pour qu'il l'envoi des variable post soit destiner a la page elle même comme ça vous évitez d'avoir deux fichiers pour chaque formulaire.
pixeltn a écrit :
et laissez le champs action de la forme vide
Ah non : pas d'accord. Les specs précisent :
a écrit :
L'élément FORM

action : %URI; #REQUIRED

Définition des attributs :
action = uri [CT]
Cet attribut spécifie l'agent pour le traitement du formulaire. Le comportement de l'agent utilisateur pour une valeur autre qu'un URI HTTP est indéfini.
Voir d'ailleurs ce sujet qui parle d'une mauvaise surprise dans Safari. Smiley cligne
Modifié par Heyoan (12 Jun 2009 - 03:00)