Mysql, php, html FORMULAIRE

Fermé
Babriehead Messages postés 63 Date d'inscription mercredi 8 mai 2013 Statut Membre Dernière intervention 12 janvier 2017 - Modifié par Babriehead le 8/06/2016 à 15:03
Babriehead Messages postés 63 Date d'inscription mercredi 8 mai 2013 Statut Membre Dernière intervention 12 janvier 2017 - 21 juin 2016 à 14:23
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 jeudi 2 juillet 2015 Statut Membre Dernière intervention 16 février 2024 1 844
8 juin 2016 à 15:03
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 mercredi 8 mai 2013 Statut Membre Dernière intervention 12 janvier 2017 4
8 juin 2016 à 15:06
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 jeudi 2 juillet 2015 Statut Membre Dernière intervention 16 février 2024 1 844
8 juin 2016 à 15:13
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 mercredi 8 mai 2013 Statut Membre Dernière intervention 12 janvier 2017 4
8 juin 2016 à 15:28
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 mercredi 8 mai 2013 Statut Membre Dernière intervention 12 janvier 2017 4 > diablo13800 Messages postés 2890 Date d'inscription jeudi 2 juillet 2015 Statut Membre Dernière intervention 16 février 2024
Modifié par Babriehead le 8/06/2016 à 15:41
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 jeudi 2 juillet 2015 Statut Membre Dernière intervention 16 février 2024 1 844
8 juin 2016 à 17:04
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 jeudi 2 juillet 2015 Statut Membre Dernière intervention 16 février 2024 1 844
10 juin 2016 à 16:34
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 mercredi 8 mai 2013 Statut Membre Dernière intervention 12 janvier 2017 4
13 juin 2016 à 14:37
0
diablo13800 Messages postés 2890 Date d'inscription jeudi 2 juillet 2015 Statut Membre Dernière intervention 16 février 2024 1 844 > Babriehead Messages postés 63 Date d'inscription mercredi 8 mai 2013 Statut Membre Dernière intervention 12 janvier 2017
14 juin 2016 à 09:27
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 mercredi 8 mai 2013 Statut Membre Dernière intervention 12 janvier 2017 4 > diablo13800 Messages postés 2890 Date d'inscription jeudi 2 juillet 2015 Statut Membre Dernière intervention 16 février 2024
14 juin 2016 à 16:24
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 jeudi 2 juillet 2015 Statut Membre Dernière intervention 16 février 2024 1 844
Modifié par diablo13800 le 14/06/2016 à 16:40
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 mercredi 8 mai 2013 Statut Membre Dernière intervention 12 janvier 2017 4 > diablo13800 Messages postés 2890 Date d'inscription jeudi 2 juillet 2015 Statut Membre Dernière intervention 16 février 2024
15 juin 2016 à 15:40
j'ai droit a un "accés denied" ! Je vais essayer de régler le problème !
0