Enregistrement des données vers MySQL

Résolu/Fermé
Koktail Messages postés 26 Date d'inscription vendredi 8 février 2008 Statut Membre Dernière intervention 9 juillet 2009 - 12 févr. 2008 à 21:17
lewis34 Messages postés 2557 Date d'inscription samedi 21 juillet 2007 Statut Membre Dernière intervention 30 mai 2015 - 7 sept. 2008 à 12:28
Bonjour à tous,

J'aimerais savoir exactement comment enregistrer les données d'un formulaire vers une base de données, MySQL. Je sais bien sûr m'y connecter, j'ai écrit le formulaire, mais je ne sais pas que mettre dans mysql_query. Comment faire cette requête?
Mon formulaire est une inscription à un jeu que je suis en train de programmer,et je ne demande pas d'emails.
C'est tout, et merci beaucoup!
A voir également:

11 réponses

lewis34 Messages postés 2557 Date d'inscription samedi 21 juillet 2007 Statut Membre Dernière intervention 30 mai 2015 352
12 févr. 2008 à 22:02
voila un exemple
< html>
<head>
<title>Ma page de test</title>
</head>
<body>
<form action = "traitement.php" method="post">
Votre nom : <input type = "text" name = "nom"><br /> <!--ta variable va s'appeler $_POST["name"]-->
Votre fonction : <input type = "text" name = "fonction"><br /> <!--ta variable va s'appeler $_POST["fonction"]-->
<input type = "submit" value = "Envoyer"> <!--la c'est le bouton qui envoie les données à ton fichier traitement.php defini dans la balise <form au debut -->
</form>
</body>
</html>

page à enregistrer en extension php
<html>
<head>
<title>Ma page de traitement</title>
</head>
<body>
<?
// on teste la déclaration de nos variables
if (isset($_POST['nom']) && isset($_POST['fonction'])) // on verifie que les données existe avec isset
{
// on se connecte
$base = mysql_connect ('serveur', 'login', 'pass'); // c'st tes parametres de connexion à ta base
mysql_select_db ('ma_base', $base) ;

// lancement de la requete
$sql = 'INSERT INTO ta_table(champ nom,champ fonction) VALUES ("$_POST['nom']","$_POST['fonction'])';
}
?>
</body>
</html>

je t'explique dans ton formulaire tu a creer des champs input avec un nom name

ces variables vont etres reconnus dans ta page php sous form $_POST['le nom de ton champ'] (si tu utilise la methode get au lieu de post tu change seulement >POST par GET.

ensuite il faut bien sur que ta base sois crée et qu'un table soit existante avec les champs correspondants,tu n'a plus qu'a appliquer insert into.

La c'est simple mais il faut verifeir avant d'ajouter des valeurs postées qu'elles sont correct ,qu'elles existe enfin bref avant d'inserer des données provenant d'un formulaire il te faut faire plein de verification et cela pour nottamment eviter le hack ,car quelqu'un de mal intentionné peut à l'intéreiur de ton formulazire balancer du code et fusiller ton site.

en esperant t'avoir eclairé

@+
3
lewis34 Messages postés 2557 Date d'inscription samedi 21 juillet 2007 Statut Membre Dernière intervention 30 mai 2015 352
12 févr. 2008 à 21:34
bonsoir,
une fois que tu est connecté a ta base c'est relativement siimple

$req = "INSERT INTO ta_table (tes champs séparé par des ,) VALUES (tes valeurs)";
$exec = mysqli_query($connexion,$req);

$req c'est ce que tu demande à faire

$exec c'est l'execution de $req

personellement j'utilise mysqli la syntaxe differe un peu de mysql mais le principe est le meme.

la variable $connexion reprend les parametres de connexion a ta BD.
un lien si tu veux
http://www.lephpfacile.com/
@+
1
Koktail Messages postés 26 Date d'inscription vendredi 8 février 2008 Statut Membre Dernière intervention 9 juillet 2009 3
12 févr. 2008 à 21:42
Merci mais:

$req = "INSERT INTO ta_table (tes champs séparé par des ,) VALUES (tes valeurs)";

Quand tu dis valeurs, c'est quoi exactement?

Aussi, tu peux me dire (par exemple avec pseudo et mot_de_passe) ce que je dois mettre après INSERT INTO ma_table (ici je ne comprend pas trop)

Merci de tes réponses et du lien que tu m'as montré!
1
lewis34 Messages postés 2557 Date d'inscription samedi 21 juillet 2007 Statut Membre Dernière intervention 30 mai 2015 352
12 févr. 2008 à 21:45
tes valeurs peuvent etres des données fixes ou alors les variables postées dans ton formulaires.
laisse moi 5 mn et je t'envoi un exemple concret
1

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Koktail Messages postés 26 Date d'inscription vendredi 8 février 2008 Statut Membre Dernière intervention 9 juillet 2009 3
12 févr. 2008 à 22:29
Merci beaucoup de toutes ces réponses, mais j'en ai encore ;) Si ça t'arranges, tu peux répondre demain, c'est pas grave.

Donc, juste pour que je comprenne mieux, je vais utiliser mes exemples (formulaire => pseudo, mot de passe, nom de l'éleveur - base de donnée => jokogo - table utilisée => membres, avec les champs id, pseudo, mot_de_passe et nom_eleveur).

Déjà, on fait le formulaire, dans inscription.php:

<form action="validation_inscription.php" method="post">
<p align="left">Pseudonyme :<input type="text" name="pseudo" class="champ_inscription" /></p>
<p align="left">Mot de passe :<input type="password" name="mot_de_passe" class="champ_inscription" /></p>
<p align="left">Prénom de l'éleveur :<input type="text" name="nom_eleveur" class="champ_inscription" /></p>
<input type="submit" value="Inscription" class="bouton_valider" />
</form>

Ensuite, dans validation_inscription.php:

<?php
if (isset($_POST['pseudo']) && isset($_POST['mot_de_passe']) && isset($_POST['nom_eleveur']));
{
$base = mysql_connect ('localhost', 'blabli', 'blabla');
mysql_select_db ('jokogo', $base) ;

$sql = 'INSERT INTO membres($pseudo, $mot_de_passe, $nom_eleveur) VALUES ("$_POST['pseudo']","$_POST['mot_de_passe']","$_POST['nom_eleveur'])';
}


Dis moi si il y a des fautes, mais il me reste encore quelques problèmes (après, c'est fini, t'inquiètes pas!):

-Je voudrais que, comme inscription.php, dès que j'appuie sur Envoyer, validation_inscription.php s'incluse à la place même de validation.php. Dans le corps de ma page web, quoi.

-Quand je vois des scripts d'inscription tout faits, ils sont super long, et j'y comprend rien. Pourquoi? (bon, là, question relativement stupide).

-Après, quand je ferais connexion.php, il faudra que je crée une nouvelle table dans ma base ou pas? Tu peux répondre juste par oui ou non, là ^^


Je te remercie beaucoup, tu m'as vraiment aidé, je comprend tout ça beaucoup mieux.


PS: Merci!
1
lewis34 Messages postés 2557 Date d'inscription samedi 21 juillet 2007 Statut Membre Dernière intervention 30 mai 2015 352
12 févr. 2008 à 22:54
t'inkiete ca me derange pas j'etais comme toi au début je tatonnais..

alors deja il y une erreur (je critique pas.. ;-) )

$sql = 'INSERT INTO membres($pseudo, $mot_de_passe, $nom_eleveur) VALUES ("$_POST['pseudo']","$_POST['mot_de_passe']","$_POST['nom_eleveur '])';
}
apres membres( tu met $pseudo,$mot_passe $nom_eleveur

la il faut que ce soit tes champs de ta table ,à mon avis je sais pas comment tu les a appelé mais ca serait plutot comme ça

$sql = 'INSERT INTO membres(pseudo, mot_de_passe</gras,<gras>nom_eleveur) VALUES ("$_POST['pseudo']","$_POST['mot_de_passe']","$_POST['nom_eleveur '])';
}

ensuite en ce qui concerne la longuer des scripts c'est vrai qu'il sont long simplement pour des raisons de securité
verifier que les données du formulaires sont remplis,
verifier que le pseudo existe,
verifier que le mot de passe est correct,
verifier que l'adresse mail est correct
etc...
enfin plein de peites routines qui prennes de la place mais qui garantisse la securité de ton accès.

ensuite quand l'utilisisateur va s'inscrire ,il va d'abord remplir un formulaire,ensuite les données vont etres verifié puis inseres dans ta base.

la c'est simple

mais quand il va se connecter il faudra que tu cree un page qui verifie les infos du type (son pseudo et son MP) et si le pseudo et le mp sont trouvé et corresponde la la connexion est établies ,il peut rentrer.

c'est pour ça que c'est long les scripts de log.
n'hesite pas à faire plusieurs page ,1 pour la verif ,1 pour l'inscription
et dans ta page principale tu peut recourir à des include (fichier.php) ca t'appelle le fichier ou tu a mis ton code en php.



Quand à la base il faut 1 base que j'appelerais utilisateur et dedans tu cree une table inscription (c'est des exemples)
ou la tu mettra le pseudo le mot de passe (si possible crypté avec md5) et tous les renseignement que tu jugera utiles,ey cette table sera divisée en champ
pseudo
mot de passe
email
etc..

et ce sont ces noms de champs que tu met dans ta requete insert into

je te confirme un truc c'est simple mais c'est long
J'en sait quelque chose je suis en train de creer mon site perso et je termine la partie privé avec pseudo et mot de passe.
si tu veut tester http://milsodor.no-ip.org

tu clic sur espace membre de la page d'accueil et tu verra qu'il te faudra t'inscrire.
pour le moment je termine les pages tu ne pourra qu'aller modifier ton compte,mais je pense d'ici la fin de semaine je mettrais le reste en ligne.
1
Koktail Messages postés 26 Date d'inscription vendredi 8 février 2008 Statut Membre Dernière intervention 9 juillet 2009 3
13 févr. 2008 à 15:29
Merci beaucoup!

PS: J'aime bien ton site, le seul petit détail que j'ai remarqué, c'est que pour tout lire, on doit utiliser la barre coulissante. Mais sinon j'adore, surtout le contour de la page! Super!
1
lewis34 Messages postés 2557 Date d'inscription samedi 21 juillet 2007 Statut Membre Dernière intervention 30 mai 2015 352
13 févr. 2008 à 16:20
merci du compliment mais comme je t'ai dis le site est pas fini.

j'espere que dans la semaine la section qui va contenir les petites annonces va etre operationelle.
si t'a besoin de conseikls hesite pas
@+
1
Bonjour, j'aurais une petite question:
j'explique d'abord le contexte. Je commence un site pour le foot : le but est que l'entraineur puisse entrer le nom des joueurs convoqués afin de les afficher.
Il faut qu'il puisse choisir la date du match, la rencontre (qui contre qui), et ensuite indiquer les 14 joueurs avec le numéro du joueur, puis éventuellement un commentaire a la fin.
Le problème c'est que je ne sait pas trop comment faire : je voudrais pouvoir enregistrer les 14 joueurs qui seront entrés donc 14 lignes dans la base associés chacun au match qui lui est toujours le même.
ce que je voulais faire c'est une table pour les joueurs (nom; prénom) une table pour les recontres (n°, date, rencontre) et une table convocation qui feraient le lien (n°, n° joueur, nom prénom).

Si je procéde comme ça, j'avais dans l'idée de faire mon formulaire ainsi :
une liste déroulante pour la date et le match.

puis plus bas 14 listes déroulantes pour les joueurs.

Mais comment enregistré dans la base les 14 joueurs associés au match qui a été choisi??
0
lewis34 Messages postés 2557 Date d'inscription samedi 21 juillet 2007 Statut Membre Dernière intervention 30 mai 2015 352
6 sept. 2008 à 15:59
bonjour ,
bon ton projet je suppose que les dates de match sont définies ,c'est a dire que tu les connais d'avance ,puis evidemment le noms de de tes joueurs.

je verrais une liste deroulante avec la date des matchs ou leur noms (a toi de voir) puis a cote une liste complete de tes joueurs avec une checbox en face de chaque nom
si elle est cochée le joueur est choisi si elle l'est pas il est pas selectionné

<input type="checkbox" id="joueur" name="joueul[]" value="<? echo $nom.'/'.$prenom ?>" checked=""/>

il te faut bien sur creer tes requetes qui parcoure la table joueurs

tu envoi tout ca en post puis tu recupere que les checbox cochées

du style

//recup des checkbox
//on récupère le tableau des checbox cochées
$tab_chk =$_POST['mail'];
//on les affiches
//debut de la boucle de recup
foreach($tab_chk as $adr)
{
//recup du prenom
$recpre=split('[/]', $adr);
$recadresse=split('[/]', $adr);
$prenom=$recpre[1];
$nom=$recpre[0];
...............................;
)

en esperant t'avoir éclairé un peu
1
salut
0
oui merci c'est deja sympa. Le seul truc en plus c'est que les joueurs convoqués doivent être donnés dans l'ordre : avec leur numéro.
Donc les checkbox ne vont pas permettrent cela :s
1
lewis34 Messages postés 2557 Date d'inscription samedi 21 juillet 2007 Statut Membre Dernière intervention 30 mai 2015 352
7 sept. 2008 à 12:28
trier les joueurs ce n'est pas pas un probleme il suffit de rajouter une clause dans ta requete d'affichage de la liste ORDER BY numero ASC
1