2011-01-28 1 views
-2

Dites que j'ai créé un formulaire d'inscription. Maintenant, pour ajouter des enregistrements dans une base de données, nous envoyons les données à un autre fichier php par la méthode POST, où nous effectuons quelques validations et ajoutons un enregistrement. Est-il possible de le faire dans le même fichier sans envoyer et obtenir les données par POST/GET? Si non, alors pourquoi?Puis-je soumettre un formulaire et ajouter un enregistrement à DB par php seulement dans le même fichier sans utiliser les méthodes Get/Post?

EDIT: Même envoyer au même fichier php est ENVOYANT et perdant la ressource. Je pose cette question parce que je veux éviter la perte de temps sur l'envoi par GET/POST et obtenir par le même Get/POST. Et si ce n'est pas possible, je veux comprendre pourquoi PHP ne le permet pas.

+0

J'aimerais pouvoir savoir pourquoi un vote négatif est fait. – Narek

+1

je vais deviner que vous êtes downvoted parce que la question est "stupide". Une application Web dans n'importe quelle langue est une application de serveur client. Finalement, vous devez envoyer/recevoir des données vers/depuis le serveur à quelque fin que ce soit. Son jsut comment ça marche, période. Je ne suis pas d'accord avec les votes négatifs parce que c'est une question valide (à moins que nous ne commencions à être des snobs de connaissances ...) pour un débutant, mais vos points semblent suggérer que c'est quelque chose que vous sauriez maintenant ... cela semble inévitable :-) – prodigitalson

Répondre

3

Non Vous devez toujours envoyer des données du client au serveur, il n'y a pas moyen de contourner cela.

Si vous ne voulez pas recharger la page entière de l'utilisateur, vous pouvez soumettre les données via AJAX au fichier php chargé de le traiter et d'ajouter les données. De cette façon, l'utilisateur ne quitte jamais la page.

+0

Ce n'est pas php .... c'est pareil dans n'importe quel serveur/application client, bien que vous utilisiez un flux tcp brut ou quelque chose au lieu d'un post http ou autre ... Mais vous envoyez toujours des données entre les deux parce qu'ils ont besoin de communiquer pour une raison quelconque. – prodigitalson

0

C'est possible. Par exemple:

<?php 
if(true === isset($_POST['submit']) // check if submit-button was clicked 
{ 
    // do some validation here... 

    // If validation successes add record into db here... 
} 
else // no post data sent so output the form 
{ 
    // output the form here... 
} 
0

Oui, c'est facile. La forme peut poster à son propre soi. Cela est plus facile à faire en ne spécifiant même pas la valeur de l'action dans la balise de formulaire.

<form method='POST'> 

Puis en haut de la page avant que le contenu est mis sur la page, comprennent une instruction if pour vérifier si le formulaire a été soumis.

if (isset ($_POST['post'])) { // 'post' is the name of the submit button 
    $error = false; 
    // Do validation 

De là, faites la validation et agissez en fonction du résultat.
Si vous avez beaucoup de validation à faire, peut-être le mettre dans un autre fichier et l'inclure.

include "formValidation.php"; 

Si tout va bien et tous les tests sont passés l'utilisation

if ($error === false) { 
     Header ("Location: confirmation.php"); 
     exit; 
    } 
} 

Si les tests échouent, restez sur la page en gardant toutes les données de poste, et affiche une erreur.

if (isset ($error) && !empty ($error)) { 
    echo "<div class='error'>$error</div>"; 
} 
0

Oui, il est possible ensemble

action = "même page"

dans la balise de formulaire. vous pouvez accéder à tous les attributs de formulaire sur la même page.

1

oui bien sûr.

juste dans votre forme « action » mettre

$_SERVER['PHP_SELF'] 

puis au début de votre chèque de page PHP si le $ _POST est réglé ou non

if(isset($_POST)) 
{ 
    // actions to be taken after form submission 
} 

ofcourse vous pouvez ajouter une entrée cachée tag pour affiner les contrôles pour le $ _POST. par exemple dans votre formulaire

<input type="hidden" name="formSubmit" value="yes" /> 

alors votre chèque doit être comme

if(isset($_POST['formSubmit'])) 
{ 
     // actions to be taken after form submission 
} 
Questions connexes