2009-04-26 13 views
0

J'ai donc une forme que je poste à une page et sous la forme que je poste certaines variables que je construis un de mes requêtes avec et puis faire appel à ma page. Comment puis-je publier des données, créer une requête et afficher la réponse en un seul appel?PHP Interrogation d'un formulaire

Peut-être que je ne suis pas libellé ce droit et j'apprends ce genre de choses, mais je ne sais pas. Dois-je poster sur une page intermédiaire en premier?

Exemple: forme (variables A & B) to-> page (A & B utilisé dans la requête) et le résultat est sur cette même page.

peut-il être fait et quelle est la méthode?

Merci!

+0

Pour clarifier: sur une page, vous souhaitez afficher les données soumises via un formulaire et affiche également les résultats d'une requête SQL qui a utilisé les données fournies? – hbw

+0

vous n'avez même pas besoin de deux pages pour cela, si vous ne voulez pas. – markus

Répondre

0

Sans exemples spécifiques, il est difficile de l'écrire, mais c'est assez simple.

D'une manière très simple:

file1.php:

--your form submits to file2.php-- 

file2.php:

function processForm(inputs) [ 
    --MySql query goes here-- 
] 

function displayResults() [ 
    --Process your query results-- 
] 

processForm($_POST['vars']...); 
displayResults(); 

Est-ce que sens? Créez simplement une fonction qui traite et affiche à nouveau les résultats.

Si vous voulez vraiment de fantaisie, vous pouvez même le faire tout dans un seul fichier, mais vous devriez probablement maîtriser cette technique d'abord si vous êtes le premier apprentissage.

1

C'est le priniciple de base, mais vous devez vous désinfectez les données d'entrée de la forme. Par exemple en utilisant mysql_real_escape_string().

Mais dans une seule page, vous pouvez avoir du code comme celui-ci (il n'est pas testé, je ne suis pas en mesure de sur cet ordinateur):

<?php 

if(isset($_POST['name'])) 
{ 
    $query = "SELECT * FROM table WHERE firstname = '"+ mysql_real_escape_string($_POST['name']) +"'"; 
    while($node = mysql_fetch_rows()) 
    { 
     echo "The result: " . $node['id']; 
    } 
} 

?> 

<form method="post" action="<?php echo $_SERVER['PHP_SELF']; ?>"> 
    <input type="text" name="name" /> 
</form> 

Cela poster à elle-même, exécuter la requête et renvoyer le résultat et afficher à nouveau le formulaire.

Pour les petits outils, etc., ceci est une approche ok, mais pour les sites plus grands, je recommande de ne pas mélanger le code de traitement des demandes avec le code HTML. Regardez dans l'utilisation d'un cadre pour appliquer le modèle mvc ou quelque chose comme ça.

+0

a) utilisez mysql_real_escape_string() dans votre réponse. b) il ne fonctionnera pas avec le + pour la concaténation. vous aurez besoin de points. sinon bon exemple pour faire tout cela sur une seule page! – markus

+0

Votre droit ... Cela fait un moment que j'ai utilisé PHP. J'ai édité pour refléter vos commentaires. – asgerhallas

+0

Deux autres choses de type nitpicky: mysql_fetch_row() ne renvoie pas un tableau associatif, mysql_fetch_assoc() ou mysql_fetch_array() le feront. En outre, ces fonctions prennent toutes une ressource MySQL comme argument. Mais sinon, bonne réponse. – hbw