Mysql, php, html FORMULAIRE

Babriehead Messages postés 63 Date d'inscription   Statut Membre Dernière intervention   -  
Babriehead Messages postés 63 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour, débutant en php et sql je test quelque petite chose et j'aimerais comprendre le problème de """""""(gros gros guillemet)mon"""""""""" code

Je voudrais, grace a un formulaire (html) récupérer les données insérer par l'utilisateur (php) dans une base de donnée sous mySql.

Mon problème est que le formulaire une fois valider renvoie sur la page qui traite le formulaire (donc page blanche), aucun message d'erreur sauf que dans mysql, dans ma table,//// SELECT * FROM `eleve`////// N'affiche rien, si quelqu'un pouvais me donner 1/2 conseils et m'aider a trouver le problème.

phpsqlform.php

<?php
global $host, $db,$id, $prenom ,$nom, $sexe, $dateNaiss, $adresse, $telP, $telF, $mail, $lycee, $permisE, $dispo; // Si c'est dans une fonction
$bdd = new PDO('mysql:localhost='.$host.'dbname='.$db);

$req = $bdd->prepare('INSERT INTO eleve(id, prenom, nom, sexe, dateNaiss, adresse, telP, telF, mail, lycee,permisE, dispo) VALUES(:id, :prenom, :nom, :sexe, :dateNaiss, :adresse, :telP, :telF, :mail, :lycee, :permisE, :dispo)');
$req->execute(array(
'id' => $id,
'prenom' => $prenom,
'nom' => $nom,
'sexe' => $sexe,
'dateNaiss' => $dateNaiss,
'adresse' => $adresse,
'telP' => $telP,
'telF' => $telF,
'mail' => $mail,
'lycee' => $lycee,
'permisE' => $permisE,
'dispo' => $dispo,
));
?>

Inscription.php

<html>
<body>
<form action="phpsqlform.php" method="post">
Numéro : <input type="text" name="id"><br>
Prénom : <input type="text" name="prenom"><br>
Nom : <input type="text" name="nom"><br>
Sexe : <input type="text" name="sexe"><br>
Date de naissance : <input type="date" name="dateNaiss"><br>
Adresse : <input type="text" name="adresse"><br>
Téléphonne Portable 1 : <input type="number" name="telP"><br>
Téléphonne Portable 2 : <input type="text" name="telF"><br>
Email : <input type="text" name="mail"><br>
Lycée (si vous êtes lycéen) : <input type="text" name="lycee"><br>
Permis voulus : <input type="checkbox" name="permisE" value ="AAC">Conduite accompagné<br>
<input type="checkbox" name="permisE" value ="supervise">Conduite supervisé<br>
Dispo : <input type="text" name="dispo"><br>

<input type="submit" name="bt" value="valider"><br>
</form>
</body>
</html>

Je suis débutant, merci beaucoup.
A voir également:

2 réponses

diablo13800 Messages postés 2890 Date d'inscription   Statut Membre Dernière intervention   1 860
 
Bonjour,

Il vous manque la récupération des données de votre formulaire.

Sachant que votre formulaire est en POST vous devez récupérer les données de cette manière.
$id=$_POST['id']
$prenom=$_POST['prenom']


Ça permet de récupérer les données du formulaire qui ont pour nom "id" et "prenom".

une fois récupérer ça pourra les mettre dans votre base
1
Babriehead Messages postés 63 Date d'inscription   Statut Membre Dernière intervention   4
 
Merci pour la rapidité de votre réponse, je devrais donc, dans la déclaration de mes variables rajouter ceci ?
Je vais essayer cela, merci beaucoup
0
diablo13800 Messages postés 2890 Date d'inscription   Statut Membre Dernière intervention   1 860
 
La déclaration des variables n'est pas nécessaire en php .

Voici comment vous pouvez reprendre votre code.


<?php
global $host, $db,$id, $prenom ,$nom, $sexe, $dateNaiss, $adresse, $telP, $telF, $mail, $lycee, $permisE, $dispo; // Si c'est dans une fonction
$bdd = new PDO('mysql:localhost='.$host.'dbname='.$db);

//On fait une vérification d'un champs pour voir si le formulaire a bien était saisi
if (isset($_POST['id'])){
// On récupère les données du formulaire
$id=$_POST['id'];
$prenom=$_POST['prenom'];
//Je vous laisse continuer pour toute les variable que votre formulaire envoi
// Si vous voulez connaitre tous les champs rajouter le code ci-dessous
//var_dump($_POST);die; Ca permet de lister votre tableau $_POST.
}


$req = $bdd->prepare('INSERT INTO eleve(id, prenom, nom, sexe, dateNaiss, adresse, telP, telF, mail, lycee,permisE, dispo) VALUES(:id, :prenom, :nom, :sexe, :dateNaiss, :adresse, :telP, :telF, :mail, :lycee, :permisE, :dispo)');

$req->execute(array(
'id' => $id,
'prenom' => $prenom,
'nom' => $nom,
'sexe' => $sexe,
'dateNaiss' => $dateNaiss,
'adresse' => $adresse,
'telP' => $telP,
'telF' => $telF,
'mail' => $mail,
'lycee' => $lycee,
'permisE' => $permisE,
'dispo' => $dispo
));
?>

0
Babriehead Messages postés 63 Date d'inscription   Statut Membre Dernière intervention   4
 
Merci beaucoup pour votre aide, vous m'avez aidé a comprendre le contenu du code et la solution.

PS : if (isset($_POST['id'])){ , je ne comprend pas l'utilité de ceci, concrètement c'est juste pour vérifier que le formulaire a bien été remplis au quel cas la "fonction" continus et sinon s'arrête ?
0
Babriehead Messages postés 63 Date d'inscription   Statut Membre Dernière intervention   4 > diablo13800 Messages postés 2890 Date d'inscription   Statut Membre Dernière intervention  
 
array (size=13)
'id' => string '2' (length=1)
'prenom' => string '***' (length=3)
'nom' => string '***' (length=9)
'sexe' => string '**' (length=1)
'dateNaiss' => string '***' (length=10)
'adresse' => string '***' (length=17)
'telP' => string '***' (length=10)
'telF' => string '**' (length=10)
'mail' => string '***' (length=22)
'lycee' => string '***' (length=7)
'permisE' => string '***' (length=3)
'dispo' => string 'tout les jours' (length=14)
'bt' => string 'valider' (length=7)


J'ai l'impression que tout fonctionne correctement, les données sont bien envoyé dans le script mais depuis mySql, SELECT * FROM eleve ne renvois toujours rien
0
diablo13800 Messages postés 2890 Date d'inscription   Statut Membre Dernière intervention   1 860
 
Ca permet que si on tape "Votre_url.com/traitement.php" ( ce qui est possible) on ai pas accès a cette page pour cela que dans le Else de ce if on renvoi vers une page du type erreur ou vers l'index de votre site;)

Voila avec ce que vous récupérer du formulaire Vous avez de quoi faire un Insert , et derrière récupérer afficher votre bdd avec un select. Cependant faite attention , si dans votre BDD L'id est en auto incrément ( ce qui est le cas dans 99% cas ) Votre insert ne doit pas lui donner de valeur .

Comme ceci.

$req = $bdd->prepare("INSERT INTO eleve(id, prenom, nom, sexe, dateNaiss, adresse, telP, telF, mail, lycee,permisE, dispo) VALUES('', :prenom, :nom, :sexe, :dateNaiss, :adresse, :telP, :telF, :mail, :lycee, :permisE, :dispo)");
0
diablo13800 Messages postés 2890 Date d'inscription   Statut Membre Dernière intervention   1 860
 
Pas de message d'erreur sur la première partie de code?
Bien sur quand je vous met du code il faut l'adapter. Si vous mettez par exemple:
dbname='nom_de_la_bdd'
Ça ne peut pas marcher

Pouvez-vous m'envoyer vos fichier de votre site? ( en privée par exemple grace a http://cjoint.com)
0
Babriehead Messages postés 63 Date d'inscription   Statut Membre Dernière intervention   4
 
0
diablo13800 Messages postés 2890 Date d'inscription   Statut Membre Dernière intervention   1 860 > Babriehead Messages postés 63 Date d'inscription   Statut Membre Dernière intervention  
 
Si vous faite un Var_dump de $host et de $db ca donne quoi?

(insérer var_dump($host); var_dump($db);die; dans votre code ( par exemple après la connexion a la bdd))
0
Babriehead Messages postés 63 Date d'inscription   Statut Membre Dernière intervention   4 > diablo13800 Messages postés 2890 Date d'inscription   Statut Membre Dernière intervention  
 
Sur la page de traitement au lieu d'afficher les champs avec les "nouvelles" valeurs,
Il est affiché :

null

null

Je ne pensais pas que cela était autant compliqué de remplir une base de donnée avec du php ^^
0
diablo13800 Messages postés 2890 Date d'inscription   Statut Membre Dernière intervention   1 860
 
C'est juste que vous vous connectez a une base de données vide. ( C'est d’ailleurs bien ce qui me semblait en voyant votre fichier mais je voulais être sur)
Certes l'idée de connexion est bonne et la syntaxe correct ( a 2 paramètre près ) Cependant vous devez indique les chemin de votre base de données

essayer avec ce code de connexion

$bdd = new PDO('mysql:localhost=localhost;dbname=eleve';'admin';'root');

Remplacer eleve par le nom de votre bdd dans phpmyadmin
0
Babriehead Messages postés 63 Date d'inscription   Statut Membre Dernière intervention   4 > diablo13800 Messages postés 2890 Date d'inscription   Statut Membre Dernière intervention  
 
j'ai droit a un "accés denied" ! Je vais essayer de régler le problème !
0