IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

PHP & Base de données Discussion :

Base de données exemple BonsVivants du livre PHP & MySQL [MySQL]


Sujet :

PHP & Base de données

  1. #1
    Membre confirmé
    Femme Profil pro
    Développeur informatique et création d'images animées et fixes de synthèse
    Inscrit en
    Juillet 2003
    Messages
    210
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Développeur informatique et création d'images animées et fixes de synthèse
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Juillet 2003
    Messages : 210
    Par défaut Base de données exemple BonsVivants du livre PHP & MySQL
    Bonjour à tous !

    Ayant la nécessité d'apprendre le PHP5, j'ai fait l'acquisition du livre PHP & MySQL de chez MicroApplication...
    Au fur et à mesure de l'apprentissage de PHP5, on nous amène dans le livre à créer une base de données les BonsVivants.... Mais je suis déjà coïncé entre les 2 premiers formulaires.... Ce n'est pas très clairement expliqué l'endroit où l'on doit placer les diverses lignes de code, alors, pour un parfait débutant, c'est un peu dur de le deviner....

    L'un d'entre vous aurait-il grâce au livre, fait en exemple de test cette base afin de me faire parvenir le code intégral des 2 premiers formulaires SVP ?

    Je pense que c'est la seule solution qui me sauverait, car après avoir vainement cherché, j'y ai passé la journée, j'ai relu les explications des formulaires, je n'ai toujours pas trouvé la solution. Je trouve que le livre est un peu "sec" d'explications...

    D'avance, merci beaucoup @ tous.

  2. #2
    Membre très actif
    Avatar de keaton7
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    743
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 743
    Par défaut
    Bonjour,

    Je veux bien t'aider mais je ne pense pas etre pret a aller jusqu'a acheter le livre

    Tu peux expliquer ce qui te pose probleme ? Voire poster un bout de code que tu as ecris et que penses mal forme ?

  3. #3
    Membre confirmé
    Femme Profil pro
    Développeur informatique et création d'images animées et fixes de synthèse
    Inscrit en
    Juillet 2003
    Messages
    210
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Développeur informatique et création d'images animées et fixes de synthèse
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Juillet 2003
    Messages : 210
    Par défaut

    Ahhh ! merci beaucoup keaton7.... Effectivement, je ne te conseillerais pas le bouquin vu que j'ai des déboires avec les explications données.... Bref.

    Je vais t'envoyer le code intégral de mes deux premiers formulaires d'abord.
    Le premier formulaire, nommé inscription_p1.php, permet à l'utilisateur de saisir son prénom, email, code postal, ville et pays.

    Le deuxième si j'ai bien compris (là çà commence à devenir nébuleux....), permet à l'utilisateur de saisir ensuite son surnom, mot de passe, confirmation de mot de passe, question secrète en cas d'oubli du password et enfin la réponse qu'il doit donner pour récupérer son password.... Derrière ces formulaires existe donc une base de données en Mysql que j'ai monté grâce à EasyPHP 3.0

    Seulement, à la fin de l'écriture du deuxième formulaire (inscription_p2.php), on me dit de rajouter ces lignes de codes suivantes pour effectuer une vérification sur le champ email de la table membres, mais on ne me dit pas où.... Et c'est à mon avis de là que viennent tous mes problèmes...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    <?php
    	$sql="SELECT clef FROM membres WHERE email='$email'";
    	$resultat=@mysql_query($sql,$id_link);
    	$nombre=mysql_num_rows($resultat);
    	if ($nombre>0){
    		$auth=1;
    		include "inscription_p1.php";
    		exit;
    	}
    ?>
    et dans le formulaire inscription_p1.php la condition suivante :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    	if ($auth==1){
    	     echo "<p><font color=\"#FF0000\">
    	     Vous êtes déjà membre et vous avez peut-être 
    	    <a href=\"oubli.php\">oublié votre mot de passe</a>.</font></p>";
    	}
    Même problème : Où passe t'on les conditions dans des formulaires ?

    Voici le code de inscription_p1.php :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
     
    <?php
    	include "commun/connexion.inc.php";
    	//if ($auth==1){
    	//	echo "<p><font color=\"#FF0000\">
    	//	Vous êtes déjà membre et vous avez peut-être 
    	//	<a href=\"oubli.php\">oublié votre mot de  passe</a>.</font></p>";
    	//}	
    ?>
     
    <html>
    	<head>
    		<title>Inscription</title>
    	</head>
    	<body>
    		Pour vous inscrire dans le club, nous avons besoin de quelques renseignements. Préparez un nom 
    		d'usage pour le club et un mot de passe de plus de 8 caractères dont vous vous souviendrez facilement.
    		<form action="inscription_p2" method="post" name="page_1">
    			<table cellspacing="2" cellpadding="2" border="0">
    				<tr>
    					<td>Votre prénom :</td>
    					<td><input type="text" name="prenom"></td>
    				</tr>
    				<tr>
    					<td>Votre adresse email :</td>
    					<td><input type="text" name="email"></td>
    				</tr>
    				<?php
    					//Ici, problème de variable : auth est inconnue
    					if ($auth==1){
    						echo "<p><font color=\"#FF0000\">
    						Vous êtes déjà membre et vous avez peut-être 
    						<a href=\"oubli.php\">oublié votre mot de passe</a>.</font></p>";
    					}	
    				?>
    				<tr>
    					<td>Votre code postal :</td>
    					<td><input type="text" name="code_postal"></td>
    				</tr>
    				<tr>
    					<td>La ville où vous vivez :</td>
    					<td><input type="text" name="ville"></td>
    				</tr>
    				<tr>
    					<td>Votre pays :</td>
    					<td>
    					<?php
    						//Création de la liste déroulante associée à la requête
    						$sql="SELECT * FROM pays ORDER BY nom";
    						$resultat=@mysql_query($sql,$id_link);
    						echo '<select name="pays">';
    						echo '<option value="" selected></option>';
     
    						///////////////// La première ligne vide ////////////////////
    						while ($rang=mysql_fetch_array($resultat)){
    							//mysql_fetch_array() crée un tableau avec les lignes du résultat
    							$code=$rang['code'];
    							$nom=$rang['nom'];
    							echo "<option value=\"$code\">$nom</option>";
    						}
    						echo '</select>';
    					?>
    					</td>
    				</tr>
    				<tr>
    					<td></td>
    					<td><input type="submit" name="Je m'inscris" value="Je m'inscris"></td>
    				</tr>
    			</table>
    		</form>
    	</body>
    </html>
    Le code du formulaire inscription_p2.php :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
     
    <?php
    include "commun/connexion.inc.php";
     
    $prenom=$_POST['prenom'];
    $code_postal=$_POST['code_postal'];
    $ville=$_POST['ville'];
    $email=$_POST['email'];
     
    $sql="INSERT INTO membres (prenom, code_postal, ville, pays, email) 
    VALUES ('$prenom', '$code_postal', '$ville', '$pays', '$email')";
    @mysql_query($sql, $id_link);
    ?>
     
    <html>
    	<HEAD>
    		<TITLE>Inscription</TITLE>
    	</HEAD>
    	<BODY>
    		Veuillez maintenant choisir le nom d'usage que vous porterez dans le
    		club et le mot de passe pour y accéder. Vous pourrez ainsi rencontrer
    		d'autres membres et modifier votre profil, voire le supprimer éventuellement.
     
    		<FORM action="traitement_id.php" method="POST" name="page_2">
    			<table cellspacing="2" cellpadding="2" border="0">
    				<tr>
    					<td>Votre surnom</td>
    					<td><input type ="text" name="nom_usage"></td>
    				</tr>
    				<tr>
    					<td>Votre mot de passe</td>
    					<td><input type ="password" name="mot_passe"></td>
    					<?php
    						$sql="SELECT clef FROM membres WHERE email='$email'";
    						$resultat=@mysql_query($sql,$id_link);
    						$nombre=mysql_num_rows($resultat);
    						if ($nombre>0){
    							$auth=1;
    							include "inscription_p1.php";
    							exit;
    						}
    					?>				
    				</tr>
    				<tr>
    					<td>Retapez votre mot de passe</td>
    					<td><input type ="password" name="mot_passebis"></td>
    				</tr>
    				<tr>
    					<td>Votre question secrète en cas d'oubli</td>
    					<td><input type ="text" name="question" 
    						value="Quel est le nom de jeune fille de votre mère ?" size="50"></td>
    				</tr>
    				<tr>
    					<td>Votre réponse</td>
    					<td><input type ="password" name="reponse"></td>
    				</tr>
    				<tr>
    					<td></td>
    					<td><input type="submit" name="Je valide" value="Je valide"></td>
    				</tr>
    			</table>
    		</FORM>
    	</BODY>
    </html>
    Mmm... J'espère que mes indentations de code ne te poseront pas de problèmes sous ton interpréteur, j'ai écris le code sous Notepad++...

    Veux-tu la base aussi ?
    En tous cas, çà serait bien sympa à toi de me sortir de ces problèmes, car là, je tourne en rond.... je vais finir par attraper le tournis....


  4. #4
    Membre très actif
    Avatar de keaton7
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    743
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 743
    Par défaut
    Bonjour,

    Je pense que ton code sql, c'est en huat du deuxieme fichier qu'il faut le mettre, juste avant l'inclusion.

    Par exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
     
    $sql="SELECT clef FROM membres WHERE email='$email'";
    	$resultat=@mysql_query($sql,$id_link);
    	$nombre=mysql_num_rows($resultat);
    	if ($nombre>0){
    		$auth=1;
    	} else {
                   $auth=0;
            }
     
    if (!$auth) {
      $sql="INSERT INTO membres (prenom, code_postal, ville, pays, email) 
      VALUES ('$prenom', '$code_postal', '$ville', '$pays', '$email')"; 
      @mysql_query($sql, $id_link);
    } else {
      include "inscription_p1.php";
      exit;
    }
    En fait pour t'expliquer, lorsque php lit le fichier p2, il commence par inserer les elements du formulaire precedent, verifier l'email apres avoir insere la personne ne sert a rien. c'est l'interet du bout de code que je t'ai mis. Desormais, il verifie l'existence avant, il appelle le fichier p1 avec son message d'erreur, puis arrete l'execution du programme (exit()) afin de ne pas charger les contenus de la p2.

    Tu peux effacer tes select clef un partout dans tes pages et ne garder que celui en haut de p2

    Il y a des trucs que n'approuve pas totalement mais ce n'est pas le débat, faut deja que ca marche pour penser aux améliorations, et puis je ne veux pas te désorienter dans ton livre assez strict apparemment ^^.

    Bon courage.

  5. #5
    Membre confirmé
    Femme Profil pro
    Développeur informatique et création d'images animées et fixes de synthèse
    Inscrit en
    Juillet 2003
    Messages
    210
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Développeur informatique et création d'images animées et fixes de synthèse
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Juillet 2003
    Messages : 210
    Par défaut
    Bonjour keaton7....

    milles pardons, au premier mail, je ne t'avais pas salué....

    Bon, j'espère avoir correctement fait ce que tu m'as indiqué.... Mais au premier formulaire, au test, il me dit qu'à la ligne 24 du code, auth est inconnue.... mais si j'ai bien suivi le raisonnement, le code entre balises PHP, je n'en ai plus besoin donc je peux le supprimer ?

    code du formulaire 1 :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
     
    <?php
    	include "commun/connexion.inc.php";
    ?>
     
    <html>
    	<head>
    		<title>Inscription</title>
    	</head>
    	<body>
    		Pour vous inscrire dans le club, nous avons besoin de quelques renseignements. Préparez un nom 
    		d'usage pour le club et un mot de passe de plus de 8 caractères dont vous vous souviendrez facilement.
    		<form action="inscription_p2" method="post" name="page_1">
    			<table cellspacing="2" cellpadding="2" border="0">
    				<tr>
    					<td>Votre prénom :</td>
    					<td><input type="text" name="prenom"></td>
    				</tr>
    				<tr>
    					<td>Votre adresse email :</td>
    					<td><input type="text" name="email"></td>
    				</tr>
    				<?php
    					//Ici, problème de variable : auth est inconnue
    					if ($auth==1){
    						echo "<p><font color=\"#FF0000\">
    						Vous êtes déjà membre et vous avez peut-être 
    						<a href=\"oubli.php\">oublié votre mot de passe</a>.</font></p>";
    					}	
    				?>
    				<tr>
    					<td>Votre code postal :</td>
    					<td><input type="text" name="code_postal"></td>
    				</tr>
    				<tr>
    					<td>La ville où vous vivez :</td>
    					<td><input type="text" name="ville"></td>
    				</tr>
    				<tr>
    					<td>Votre pays :</td>
    					<td>
    					<?php
    						//Création de la liste déroulante associée à la requête
    						$sql="SELECT * FROM pays ORDER BY nom";
    						$resultat=@mysql_query($sql,$id_link);
    						echo '<select name="pays">';
    						echo '<option value="" selected></option>';
     
    						///////////////// La première ligne vide ////////////////////
    						while ($rang=mysql_fetch_array($resultat)){
    							//mysql_fetch_array() crée un tableau avec les lignes du résultat
    							$code=$rang['code'];
    							$nom=$rang['nom'];
    							echo "<option value=\"$code\">$nom</option>";
    						}
    						echo '</select>';
    					?>
    					</td>
    				</tr>
    				<tr>
    					<td></td>
    					<td><input type="submit" name="Je m'inscris" value="Je m'inscris"></td>
    				</tr>
    			</table>
    		</form>
    	</body>
    </html>
    Par contre, au test du formulaire 2, voilà ce qu'il m'envoie :
    Notice: Undefined variable: email in C:\Program Files\EasyPHP 3.0\www\BonsVivants\inscription_p2.php on line 2

    Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in C:\Program Files\EasyPHP 3.0\www\BonsVivants\inscription_p2.php on line 4

    Notice: Undefined variable: prenom in C:\Program Files\EasyPHP 3.0\www\BonsVivants\inscription_p2.php on line 13

    Notice: Undefined variable: code_postal in C:\Program Files\EasyPHP 3.0\www\BonsVivants\inscription_p2.php on line 13

    Notice: Undefined variable: ville in C:\Program Files\EasyPHP 3.0\www\BonsVivants\inscription_p2.php on line 13

    Notice: Undefined variable: pays in C:\Program Files\EasyPHP 3.0\www\BonsVivants\inscription_p2.php on line 13

    Notice: Undefined variable: email in C:\Program Files\EasyPHP 3.0\www\BonsVivants\inscription_p2.php on line 13

    Notice: Undefined index: prenom in C:\Program Files\EasyPHP 3.0\www\BonsVivants\inscription_p2.php on line 22

    Notice: Undefined index: code_postal in C:\Program Files\EasyPHP 3.0\www\BonsVivants\inscription_p2.php on line 23

    Notice: Undefined index: ville in C:\Program Files\EasyPHP 3.0\www\BonsVivants\inscription_p2.php on line 24

    Notice: Undefined index: email in C:\Program Files\EasyPHP 3.0\www\BonsVivants\inscription_p2.php on line 25
    Aîe !

    Voilà le code retravaillé du formulaire 2....
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
     
    <?php
    $sql="SELECT clef FROM membres WHERE email='$email'";
    $resultat=@mysql_query($sql,$id_link);
    $nombre=mysql_num_rows($resultat);
    	if ($nombre>0){
    		$auth=1;
    	} else {
    		$auth=0;
    	}
     
    if (!$auth) {
      $sql="INSERT INTO membres (prenom, code_postal, ville, pays, email) 
      VALUES ('$prenom', '$code_postal', '$ville', '$pays', '$email')"; 
      @mysql_query($sql, $id_link);
    } else {
      include "inscription_p1.php";
      exit;
    }
     
    include "commun/connexion.inc.php";
     
    $prenom=$_POST['prenom'];
    $code_postal=$_POST['code_postal'];
    $ville=$_POST['ville'];
    $email=$_POST['email'];
     
    ?>
     
    <html>
    	<HEAD>
    		<TITLE>Inscription</TITLE>
    	</HEAD>
    	<BODY>
    		Veuillez maintenant choisir le nom d'usage que vous porterez dans le
    		club et le mot de passe pour y accéder. Vous pourrez ainsi rencontrer
    		d'autres membres et modifier votre profil, voire le supprimer éventuellement.
     
    		<FORM action="traitement_id.php" method="POST" name="page_2">
    			<table cellspacing="2" cellpadding="2" border="0">
    				<tr>
    					<td>Votre surnom</td>
    					<td><input type ="text" name="nom_usage"></td>
    				</tr>
    				<tr>
    					<td>Votre mot de passe</td>
    					<td><input type ="password" name="mot_passe"></td>
    				</tr>
    				<tr>
    					<td>Retapez votre mot de passe</td>
    					<td><input type ="password" name="mot_passebis"></td>
    				</tr>
    				<tr>
    					<td>Votre question secrète en cas d'oubli</td>
    					<td><input type ="text" name="question" 
    						value="Quel est le nom de jeune fille de votre mère ?" size="50"></td>
    				</tr>
    				<tr>
    					<td>Votre réponse</td>
    					<td><input type ="password" name="reponse"></td>
    				</tr>
    				<tr>
    					<td></td>
    					<td><input type="submit" name="Je valide" value="Je valide"></td>
    				</tr>
    			</table>
    		</FORM>
    	</BODY>
    </html>
    J'ai fait une boulette ? Certainement oui, mais je voudrais comprendre et me sortir de ces deux formulaires afin de tester ensuite les authentifications....

    Merci beaucoup d'avance pour la patience que tu prends face à un super débutant....

  6. #6
    Membre très actif
    Avatar de keaton7
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    743
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 743
    Par défaut
    Pour ton formulaire 2, essaie plutot comme ca pour le debut :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
     
    include "commun/connexion.inc.php";
     
    $prenom=$_POST['prenom'];
    $code_postal=$_POST['code_postal'];
    $ville=$_POST['ville'];
    $email=$_POST['email'];
     
     
    $sql="SELECT clef FROM membres WHERE email='$email'";
    $resultat=@mysql_query($sql,$id_link);
    $nombre=mysql_num_rows($resultat);
    	if ($nombre>0){
    		$auth=1;
    	} else {
    		$auth=0;
    	}
     
    if (!$auth) {
      $sql="INSERT INTO membres (prenom, code_postal, ville, pays, email) 
      VALUES ('$prenom', '$code_postal', '$ville', '$pays', '$email')"; 
      @mysql_query($sql, $id_link);
    } else {
      include "inscription_p1.php";
      exit;
    }
    Si tu declares les variables apres le test, ca ne fonctionnera pas.

    Pour la page 1, remplace la partie de teste auth apr celle la :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    <?php
    	//Ici, problème de variable : auth est inconnue
    	if (isset($auth)){
     
    		if ($auth == 1) {
     
    			echo "<p><font color=\"#FF0000\">
    			Vous êtes déjà membre et vous avez peut-être 
    			<a href=\"oubli.php\">oublié votre mot de passe</a>.</font></p>";
     
    		}
    	}	
    ?>
    En effet, tu essaie de tester une variable qui n'existe pas, d'ou l'erreur PHP. La fonction isset() te permet de verifier si une variable a ete declaree prealablement. J'ajoute donc cette condition pour éviter les erreurs.

    N'hesite pas egalement a consulter la documentation php pour en savoir plus sur les fonctions, elle est indispensable au developpement PHP, pour les debutants comme pour les personnes confirmees.

    http://www.php.net/docs.php

  7. #7
    Membre confirmé
    Femme Profil pro
    Développeur informatique et création d'images animées et fixes de synthèse
    Inscrit en
    Juillet 2003
    Messages
    210
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Développeur informatique et création d'images animées et fixes de synthèse
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Juillet 2003
    Messages : 210
    Par défaut
    Ahhh ! merci, çà fonctionne beaucoup mieux effectivement. un seul problème subsiste à présent, c'est qu'au passage du formulaire 1 au 2, il ne connaît pas la valeur de la variable pays....

    Effectivement, dans le formulaire 1, à la gestion de la liste déroulante ici :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
     
    	//Création de la liste déroulante associée à la requête
    	$sql="SELECT * FROM pays ORDER BY nom";
    	$resultat=@mysql_query($sql,$id_link);
    	echo '<select name="pays">';
    	echo '<option value="" selected></option>';
     
    	///////////////// La première ligne vide ////////////////////
    	while ($rang=mysql_fetch_array($resultat)){
    		//mysql_fetch_array() crée un tableau avec les lignes du résultat
    		$code=$rang['code'];
    		$nom=$rang['nom'];
    		echo "<option value=\"$code\">$nom</option>";
    	}
    	echo '</select>';
    la variable pays n'est pas assignée et au début du formulaire 2, là où toutes les autres variables se trouvent, elle n'est pas assignée non plus, forcément, avec la requête, çà coïnce puisque sa valeur n'est pas trouvée.... j'ai été voir la portée des variables dans le lien que tu me disais, et d'après ce que j'ai compris, ce serait une variable statique ? Ne devrait-on pas la passer au début du formulaire 2 à la suite des autres variables par $pays = $nom ?

    Je découvre, mais si çà se trouve, je dis d'immondes bêtises.... Mais c'est bizarre que ce ne soit pas indiqué dans le code proposé...

  8. #8
    Membre très actif
    Avatar de keaton7
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    743
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 743
    Par défaut
    Tu es alle cherche un peu trop loin une reponse tout a fait a ta portee

    Il manque juste ca au debut de ton formulaire 2
    Pour repondre a tes questions, la portée des variables n'a rien a voir la dedans. On parle de portee de variables quand on a des fonctions ou des classes persos et que l'on veut acceder a des elements particuliers. Je ne crois aps que tu en sois deja la

    Pour info, ecrire $pays = $nom ne sert a rien, tu egalise un element avec un autre, pourquoi ? Tu n'ajoute rien ...

    En fait je pense que tu ne comprend pas bien cette partie :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    //Création de la liste déroulante associée à la requête
    	$sql="SELECT * FROM pays ORDER BY nom";
    	$resultat=@mysql_query($sql,$id_link);
    	echo '<select name="pays">';
    	echo '<option value="" selected></option>';
     
    	///////////////// La première ligne vide ////////////////////
    	while ($rang=mysql_fetch_array($resultat)){
    		//mysql_fetch_array() crée un tableau avec les lignes du résultat
    		$code=$rang['code'];
    		$nom=$rang['nom'];
    		echo "<option value=\"$code\">$nom</option>";
    	}
    	echo '</select>';
    Si tu a ete voir le code html que ca pond, ca doit etre un truc du genre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    <select name="pays">
    <option value="" selected></option>
    <option value="FR">France</option>
    <option value="UK">Grande Bretagne</option>
    // etc.
    </select>
    Dans un select, ce qui est envoye en post, c'est son nom avec comme valeur celle de l'element de la liste qui est selectionne. C'est a dire si tu choisis France, tu auras avec l'exemple ci dessus $_POST["pays"] qui vaudra "FR".

    De plus, $nom n'existe que dans ta boucle pour permettre de la generer, ecrire $pays = $nom ne fera que egaliser $pays avec le dernier element de la liste, puisque c'est le dernier qui a ete traite et donc qui reste en memoire.

  9. #9
    Membre confirmé
    Femme Profil pro
    Développeur informatique et création d'images animées et fixes de synthèse
    Inscrit en
    Juillet 2003
    Messages
    210
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Développeur informatique et création d'images animées et fixes de synthèse
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Juillet 2003
    Messages : 210
    Par défaut
    Chouette ! J'ai trouvé ! Je réponds à ma question précédente....
    Diablerie... Je crois que l'on a répondu en même temps....

    En fait, j'ai rajouté sur le formulaire 2, à la suite des assignations des autres variables

    M'enfin, je trouve un peu léger le fait que çà ne transparaisse même pas dans le code indiqué dans mon livre.... Je déclare donc que pour débuter en PHP/MySQL5, c'est très déroutant de deviner ce qu'il faut rajouter au code, et ou mettre telle partie du code ou telle autre pour que l'exercice fonctionne. Il va falloir que j'achète un autre bouquin pour pouvoir continuer mon apprentissage en faisant des exercices complets au code concis et très bien expliqué.... Et non pas partiellement.... Un tel bouquin existe t'il ?

  10. #10
    Membre très actif
    Avatar de keaton7
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    743
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 743
    Par défaut
    Ou alors tu mets ton abonnement Internet a profit et tu profites des nombreux et très bons cours en ligne gratuits

    http://php.developpez.com/cours/

    Je peux cependant comprendre qu'il soit plus facile de lire un livre qu'un ecran de pc, mais le gros avantage d'apprendre en ligne, c'est que tu peux tester immédiatement. En plus sur developpez, t'as une chance de choper l'auteur en cas de probleme ^^ (une toute petite mais c'est deja ca ...)

  11. #11
    Membre confirmé
    Femme Profil pro
    Développeur informatique et création d'images animées et fixes de synthèse
    Inscrit en
    Juillet 2003
    Messages
    210
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Développeur informatique et création d'images animées et fixes de synthèse
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Juillet 2003
    Messages : 210
    Par défaut
    C'est vrai, j'ai déjà téléchargé pas mal de bons cours depuis developpez.com.... Je remercie ici leurs auteurs sans qui je ne serais pas là où j'en suis actuellement, même si je ne suis pour l'instant pas très avancé....

    Je te remercie beaucoup pour ton aide salvatrice par rapport à ces deux formulaires qui me posaient souci....

  12. #12
    Membre très actif
    Avatar de keaton7
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    743
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 743
    Par défaut
    De rien, j'aime bien obtenir de l'aide quand j'en ai besoin aussi ^^

    Je pense que le meilleur moyen de progresser, c'est d'avoir un vrai projet PHP. C'est a dire un site web perso, une galerie d'images, ou un truc plus original de ton invention. Il faut etre confronte a des questions, et c'est seulement en y reflechissant et en tentant de les resoudres que tu evolueras, peu importe le nombre de pdf que tu as telecharge (il faut quand meme les lire, c'est important). Le forum est la pour t'aider a repondre aux questions encore un peu trop corcees mais n'hesite pas a avoir de l'ambition

    Pour te donner un exemple, actuellement, je bosse sur un CMS, et j'entends bien faire mieux que Joomla ! Tout ca pour dire que l'important n'est pas toujours d'atteindre ses objectifs (parce que tout seul, il y a peu de chance que je rattrape un projet libre de cette envergure) mais d'essayer et d'apprendre jusqu'a ce qu'on y soit au plus près. Comme dit le fameux adage, le chemin importe bien plus que le résultat.

  13. #13
    Membre confirmé
    Femme Profil pro
    Développeur informatique et création d'images animées et fixes de synthèse
    Inscrit en
    Juillet 2003
    Messages
    210
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Développeur informatique et création d'images animées et fixes de synthèse
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Juillet 2003
    Messages : 210
    Par défaut
    Bonjour keaton7 !

    Ourf ! Là le projet, c'est pour le boulot !

    Bon, finalement, j'ai toujours un problème... J'ai beau taper des données via les formulaires, rien ne rentre dans la base....
    Alors, j'ai essayé d'éplucher un peu le code.... Je me pose des questions par rapport au formulaire 2 ici :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
     
    $sql="SELECT clef FROM membres WHERE email='$email'";
    $resultat=@mysql_query($sql,$id_link);
    $nombre=mysql_num_rows($resultat);
    	if ($nombre>0){
    		$auth=1;
    	} else {
    		$auth=0;
    	}
     
    if (!$auth){
      $sql="INSERT INTO membres (prenom, code_postal, ville, pays, email) VALUES ('$prenom', '$code_postal', '$ville', '$pays', '$email')"; 
      @mysql_query($sql, $id_link);
    } else {
      include "inscription_p1.php";
      exit;
    }
    En faisant un petit test sur la valeur $auth, j'obtient 0....
    Mais au-dessous, je ne comprends pas bien : Quelle est la nature de $auth, je veux dire, à quoi sert le point d'exclamation ? C'est une protection de la variable ? C'est ce que j'ai compris d'après le peu que j'ai pu lire.... Bon toujours est-il qu'apparemment, celà teste l'existence de $auth.... Mais alors dans ce cas là, pourquoi la commande sql n'intègre pas ensuite les valeurs rentrées dans le formulaire..... ...

    Bon je vais continuer à chercher pour le fameux
    !$auth
    , mais j'ai déjà regardé la FAQ PHP, la convention générale de programmation, evidemment, mon livre n'en parle pas , le développement Web grand débutant et PHP, le guide des débutant pressés, c'est pas faute de ne pas chercher.....

    Bon je te remercie beaucoup d'avance, si tu veux bien encore t'occuper de mon cas désespéré

  14. #14
    Membre très actif
    Avatar de keaton7
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    743
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 743
    Par défaut
    Bonjour,

    d'abord, ton livre te conseille un truc tres vilain, le @ devant les mysql_query. Je ne sais pas si il te l'a dit, mais ce @ sert tout simplement eviter les messages d'erreurs. Il est donc normal que si ta requete ou ta synthaxe est incorrecte a ce niveau la, tu ne recoive strictement rien en retour.

    Pour info, activer / desactiver les erreurs est beaucoup plus propre de la facon suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    // Désactiver le rapport d'erreurs
    error_reporting(0);
     
    // OU
     
    // Reporte toutes les erreurs PHP (Voir l'historique des modifications)
    error_reporting(E_ALL);
    De cette façon tu as un contrôle sur TOUTES les erreurs.

    Commence donc pas remplacer les :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    @mysql_query($sql,$id_link);
    par :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $requete = mysql_query($sql,$id_link) or die("erreur mySQL :" . mysql_error());
    De cette facon, tu recupere la sortie de la requete (variable $requete), ce qui peut te permettre de faire éventuellement des conditions sur son bon déroulement par la suite :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    if($requete) {
    print "chouette !";
    } else {
    print "flute !";
    }
    D'autre part, cette exemple utilise la synthaxe or die (a noter que tu peux mettre la fonction que tu veux apres le or) qui va sortir la vraie erreur renvoyee par mysql grace a la fonction mysql_error(). Grace a cette facon de faire, tu auras les erreurs php ET les erreurs mysql. C'est quand meme plus facile a debugger qu'un programme qui ne dit rien ...

    Fait ca et on en saura deja plus sur tes erreurs .
    , il s'agit d'une variable que tu utilises pour debuger le champ d'adresse email. Regarde dans quel cas elle est declare. C'est vrai que son nom n'est pas franchement explicite, libre a toi de la renommer.

    Le "!" permet de specifier un contraire, c'est le cas en programmation dans beaucoup de langages. Par exmple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
     
    // Pour reprendre le cas precedent
    if(!$requete) {
    print "flute !";
    } else {
    print "chouette !";
    }
     
    // de facon generale tu peux l'utiliser sur les fonctions
     
    if (!mysql_query) ...
     
    if (!isset($maVariable)) ...
     
    ...
    Il est egalement utilise en tant qu'operateur pour dire "different de" comme ceci : !=

  15. #15
    Membre confirmé
    Femme Profil pro
    Développeur informatique et création d'images animées et fixes de synthèse
    Inscrit en
    Juillet 2003
    Messages
    210
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Développeur informatique et création d'images animées et fixes de synthèse
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Juillet 2003
    Messages : 210
    Par défaut
    Bon, j'ai résolu pas mal de problèmes depuis, mais j'ai encore quelque chose d'assez ennuyeux....
    Toutes les données saisies dans le formulaire 1 ne passent pas dans la requête, alors que celles du deuxième formulaire passent....
    Voilà le code du premier formulaire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
     
    <?php
    	include "commun/connexion.inc.php";
    ?>
     
    <html>
    	<head>
    		<title>Inscription</title>
    	</head>
    	<body>
    		Pour vous inscrire dans le club, nous avons besoin de quelques renseignements. Préparez un nom 
    		d'usage pour le club et un mot de passe de plus de 8 caractères dont vous vous souviendrez facilement.
    		<form action="inscription_p2.php" method="post" name="page_1">
    			<table cellspacing="2" cellpadding="2" border="0">
    				<tr>
    					<td>Votre prénom :</td>
    					<td><input type="text" name="prenom"></td>
    				</tr>
    				<tr>
    					<td>Votre adresse email :</td>
    					<td><input type="text" name="email"></td>
    				</tr>
    				<?php
    					//Ici, problème de variable : auth est inconnue
    					if (isset($auth)){
    						if ($auth == 1) {
    							echo "<p><font color=\"#FF0000\">
    							Vous êtes déjà membre et vous avez peut-être 
    							<a href=\"oubli.php\">oublié votre mot de passe</a>.</font></p>";
    						}
    					}	
    				?>
    				<tr>
    					<td>Votre code postal :</td>
    					<td><input type="text" name="code_postal"></td>
    				</tr>
    				<tr>
    					<td>La ville où vous vivez :</td>
    					<td><input type="text" name="ville"></td>
    				</tr>
    				<tr>
    					<td>Votre pays :</td>
    					<td>
    					<?php
    						//Création de la liste déroulante associée à la requête
    						$sql="SELECT * FROM pays ORDER BY nom";
    						$resultat=mysql_query($sql,$id_link) or die("erreur mySQL :" . mysql_error());
    						echo '<select name="pays">';
    						echo '<option value="" selected></option>';
     
    						///////////////// La première ligne vide ////////////////////
    						while ($rang=mysql_fetch_array($resultat)){
    							//mysql_fetch_array() crée un tableau avec les lignes du résultat
    							$code=$rang['code'];
    							$nom=$rang['nom'];
    							echo "<option value=\"$code\">$nom</option>";
    						}
    						echo '</select>';
    					?>
    					</td>
    				</tr>
    				<tr>
    					<td></td>
    					<td><input type="submit" name="valider" value="Je m'inscris"></td>
    				</tr>
    			</table>
    		</form>
    	</body>
    </html>
    et celui du deuxième :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
     
    <?php
    include "commun/connexion.inc.php";
     
    $prenom=$_POST['prenom'];
    $code_postal=$_POST['code_postal'];
    $ville=$_POST['ville'];
    $email=$_POST['email'];
    $pays=$_POST['pays'];
    $moment=date("d.m.y");
     
    $sql="SELECT clef FROM membres WHERE email='$email'";
    $resultat=mysql_query($sql,$id_link) or die("erreur mySQL :" . mysql_error());
    $nombre=mysql_num_rows($resultat);
    	if ($nombre>0){
    		$auth=1;
    	} else {
    		$auth=0;
    	}
     
    if (!$auth){
      $sql="INSERT INTO membres (prenom, code_postal, ville, pays, email, date_inscription) 
      VALUES ('$prenom', '$code_postal', '$ville', '$pays', '$email', '$moment')"; 
      $requete = mysql_query($sql,$id_link) or die("erreur mySQL :" . mysql_error());
    } else {
      include "inscription_p1.php";
      exit;
    }
    ?> 
     
    <html>
    	<HEAD>
    		<TITLE>Inscription</TITLE>
    	</HEAD>
    	<BODY>
    		Veuillez maintenant choisir le nom d'usage que vous porterez dans le
    		club et le mot de passe pour y accéder. Vous pourrez ainsi rencontrer
    		d'autres membres et modifier votre profil, voire le supprimer éventuellement.
     
    		<FORM action="traitement_id.php" method="POST" name="page_2">
    			<table cellspacing="2" cellpadding="2" border="0">
    				<tr>
    					<td>Votre surnom</td>
    					<td><input type ="text" name="nom_usage"></td>
    				</tr>
    				<?php
    					if (isset($auth)){
    						if ($auth == 2){
    							echo "<p><font color=\"#FF0000\">Votre nom d'usage existe déjà dans
    							la base de données. Soit vous êtes déjà membre et vous avez
    							<a href=\"oubli.php\">oublié votre mot de passe</a>. Soit il s'agit
    							d'une simple coïncidence, auquel cas, entrez un nouveau nom d'usage...
    							</font></p>";
    						}
    					}
    				?>
    				<tr>
    					<td>Votre mot de passe</td>
    					<td><input type ="password" name="mot_passe"></td>
    				</tr>
    				<tr>
    					<td>Retapez votre mot de passe</td>
    					<td><input type ="password" name="mot_passebis"></td>
    				</tr>
    				<tr>
    					<td>Votre question secrète en cas d'oubli</td>
    					<td><input type ="text" name="question" 
    						value="Quel est le nom de jeune fille de votre mère ?" size="50"></td>
    				</tr>
    				<tr>
    					<td>Votre réponse</td>
    					<td><input type ="password" name="reponse"></td>
    				</tr>
    				<tr>
    					<td></td>
    					<td><input type="submit" name="valider" value="Je valide"></td>
    				</tr>
    			</table>
    		</FORM>
    	</BODY>
    </html>
    Je ne vois pas pourquoi MySQL n'enregistre pas toutes les données...

  16. #16
    Membre très actif
    Avatar de keaton7
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    743
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 743
    Par défaut
    C'est a dire ne passe pas, c'est quoi l'erreur ?

  17. #17
    Membre confirmé
    Femme Profil pro
    Développeur informatique et création d'images animées et fixes de synthèse
    Inscrit en
    Juillet 2003
    Messages
    210
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Développeur informatique et création d'images animées et fixes de synthèse
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Juillet 2003
    Messages : 210
    Par défaut
    Je m'exprime mal.... Milles pardons !

    Quand je dis ne passent pas, celà signifie que les valeurs des variables rentrées dans le formulaire n'apparaissent pas à l'affichage de la table incriminée (en l'occurrence "membres") ou ne sont pas enregistrées dans la table, alors que celles du deuxième formulaire sont enregistrées dans la table...

    Justement, en plus, il n'y a aucun message d'erreur rendu.
    J'ai donc fouiné le code.... Depuis, il faut que je t'informe que j'ai un troisième formulaire, traitement_id.php dont voici le code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
     
    <?php
    include "commun/connexion.inc.php";
     
    $nom_usage=$_POST['nom_usage'];
    $mot_passe=$_POST['mot_passe'];
    $mot_passebis=$_POST['mot_passebis'];
    $question=$_POST['question'];
    $reponse=strtolower($_POST['reponse']);
     
    //$sql="DELETE FROM membres WHERE nom_usage=''";
    //$requete = mysql_query($sql,$id_link) or die("erreur mySQL :" . mysql_error());
     
    $sql="SELECT clef FROM membres WHERE nom_usage='$nom_usage'";
    $resultat=mysql_query($sql,$id_link) or die("erreur mySQL :" . mysql_error());
    $nombre=mysql_num_rows($resultat);
    if ($nombre>0){
    	$auth=2;
    } else {
    	$auth=0;
    }
     
    if (!$auth){
    	$sql="INSERT INTO membres (nom_usage, mot_passe, mot_passebis, question, reponse)
    	VALUES ('$nom_usage', '$mot_passe', '$mot_passebis', '$question', '$reponse')";
    	$requete = mysql_query($sql,$id_link) or die("erreur mySQL :" . mysql_error());
     
    } else {
    	include "inscription_p2.php";
    	exit;
    }
    ?>
     
    <html>
    	<HEAD>
    		<TITLE>Inscription</TITLE>
    	</HEAD>
    	<BODY>
    		Merci de votre inscription et bienvenue dans le Club des Bons Vivants.
    		Nous venons de vous envoyer un courriel de confirmation avec votre
    		nom d'usage et votre mot de passe.
    		<CENTER><i>Le webmestre</i></CENTER>
    	</BODY>
    </html>
    Il me semble que la boulette vient de la requête que j'ai mis en commentaire qui se trouve juste sous l'assignation des valeurs des variables en haut du formulaire. Et bien depuis que j'ai mis cette requête en commentaire, ce coup-ci, toutes les données sont enregistrées dans la table mais sous forme de 2 enregistrements avec une clé différente.... Mais, pour quoi créé t'il 2 enregistrements pour un seul utilisateur...

  18. #18
    Membre très actif
    Avatar de keaton7
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    743
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 743
    Par défaut
    Si tu veux ajouter des champs dans une ligne existante, car cree par une precedente requete, il va te falloir utiliser une reuqute UPDATE, et non INSERT.

    INSERT sert a ajouter une nouvelle ligne, UPDATE a en modifier une existante, je pense que l'erreur vient de la.

    http://dev.mysql.com/doc/refman/5.0/fr/update.html

  19. #19
    Membre confirmé
    Femme Profil pro
    Développeur informatique et création d'images animées et fixes de synthèse
    Inscrit en
    Juillet 2003
    Messages
    210
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Développeur informatique et création d'images animées et fixes de synthèse
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Juillet 2003
    Messages : 210
    Par défaut
    Oulà, çà, c'était sous mon nez en plus ! Je suis impardonnable... Je vais rectifier le tir de ce pas.... Merci Beaucoup !

  20. #20
    Membre confirmé
    Femme Profil pro
    Développeur informatique et création d'images animées et fixes de synthèse
    Inscrit en
    Juillet 2003
    Messages
    210
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Développeur informatique et création d'images animées et fixes de synthèse
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Juillet 2003
    Messages : 210
    Par défaut
    Hello keaton7 !

    Bon, selon tes bons conseils, à la place du INSERT, j'ai voulu créer un UPDATE, mais pour ce faire, il m'a fallu récupérer la valeur de la clé du dernier enregistrement créé. C'est là que j'ai découvert la fabuleuse fonction mysql_insert_id.... J'ai donc saisi ceci en haut du formulaire 2 pour récupérer la valeur d ema clé unique :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    if (!$auth){
      $sql="INSERT INTO membres (prenom, code_postal, ville, pays, email, date_inscription) 
      VALUES ('$prenom', '$code_postal', '$ville', '$pays', '$email', '$moment')"; 
      $requete = mysql_query($sql,$id_link) or die("erreur mySQL :" . mysql_error());
      //printf("Le dernier ID inséré dans membres est le id %d\n", mysql_insert_id());
      $clef=mysql_insert_id();
      echo $clef;
    } else {
      include "inscription_p1.php";
      exit;
    }
    Bon, çà, çà fonctionne.
    C'est dans le formulaire traitement_id qu'il me signale qu'il ne connaît pas clef :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    if (!$auth){
    	$sql="UPDATE membres 
    	SET nom_usage = '$nom_usage', 
    	mot_passe = '$mot_passe', 
    	mot_passebis = '$mot_passebis', 
    	question = '$question', 
    	reponse = '$reponse' 
    	WHERE clef = '$clef'";
    	$requete = mysql_query($sql,$id_link) or die("erreur mySQL :" . mysql_error());
    Voilà le message d'erreur : Notice: Undefined variable: clef in C:\Program Files\EasyPHP 3.0\www\BonsVivants\traitement_id.php on line 29
    erreur mySQL :Erreur de syntaxe près de 'WHERE clef = ''' à la ligne 7

    Je ne vois pas où est l'erreur... je vais chercher encore....

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. Base de données Access par un formulaire php
    Par PHPDOS dans le forum PHP & Base de données
    Réponses: 1
    Dernier message: 18/03/2009, 13h55
  2. Base de données exemple
    Par hicham106 dans le forum Installation
    Réponses: 1
    Dernier message: 14/11/2008, 10h05
  3. [Conception] connexion de deux bases de données dans une page en php
    Par leclone dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 13/04/2007, 14h59
  4. [ODBC] [DB2] Problème de connexion à une base de données sur un as400 via PHP sous Linux
    Par boo64 dans le forum PHP & Base de données
    Réponses: 16
    Dernier message: 19/04/2006, 09h51
  5. [oracle 9i]base de donnée exemple?
    Par Melvine dans le forum Oracle
    Réponses: 2
    Dernier message: 08/02/2006, 14h49

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo