2010-01-22 3 views
1

Quelqu'un peut-il me montrer comment faire une déclaration If où si un menu déroulant ne correspond pas à la valeur par défaut de 0 (dans mon cas) pour soumettre automatiquement le formulaire si possible?PHP déroulant la question de codage

session_start(); 
$current = isset($_SESSION['ClientNamefour']) ? $_SESSION['ClientNamefour'] : 0; 
while ($row = mysql_fetch_array($result)) { 
    $id = $row["Client_Code"]; 
    $thing = $row["Client_Full_Name"]; 
    $value = "$id, $thing"; 

    $sel=($id==$current)?'SELECTED':''; 

    $options4.="<OPTION $sel VALUE=\"$value\">$thing</option>"; 
} 
?> 
<FORM name="form" action="<?php echo $_SERVER['PHP_SELF']; ?>" method="POST"> 

<SELECT NAME="ClientNamefour" OnChange="this.form.submit()" 
)"> 
    <OPTION VALUE=0>Client 
    <?php echo $options4?> 
</SELECT> 
</FORM> 
+0

Y at-il plus à votre formulaire que cette option? – Matt

Répondre

2

Utilisez le onchange événement et du JavaScript. En général votre code HTML généré doit ressembler à ceci:

<form id="form" name="form" method="POST" action="http://example/script.php"> 
    <select id="select" name="select" onChange="document.getElementById('form').submit();"> 
    <option value="0" selected="selected">0</option> 
    <option value="1">1</option> 
    <option value="2">2</option> 
    </select> 
</form> 

L'événement onchange n'est déclenché lorsque vous sélectionnez une option non sélectionnée, donc pas de contrôles supplémentaires sont nécessaires.

Par rapport à votre solution:

  • le id manque dans votre balise <form>
  • vous devez fermer les balises </option>
  • vous auriez probablement besoin de changer le code JavaScript dans l'attribut onchange du <select> tag
+2

La seule chose que je suggérerais de faire est de mettre onChange pour appeler une fonction, puis d'avoir la fonction vérifier la valeur de la boîte de sélection, juste pour s'assurer que ce n'est pas 0. ex. onChange = "selectionChanged();" function selectionChanged() { if (document.getElementById ('select'). Valeur! = "0") { document.getElementById ('form'). Submit(); }} Vous pouvez aussi le faire en ligne, mais il est moins jolie: onChange = "if (! This.value =" 0 "). {Document.getElementById ('form') submit();}" – AlishahNovin

+1

L'OP a déclaré qu'elle ne devrait pas correspondre * à la valeur par défaut *, c'est-à-dire à la valeur sélectionnée. onchange fait exactement cela. – Veger

0

C'est vraiment une sorte de question javascript ... ajouter un attribut id à votre formulaire comme <form id="myfrm"...>, puis après la </form> put:

<?php 
if(((int) $_SESSION["your_session_variable"]) != 0){ 
?> 

<SCRIPT language="javascript"> 
    document.getElmenetById("myfrm").submit(); 
</SCRIPT> 

<?ph } ?> 
+0

J'ai d'abord pensé que l'OP pouvait aussi utiliser JS, mais je pense que le problème est de savoir comment il gère le résultat SQL, plutôt que de savoir comment le formulaire est envoyé. (Soit il veut faire quelque chose avec le résultat s'il n'est pas égal à 0, soit il veut un formulaire à afficher). Peut-être que je lis mal? – Matt

+0

@Matt, je suppose que mon point était que le plus que vous pouvez faire sur le côté serveur est de générer du javascript via PHP. La question devrait vraiment mieux décrire quelle est la séquence d'événements désirée. – vicatcu

+0

Ce que j'essaie de résoudre, c'est d'obtenir une variable de session après avoir envoyé le formulaire ci-dessus. Ce que je veux faire, c'est si cette variable de session n'est pas égale à 0, je veux faire ce formulaire soumettre automatiquement. – Eric

1

Ma compréhension est que vous ne pouvez pas reproduire quelqu'un pousser un bouton "soumettre" en utilisant un langage côté serveur tel que PHP. Vous pouvez utiliser javascript pour soumettre le formulaire si l'utilisateur le change (à autre chose que 0)

Cependant, il semble que vous voulez seulement que le formulaire affiche si la requête SQL renvoie un résultat qui n'est pas 0?

Dans ce cas, je ferais quelque chose comme ça ...

  1. exécuter votre requête SQL

  2. code quelque chose comme ceci:

    if($option != 0){ 
        //Function to do whatever happens after the form is sent (add to a database etc) 
    } 
    else{ 
        //display the form 
    } 
    
+0

Vous avez raison, il n'y a pas de méthode pour simuler un POST.Eh bien, sauf si vous générez une requête cURL séparée, mais ce serait de la folie pour cela. –

+0

Les formulaires de soumission arrivent dans le navigateur, où il est parfaitement possible de soumettre des requêtes POST. Et lorsque vous regardez le code, un menu déroulant est créé pour sélectionner l'un des utilisateurs/clients disponibles pour le service Web. – Veger

+0

Oui, il pourrait utiliser javascript etc (Vous ne pouvez pas faire PHP soumettre un formulaire cependant?), Mais il semble qu'il veut seulement le formulaire à afficher si la requête SQL est égale à 0? Si le résultat SQL est supérieur à 0, alors il veut faire autre chose avec. Pourquoi ne pas afficher/charger le formulaire si cela n'est pas nécessaire? – Matt