PHP|Débutant :: Forums

Advertisement

Besoin d'aide ? N'hésitez pas, mais respectez les règles

Vous n'êtes pas identifié(e).

#1 31-07-2009 16:48:43

papycool
Membre
Inscription : 31-07-2009
Messages : 7

faire des entrées dans une table.

Bonjour,

     Ben voilà, je suis en train de réaliser un site qui nécessite une page d'enregistrement de profil. j'ai donc codé comme je pense être la bonne façon, et lorsque je teste, je n'ai aucun message d'erreur, mais lorsque je vérifie sur ma table, rien d'inscrit. je vous donne le code de façon à pouvoir avoir la solution à ce problème qui pour moi est incompréhensible.


<?php

  mysql_connect("localhost", "root", "");
        mysql_select_db("deux");


if (!empty($_POST['pseudo']) && !empty($_POST['photo']) && !empty($_POST['mot_de_passe']) && !empty($_POST['email'])&& !empty($_POST['ville'])  && !empty($_POST['region']) && !empty($_POST['pays']) && !empty($_POST['taille']) && !empty($_POST['poids']) && !empty($_POST['cheveux']) && !empty($_POST['yeux']) && !empty($_POST['age']) && !empty($_POST['sexe']) && !empty($_POST['situation']) && !empty($_POST['enfants']) && !empty($_POST['etudes']) && !empty($_POST['loisir']) && !empty($_POST['sport']) && !empty($_POST['commentaire'])) // Si les variables existent
{
   
       
 
   
        $pseudo = mysql_real_escape_string(htmlspecialchars($_POST['pseudo']));
    $photo = mysql_real_escape_string(htmlspecialchars($_POST['photo']));
    $mot_de_passe =   mysql_real_escape_string(htmlspecialchars($_POST['mot_de_passe']));
    $email = mysql_real_escape_string(htmlspecialchars($_POST['email']));
                $ville = mysql_real_escape_string(htmlspecialchars($_POST['ville']));
    $region = mysql_real_escape_string(htmlspecialchars($_POST['region']));
    $pays = mysql_real_escape_string(htmlspecialchars($_POST['pays']));
    $taille = mysql_real_escape_string(htmlspecialchars($_POST['taille']));
    $poids = mysql_real_escape_string(htmlspecialchars($_POST['poids']));
    $cheveux = mysql_real_escape_string(htmlspecialchars($_POST['cheveux']));
    $yeux = mysql_real_escape_string(htmlspecialchars($_POST['yeux']));
    $age = mysql_real_escape_string(htmlspecialchars($_POST['age']));
    $sexe = mysql_real_escape_string(htmlspecialchars($_POST['sexe']));
    $situation = mysql_real_escape_string(htmlspecialchars($_POST['situation']));
    $enfants = mysql_real_escape_string(htmlspecialchars($_POST['enfants']));
    $etudes = mysql_real_escape_string(htmlspecialchars($_POST['etudes']));
    $loisirs = mysql_real_escape_string(htmlspecialchars($_POST['loisirs']));
    $sport = mysql_real_escape_string(htmlspecialchars($_POST['sport']));
    $commentaire = mysql_real_escape_string(htmlspecialchars($_POST['commentaire']));
 
     
        mysql_query("INSERT INTO info VALUES('', '$pseudo', '$photo', '$mot_de_passe', '$email', '$ville', '$region', '$pays', '$taille', '$poids', '$cheveux', '$yeux', '$age', '$sexe', '$situation', '$enfants', '$etudes', '$loisirs', '$sport', '$commentaire')") or die (mysql_error());
  }


?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "[url]http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd[/url]">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" lang="fr">
    <head>
        <title>Votre profil</title>
        <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
    </head>
 
  <form method="POST" action="profil.php" name="profil">
  <p>
  <table align="center">
  <tr>
  <td><strong>Pseudo :</strong></td><td><input type="text" name="pseudo"/></td></tr>
  <tr>
  <td><strong>Photo:</strong></td><td><input type="text" name="pseudo"/></td></tr>
  <tr>
  <td><strong>Mot de passe :</strong></td><td><input type="text" name="pseudo"/></td></tr>
  <tr>
  <td><strong>Email :</strong></td><td><input type="text" name="pseudo"/></td></tr>
  <tr>
  <td><strong>Ville :</strong></td><td><input type="text" name="ville"/></td></tr>
  <tr>
  <td><strong>Région :</strong></td><td><input type="text" name="region"/></td></tr>
  <tr>
  <td><strong>Pays :</strong></td><td><input type="text" name="pays"/></td></tr>
  <tr>
  <td><strong>Taille en cm :</strong></td><td><input type="text" name="taille"/></td></tr>
  <tr>
  <td><strong>Poids :</strong></td><td><input type="text" name="poids"/></td></tr>
  <tr>
  <td><strong>Couleur des cheveux :</strong></td><td><input type="text" name="cheveux"/></td></tr>
  <tr>
  <td><strong>Couleur des yeux :</strong></td><td><input type="text" name="yeux"/></td></tr>
  <tr>
  <td><strong>Age :</strong></td><td><input type="text" name="age"/></td></tr>
  <tr>
  <td><strong>Sexe :</strong></td><td><input type="text" name="sexe"/></td></tr>
  <tr>
  <td><strong>Situation familiale :</strong></td><td><input type="text" name="situation"/></td></tr>
  <tr>
  <td><strong>Avez-vous des enfants :</strong></td><td><input type="text" name="enfants"/></td></tr>
  <tr>
  <td><strong>Etudes :</strong></td><td><input type="text" name="etudes"/></td></tr>
  <tr>
  <td><strong>Loisirs :</strong></td><td><input type="text" name="loisirs"/></td></tr>
  <tr>
  <td><strong>Sport pratiqué :</strong></td><td><input type="text" name="sport"/></td></tr>
  <tr>
  <td><strong>Commentaires :</strong></td><td><input type="text" name="commentaire"/></td></tr>
  <tr>
 
  <td colspan="2" align="center"><input type="submit" value="ENREGISTRER"/></td></tr>
  </p>

<?php
  mysql_close();
?>

j'attends avec impatiente la réponse à ce mystère. Cordialement Papycool.

Hors ligne

#2 31-07-2009 21:54:37

PatriceRapaport
Membre
Inscription : 30-07-2009
Messages : 6

Re : faire des entrées dans une table.

salut papycool

sans vouloir dire de bêtises, il me semble que la syntaxe pour une instruction insert est:

INSERT INTO <nomtable> (<nomvariable1>, <nomvariable2>, ...) VALUES (<valeur1>, <valeur2>, ...)

A priori, il manque les noms de variables (entre parenthèses) de ta table "info".

D'autre part, le test que tu fais sur les variables renseignées est tel que tu ne fais l'insertion que si TOUTES les variables sont renseignées.
En espérant que ça aide!!

Hors ligne

#3 01-08-2009 11:29:18

papycool
Membre
Inscription : 31-07-2009
Messages : 7

Re : faire des entrées dans une table.

J'ai effectivement remanié ma requête mais je n'ai toujours pas d'enregistrement dans ma table. je me lasse un tantinet. Question: Peut-on mélanger sur un même site, du PHP et du PHP6 ?

Hors ligne

#4 01-08-2009 12:12:32

PatriceRapaport
Membre
Inscription : 30-07-2009
Messages : 6

Re : faire des entrées dans une table.

A mon avis, tu ne peux avoir qu'une seule version de PHP installée sur ta machine.
J'avais juste regardé ta requête, pas le HTML, mais as tu vu que tu as 4 fois la zone pseudo en entrée?

#
<tr>
#
  <td><strong>Pseudo :</strong></td><td><input type="text" name="pseudo"/></td></tr>
#
  <tr>
#
  <td><strong>Photo:</strong></td><td><input type="text" name="pseudo"/></td></tr>
#
  <tr>
#
  <td><strong>Mot de passe :</strong></td><td><input type="text" name="pseudo"/></td></tr>
#
  <tr>
#
  <td><strong>Email :</strong></td><td><input type="text" name="pseudo"/></td></tr>
#
  <tr>

resultat des courses: les $_POST des zones photo, mot de passe et email sont systématiquement non renseignés, et donc ta requête ne s'exécute pas!!

Hors ligne

#5 01-08-2009 21:58:24

papycool
Membre
Inscription : 31-07-2009
Messages : 7

Re : faire des entrées dans une table.

Merci  j'ai enfin pu débloquer cela. Moralié, le copier/coller quand on code c'est pas du 100%.
Merci encore.

Hors ligne

#6 02-08-2009 06:08:22

papycool
Membre
Inscription : 31-07-2009
Messages : 7

Re : faire des entrées dans une table.

Effectivement, si je ne renseigne pas tous les champs, j'ai un message d'erreur et mon formulaire ne part pas. Comment résoudre ce problème et comment lier cela à une page "modification" ?

Hors ligne

#7 02-08-2009 06:46:32

PatriceRapaport
Membre
Inscription : 30-07-2009
Messages : 6

Re : faire des entrées dans une table.

Que veux tu dire par lier a une page de modification?

en ce qui concerne ton formulaire, j'ai l'impression que ce que tu veux faire dans ton test, c'est si aucune zone n'est remplie alors ne pas procéder à l'insertion, mais si au moinss une zone est renseignée, alors écrire dans la table.
Dans ce cas, ton  test est mauvais.
si tu écris

if(<condition 1> && <condition2> && <condition 3>)

cela signifie que les trois conditions doivent être vraies pour que le test se réalise.
Si tu écris

if(<condition1> || <condition2> || <condition 3>)

cela signifie qu'au moins une des conditions doit être vraie pour que le test se réalise.

Hors ligne

#8 02-08-2009 09:32:23

papycool
Membre
Inscription : 31-07-2009
Messages : 7

Re : faire des entrées dans une table.

Oui c'est vrai, je viens de modifier et de ce côté là, tout va bien. Maintenant, on part du principe, qu'une personne qui s'inscrit, peut changer certaines de ses coordonnées au cours de son abonnement. Je suppose donc qu'il doit  bien exister une page modification pour ses nouvelles données? Comment à partir de ce formulaire, on créé une autre page pour modifier ces données ?

Dans mon esprit c'est:
1) creer une variable qui m'emmene le pseudo de la personne. (je n'arrive toujours pas à créer une session_start)
2) faire un select et echo de tout ce qui est dans la table pour la variable,
3) créer un UPDATE avec $_POST['variable']; et WHERE pour le champs déterminé.

Suis-je dans le vrai ?

Hors ligne

#9 02-08-2009 10:10:15

PatriceRapaport
Membre
Inscription : 30-07-2009
Messages : 6

Re : faire des entrées dans une table.

Concernant les sessions, c'est un peu plus complexe, car ca dépend de ton serveur (j'espère que je ne dis pas de bêtise)
En tous cas, tu peux utiliser les variables $_post pour passer des informations d'une page à l'autre.
Suppose que tu ais une première page avec  un champ du type "entrez votre pseudo" et un lien "ou bien cliquez ici pour vous inscrire".
Cette première page appellera ta page ou l'utilisateur entre ses informations. Nomme la zone pseudo de ta première page "login", ce qui te permettra dans ta seconde page de distinguer entre la zone pseudo de la première page et la zone pseudo de la seconde (c'est clair jusque là?)
Dans la partie php de la seconde page, si $_post['login'] est renseignée, tu lis l'enregistrement dans ta BDD:

if (isset($_POST['login'])) {
$query = sprintf("SELECT * FROM info WHERE pseudo='%s' ", $_PÖST['pseudo']);
$rs = mysql_query($query, $maconnexion) or die(mysql_error());
$row=mysql_fetch_assoc($rs); }

ensuite pour chaque zone de ton formulaire tu renseigne la valeur:

<input type="text" name="ville" value="<?php if (isset($rs)) echo $rs['ville']?>"/>

Toujours clair?
si tu entre dans la page avec la variable login renseignée, $rs sera alimenté et tes zones input auront une valeur, sinon $rs sera non renseignée et tes zones input seront vierges.

tu as intérêt à mettre une zone cachée  qui te dira si tu es en création ou modification:

<input type="hidden" name="CMD" value="<?php echo (isset($rs) ? 'EDIT' : 'ADD') ?>" />

quand tu relis ta page tu teste la variable CMD

if ($_POST['CMD']=='EDIT) {<faire la mise à jour>} else if ($_POST['CMD']=='ADD') {<faire la création>];

Le truc, c'est que tu as donc 3 manières d'entrer dans ta page: soit CMD n'est pas renseigné, ce qui signifie que tu viens de la page d'accueil (avec login renseigné ou non) soit CMD  est renseigné, ce qui signifie que c'est le retour de ton formulaire.

Une dernière chose: avec cette méthode, tu dois déclarer la zone pseudo de ta table comme étant unique. Ce qui signifie que lorsque tu fais la création, tu dois absolument tester que le pseudo n'existe pas déjà.

Hors ligne

#10 02-08-2009 10:19:27

papycool
Membre
Inscription : 31-07-2009
Messages : 7

Re : faire des entrées dans une table.

Oups, juste avant le gigot d'agneau, ca demande relecture et compréhension. je m'y mets dès la fin de la digestion. Mais en gros, j'ai compris.

Hors ligne

#11 02-08-2009 10:24:28

PatriceRapaport
Membre
Inscription : 30-07-2009
Messages : 6

Re : faire des entrées dans une table.

Bon gigot.

Si tu as des soucis, mail moi en direct.

Hors ligne

#12 02-08-2009 10:32:05

papycool
Membre
Inscription : 31-07-2009
Messages : 7

Re : faire des entrées dans une table.

OK pour la ligne direct. Bon appétit à toi zaussi..............;

Hors ligne

Pied de page des forums