Aller au contenu

Problème pour injecter des données dans une base via un formulaire.


Sujets conseillés

Posté (modifié)

Bonjour tout le monde,

J'ai un probleme avec un formulaire.

J'ai créé une page qui permet de récuperer des valeurs dans une base mysql pour les injecter dans les cases d'un formulaire.

Donc jusque là, c'est impecable, tout fonctionne.

Mais le problème intervient lorsque je souhaite valider les nouvelles informations.

J'ai beau remplir la case 'titre' mais à chaque fois ca m'affiche l'erreur ==> la case doit etre rempli.

Voyez vous une erreur flagrante ?

Code:

if ($_REQUEST['enregistre'] =='oui')
{
if (empty($_POST['titre']))
die("Erreur : Tous les champs doivent être remplis.");

$sql = "UPDATE concours SET ........

mysql_query ($sql);
echo ("Changement effectué");

}


<form action="edit_concours.php" method="POST" >
<input type ="hidden" name="enregistre" value="oui" />
<input type="hidden" name="edit_concours" value="<?php echo $_POST['edit_concours']; ?>" />
<input name="titre" type="text" id="titre" value="<?php echo $concours->titre; ?>">
<input type="submit" name="Submit" value="Modifier le concours">
</form>

Merci beaucoup parce que j'ai essayé de chercher jusqu'a 5h du mat et la je viens de me reveiller et j'arrive toujours pas.

Encore merci.

-----------------------------------------------------------------------------------------------------------------------------------------------------

Ha apparemment ca l'air de passer puisque ca m'affiche le message "changement effectué".

Mais malheureusement les données reste inchangé dans la base, ca doit etre une erreur au niveau de la requete sql.

Code:

$sql = "UPDATE concours SET titre='".$_POST['titre']."' "." WHERE id = '".$_REQUEST['edit_concours']."'";

mysql_query ($sql);
echo ("Changement effectué");

Merci beaucoup !

Modifié par goldrazor06
Posté (modifié)

Si tu ne met pas d'acolades à ta condition...

if (empty($_POST['titre'])) {
die("Erreur : Tous les champs doivent être remplis.");
} else
$sql = "UPDATE concours SET ........

mysql_query ($sql);
echo ("Changement effectué");

Modifié par Him
Posté (modifié)

Salut,

m

merci pour ta rapidité mais malheureusement ta technique injecte automatiquement des données vides dans la table sans que je puisse avoir recours au formulaire.

C'est a dire que ya directement le message "changement effectué" qui s'affiche.

Si tu penses avoir une idée n'hesite pas,

merci

Modifié par goldrazor06
Posté

Voici plus de precision sur mon code :

<?php

bla bla

if ($_REQUEST['enregistre'] =='oui'){

if (empty($_POST['titre'])) die("Erreur : Tous les titre doivent être remplis.");
if (empty($_POST['titre_page'])) die("Erreur : Tous les titre_page doivent être remplis.");

$sql = "UPDATE concours SET titre='".$_POST['titre']."', "."titre_page='".$_POST['titre_page']."' "." WHERE id = '".$_REQUEST['edit_concours']."'";

mysql_query ($sql);
echo ("Changement effectué");
?>

<form action="edit_concours.php" method="POST" >
<input type ="hidden" name="enregistre" value="oui" />
<input type="hidden" name="edit_concours" value="<?php echo $_POST['edit_concours']; ?>" />
<input name="titre" type="text" id="titre" value="<?php echo $concours->titre; ?>">
<input name="titre-page" type="text" id="titre_page" value="<?php echo $concours->titre_page; ?>">
<input type="submit" name="Submit" value="valider">
</form>

Le probleme intervient lorsque je clique sur "valider", ca me change aucune info dans ma base.

Pitiez aidez moi LOL

Merci !

Posté (modifié)

Bonsoir,

Pour trouver ton probleme, dans un premier temps, tu peux :

- Afficher le contenu de $sql

- Afficher le contenu de $_POST['edit_concours']

- Afficher le contenu de $concours->titre;

Afin de t'assurer qu'ils contiennent bien ce que tu veux :)

Si c'est OK alors tu peux modifier ta ligne :

mysql_query ($sql);

en (par exemple) :

$req = mysql_query($sql) or die('Erreur SQL !
'.$sql.'
'.mysql_error());

Cela te permettra d'afficher une éventuelle erreur SQL.

Bon courage ;)

Modifié par KaRaK
Posté (modifié)

Ça marche !!!!!!

Alleluia !!! Je vous aime tous !!!!!!

Merci beaucoup Karak et Him pour vos conseils !!!!!!!!!!!!!!!!!!!!!!!!!

Bonne continuation !

Modifié par Dudu
Pas la peine de HURLER, non plus ;-)
Posté

pour parer l'insertion de champs vide,

bases toi plus tot sur un !empty ;)

Posté (modifié)

Bonjour,

Personnellement pour eviter ce genre de problemes, je fais des requetes directement sur la base de données ou avec l'aide d'une interface style phpmyadmin. Comme ca je vois exactement la tete de la requete, je copie colle et je place mes variables dedans... ca marche tres bien jusque la et ca evite de faire des tests de partout dans les scripts pour voir

Le probleme etant que parfois les interfaces rajoutent des parametres automatiquement aux requetes... mais a la fin on s'habitue ^^

Modifié par Nanane
Posté

Par contre, ce qui est dommage, c'est que lors d'une erreur (champ non rempli), tu effectues un die(), qui empêche de recommencer, à moins de revenir en arrière via le navigateur.

Pourquoi ne pas enregistrer l'erreur, ne pas traiter l'envoi, et réafficher le formulaire contenant déjà les infos entrées, ainsi que le message d'erreur ? Ca simplifierait de beaucoup la tâche de tes internautes.

Veuillez vous connecter pour commenter

Vous pourrez laisser un commentaire après vous êtes connecté.



Connectez-vous maintenant
×
×
  • Créer...