2009-09-22 3 views
0

Si nécessaire, je vais placer le code que je voulais juste savoir quel code ai-je besoin et où dois-je le placer pour arrêter un formulaire qui a des champs vides d'être entré dans la base de données.Comment empêcher un formulaire PHP d'ajouter des informations vides à la base de données MYSQL lors de l'actualisation de la page?

Un extrait de code serait apprécié. Cette question peut être trop vague faites le moi savoir. J'utilise PHP et mysql.

+2

L'accord sur ce site est que Si vous obtenez une réponse qui vous aide à résoudre votre problème, cliquez ** cette grande coche ** à côté de la réponse qui a le mieux résolu votre problème. – random

Répondre

3
if(isset($_POST['formfield'])) { 
    //add to db 
} 
else { 
    //don't add to db 
} 

http://www.php.net/isset

+1

commentaire slashes en arrière bro. – Evernoob

+2

Que faites-vous?: P –

1

Vérifiez si le formulaire soumis est valide, si elle est pas, ne l'insérez pas dans la base de données.

3

Vous devez vérifier le contenu du formulaire avant de l'insérer dans la base de données.

Il est également important de vérifier si le contenu est vide. La variable peut exister mais le contenu peut être vide. C'est quelque chose que vous ne voulez pas, à moins que le champ ne soit facultatif.

Quelque chose comme ceci:

<?php 
    if (isset ($_POST['field']) && strlen($_POST['field'] >0)) 
    { 
     insert_to_database(); 
    } 
?> 
1

vous devriez faire quelques champs obligatoires. Par exemple, le formulaire a un champ obligatoire: nom du cours, vous devez connaître le nom des personnes qui vous contactent .. nom doit donc être un champ obligatoire. dans le fichier d'action dont vous avez besoin de mettre si la condition qui résoudra ce problème:

if(isset($_POST['name'])){ 
//script that adds the variables to the database 
}else{ echo 'the required field : name. was not filled, please try again. Thank you'; } 
// it can work without else but you could output something if the required field is not filled in 

aussi vous pouvez faire e-mail un champ obligatoire et trouver un script php qui valide l'e-mail afin que il s` De toute façon, espérons que cela pourrait vous aider

1

En plus de vérifier si les champs sont vides comme d'autres l'ont suggéré, vous pouvez éviter complètement les requêtes en cours d'exécution sur une actualisation de page. Pour ce faire, j'utilise des scripts "intermédiaires" qui effectuent le traitement et quand ils se terminent ils redirigent l'utilisateur vers la dernière page qui affiche tout ce qui est nécessaire: rafraîchir la dernière page ne fait rien sur la base de données dans un autre script que vous n'atteindrez pas, à moins que vous ne soumettiez manuellement le formulaire.

+0

Ce que vous décrivez est le modèle Post/Redirect/Get, c'est en effet une bonne idée de suivre cela, voir http://en.wikipedia.org/wiki/Post/Redirect/Get – Wim

0

Pour empêcher l'actualisation de la page, un cookie sera utile; Pour vérifier les champs vides, isset()

<?php 
//in the top of the page, BEFORE every output! 
if(isset($_COOKIE['givemeaname'])){ 
    setcookie('givemeaname', 'some foo&bar data, maybe a timestamp?', time()+3600); 
    //now check the mandatory fields and 
    //do whatever you want with your db 
}else{ 
    //do nothing, the page is been refreshed! 
} 
//do whatever you have to do now! 
?> 

Si vous n'aimez pas déplacer votre code db-about dans le haut de la page, dans le cookie vérifier que vous pouvez valoriser un var booléen, et puis juste chet il ... Choisissez votre chemin.

Au lieu du cookie, vous pouvez utiliser une session, si plus de commodité pour vous .. mais le comportement doit être clair;)

Cette solution vous permettra d'économiser tous les temps, becose même si vous frappez la page avec un formulaire POST, certains navigateur demandent de renvoyer l'information à nouveau lorsque vous êtes invité à actualiser la page (et les utilisateurs paresseux cliquent généralement 'oui' sans lire ou comprendre ce que cela signifie;)

Questions connexes