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

Langage PHP Discussion :

enregistrement dans une base de données


Sujet :

Langage PHP

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    19
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2010
    Messages : 19
    Points : 10
    Points
    10
    Par défaut enregistrement dans une base de données
    Boniour,

    Je souhaite enregistrer un login et un mot de passe dans une base de données mais au lieu d'enregistrer les informations il enregistre des lignes vides. Je ne comprends pas d'où vient le problème. Voici mon code:
    La page index qui me dirige vers la création d'un nouveau compte:

    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
    <?php
    session_start();
     
    if (!isset($_SESSION['nom'])) 
    {			
    	require 'nouveauCompte.php';
    }
    else if (isset($_SESSION['nom']) && ($_SESSION['status'] == "compte"))
    {
    	require 'login.php';
    }
    else if (isset($_SESSION['nom']) && ($_SESSION['status'] == "login"))
    {		
    	$_SESSION['status'] = "liste";
    	require 'liste.php';
    }
    else if (isset($_SESSION['nom']) && ($_SESSION['status'] == "liste"))
    {
    	require 'formulaire.php';
    }
    ?>
    et la page de création du compte:

    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
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    <?php
    session_start();
    $_SESSION['status'] = "compte";
    $_SESSION['nom'] = "";
    ?>
     
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
     
    <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" >
     
       <head>
     
           <title>S'enregistrer</title>
     
           <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
    	<script language="javascript">	
    	function verif(){    		
        		if(document.getElementById('login').value == "" || document.getElementById('motDePasse').value == ""){
            		alert ('Vous avez oublie de saisir un champ!!!!');
            		return false;
        			}
    		return true;
    		}
    	</script>	
     
       </head>
     
       <body>
     
    	<form method="post" action="index.php" onsubmit="return verif()">
     
    		<table>
     
    			<tr>
     
    				<th colspan=2>Creer un nouveau compte</th>				
     
    			</tr>			
    			<tr>
     
    				<td>Login</td>
     
    				<td>
     
    				<input type=text name="login">
     
    				</td>
     
    			</tr>
     
    			<tr>
     
    				<td>Mot de passe</td>
     
    				<td>
     
    				<input type=password name="motDePasse">
     
    				</td>
     
    			</tr>
     
    			<tr>
     
    				<td>
     
    				<input type="submit" value="Valider">
     
    				</td>
     
    				<td>
     
    				<input type="reset" />
     
    				</td>
     
    			</tr>
    			<tr>    
     
    				<td colspan=2><a href="index.php">se connecter</a></td>				
     
    			</tr>			
     
    		</table>
    		<?php
    			mysql_connect("localhost","root","sim123");
     
    			mysql_select_db("test");
    			if (isset($_POST['login']) && $_POST['login']!= null)	
     
    				$login=$_POST['login'];
     
    			else $login=NULL;		
     
    			if (isset($_POST['motDePasse']) && $_POST['motDePasse']!= null)
     
    				$motDePasse=$_POST['motDePasse'];
     
    			else $motDePasse=NULL;
    			$date=date("Y-m-d");
    			mysql_query("INSERT INTO compte_utilisateur VALUES('','$login','$motDePasse','$date')");			
    			mysql_close();
    		?>	
     
    	</form>
     
       </body>
     
    </html>

  2. #2
    Membre actif Avatar de speedy_g
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    213
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : Belgique

    Informations forums :
    Inscription : Avril 2007
    Messages : 213
    Points : 242
    Points
    242
    Par défaut
    Ce serait pas une question de syntaxe de la requête d'insertion ?

    "insert into table (col1,col2) values ( val1,val2)"
    plutot que
    "insert into table values (val1,val2)"

  3. #3
    Membre expert Avatar de Fench
    Homme Profil pro
    Chercheur en informatique
    Inscrit en
    Mai 2002
    Messages
    2 353
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Groenland

    Informations professionnelles :
    Activité : Chercheur en informatique
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Mai 2002
    Messages : 2 353
    Points : 3 390
    Points
    3 390
    Par défaut
    C'est surtout aussi que pour la première passe login et motDePasse seront null et tu les insert quand même.

    ....

  4. #4
    Membre à l'essai
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    19
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2010
    Messages : 19
    Points : 10
    Points
    10
    Par défaut
    Non la syntaxe est bonne car j'ai déjà fait des enregistrements comme ça. Comment ça ils sont nuls et je les insère quand même @FRENCH?

  5. #5
    Membre expert Avatar de Fench
    Homme Profil pro
    Chercheur en informatique
    Inscrit en
    Mai 2002
    Messages
    2 353
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Groenland

    Informations professionnelles :
    Activité : Chercheur en informatique
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Mai 2002
    Messages : 2 353
    Points : 3 390
    Points
    3 390
    Par défaut
    mais au lieu d'enregistrer les informations il enregistre des lignes vides
    C ce que je voulais dire

    Regardes bien ton code ... au premier affichage du formulaire dedans tu as une partie php qui traîte de l'insertion des données et même si il y a aucunes données, il y a qd même une insertion.

    Ou alors j'ai mal vu, désolé

  6. #6
    Membre à l'essai
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    19
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2010
    Messages : 19
    Points : 10
    Points
    10
    Par défaut
    Je ne vois pas ce que tu veux dire Fench parce que le seul endroit où je traite l'insertion de données c'est à la fin du formulaire avec la requête insert into...
    Pourrais-tu être plus précis en citant du code par exemple? Merci

  7. #7
    Membre expert Avatar de Fench
    Homme Profil pro
    Chercheur en informatique
    Inscrit en
    Mai 2002
    Messages
    2 353
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Groenland

    Informations professionnelles :
    Activité : Chercheur en informatique
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Mai 2002
    Messages : 2 353
    Points : 3 390
    Points
    3 390
    Par défaut
    Je vais essayer

    Lorsque tu demandes la page au serveur. Celui ci va traiter et convertir le php pour te donner du html.
    Or, lors de la création du formulaire, il créé donc ton tableau avec les boutons, input, lien PUIS il arrive sur PHP, là, il traite ton code tel que:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    if (isset($_POST['login']) && $_POST['login']!= null)	
       $login=$_POST['login'];
    else $login=NULL;
    Donc $login = NULL puisque c premier affichage du formulaire et les $_POST sont pas isset
    De même avec $motDePasse

    Ensuite vient l'INSERT
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    mysql_query("INSERT INTO compte_utilisateur VALUES('','$login','$motDePasse','$date')");
    là, il va t'insérer une ligne vide
    SAUF si tu as défini des champs NOT NULL
    Donc voilà ma question, est ce plus clair ?

  8. #8
    Membre à l'essai
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    19
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2010
    Messages : 19
    Points : 10
    Points
    10
    Par défaut
    je vois donc il faudrait faire quoi pour qu'il insère les données que je veux plutôt que des lignes vides? Mettre les champs NOT NULL? Et dans ce cas c'est où qu'on le fait?

  9. #9
    Membre expert Avatar de Fench
    Homme Profil pro
    Chercheur en informatique
    Inscrit en
    Mai 2002
    Messages
    2 353
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Groenland

    Informations professionnelles :
    Activité : Chercheur en informatique
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Mai 2002
    Messages : 2 353
    Points : 3 390
    Points
    3 390
    Par défaut
    Remplaces 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
     
    		<?php
    			mysql_connect("localhost","root","sim123");
     
    			mysql_select_db("test");
    			if (isset($_POST['login']) && $_POST['login']!= null)	
     
    				$login=$_POST['login'];
     
    			else $login=NULL;		
     
    			if (isset($_POST['motDePasse']) && $_POST['motDePasse']!= null)
     
    				$motDePasse=$_POST['motDePasse'];
     
    			else $motDePasse=NULL;
    			$date=date("Y-m-d");
    			mysql_query("INSERT INTO compte_utilisateur VALUES('','$login','$motDePasse','$date')");			
    			mysql_close();
    		?>
    PAR:
    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
        if ( (isset($_POST['login']) && $_POST['login']!= null) &&	
             (isset($_POST['motDePasse']) && $_POST['motDePasse']!= null) ) {
     
             mysql_connect("localhost","root","sim123");
             mysql_select_db("test");
     
            $date=date("Y-m-d");
             mysql_query("INSERT INTO compte_utilisateur VALUES 
                             ('','$_POST['login']','$_POST['motDePasse']','$date')"); 
             mysql_close();
        }
    ?>
    Comprends tu ?

  10. #10
    Membre à l'essai
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    19
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2010
    Messages : 19
    Points : 10
    Points
    10
    Par défaut
    Je comprends oui sauf que quand je fais ca ca m'affiche un message d'erreur:
    Parse error: syntax error, unexpected T_ENCAPSED_AND_WHITESPACE, expecting T_STRING or T_VARIABLE or T_NUM_STRING in /home/.../nouveauCompte.php on line 61

  11. #11
    Membre expert Avatar de Fench
    Homme Profil pro
    Chercheur en informatique
    Inscrit en
    Mai 2002
    Messages
    2 353
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Groenland

    Informations professionnelles :
    Activité : Chercheur en informatique
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Mai 2002
    Messages : 2 353
    Points : 3 390
    Points
    3 390
    Par défaut
    ligne 61, c laquelle ?

  12. #12
    Membre à l'essai
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    19
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2010
    Messages : 19
    Points : 10
    Points
    10
    Par défaut
    c'est la ligne suivante:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    mysql_query("INSERT INTO compte_utilisateur VALUES 
                             ('','$_POST['login']','$_POST['motDePasse']','$date')");

  13. #13
    Membre expert Avatar de Fench
    Homme Profil pro
    Chercheur en informatique
    Inscrit en
    Mai 2002
    Messages
    2 353
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Groenland

    Informations professionnelles :
    Activité : Chercheur en informatique
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Mai 2002
    Messages : 2 353
    Points : 3 390
    Points
    3 390
    Par défaut
    Oui alors c peut être l'index de ta table qui merdouilllllll

    Essayes:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
     
    mysql_query("INSERT INTO compte_utilisateur ( NomDuChampLogin, NomDuChampMotdePasse, nomDuChampDate ) VALUES 
                    ( '$_POST['login']', '$_POST['motDePasse']', '$date' )");

  14. #14
    Membre actif Avatar de BenoitDenis
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    536
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Sarthe (Pays de la Loire)

    Informations forums :
    Inscription : Avril 2005
    Messages : 536
    Points : 237
    Points
    237
    Par défaut
    non c'est un proble de ' dans des "

    mysql_query("INSERT INTO compte_utilisateur VALUES
    ('','$_POST[login]','$_POST[motDePasse]','$date')"
    );

    Voila, avec ca ca devrait marcher

  15. #15
    Membre expert Avatar de Fench
    Homme Profil pro
    Chercheur en informatique
    Inscrit en
    Mai 2002
    Messages
    2 353
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Groenland

    Informations professionnelles :
    Activité : Chercheur en informatique
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Mai 2002
    Messages : 2 353
    Points : 3 390
    Points
    3 390
    Par défaut
    Euuuuhhhh, sans te froisser

    C'est la ligne qu'il avait à la base avec l'erreur sans les erreurs que tu as apporter avec les champs du genre: $_POST[login]

  16. #16
    Membre à l'essai
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    19
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2010
    Messages : 19
    Points : 10
    Points
    10
    Par défaut
    Ça marche merci mais ça n'enregistre rien dans la base de données, moi je voudrai qu'il enregistre le login et le mot de passe.

  17. #17
    Membre actif Avatar de BenoitDenis
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    536
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Sarthe (Pays de la Loire)

    Informations forums :
    Inscription : Avril 2005
    Messages : 536
    Points : 237
    Points
    237
    Par défaut
    Moi je dit juste que $_POST['.....'] à l'intérieur de "...." ca fait une erreur de parse...

  18. #18
    Membre actif Avatar de BenoitDenis
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    536
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Sarthe (Pays de la Loire)

    Informations forums :
    Inscription : Avril 2005
    Messages : 536
    Points : 237
    Points
    237
    Par défaut
    Citation Envoyé par zaki chan Voir le message
    Ça marche merci mais ça n'enregistre rien dans la base de données, moi je voudrai qu'il enregistre le login et le mot de passe.
    Si les champs de saisie de formulaire sont remplis c'est impossible avec le code que t'as donné Fench que ton enregistrement sql soit vide

  19. #19
    Membre expert Avatar de Fench
    Homme Profil pro
    Chercheur en informatique
    Inscrit en
    Mai 2002
    Messages
    2 353
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Groenland

    Informations professionnelles :
    Activité : Chercheur en informatique
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Mai 2002
    Messages : 2 353
    Points : 3 390
    Points
    3 390
    Par défaut
    Avec le code que j'ai mis, c ce que j'utilise dans mes applications !
    L'index se gére automatiquement.

    Maintenant, je passe par une variable donc effectivement j'ai pas les " " en plus mais je trouve qd même bizzare ton histoire de $_POST[NomChamp] dans ce cas là, faudrait que je regarde ça de plus près

    MAIS en conclusion, je ne sais pas la dernière version de cette requête

  20. #20
    Membre actif Avatar de BenoitDenis
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    536
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Sarthe (Pays de la Loire)

    Informations forums :
    Inscription : Avril 2005
    Messages : 536
    Points : 237
    Points
    237
    Par défaut
    bah je crois qu'on code de la meme facon...

    soit tu fait

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    $var1 = $_POST['var1'];
    $var2 = $_POST['var2'];
    $sql = "INSERT INTO nom_table VALUES ('$var1','$var2')";
    ou alors

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    $sql = "INSERT INTO nom_table VALUES ('$_POST[var1]','$_POST[var2]')";

Discussions similaires

  1. MàJ/ajout d'un enregistrement dans une base de données mySQL
    Par BMT_Benoît dans le forum Windows Forms
    Réponses: 2
    Dernier message: 21/08/2007, 08h02
  2. Réponses: 10
    Dernier message: 17/03/2007, 14h05
  3. enregistrer dans une base de données
    Par liverbird dans le forum C++Builder
    Réponses: 33
    Dernier message: 12/07/2006, 19h50
  4. [MySQL] Enregistrer dans une base de données à partir d'une liste déroulante
    Par snakejl dans le forum PHP & Base de données
    Réponses: 12
    Dernier message: 17/05/2006, 16h32
  5. inscription via le web et enregistrement dans une base de données
    Par titoenis dans le forum Balisage (X)HTML et validation W3C
    Réponses: 11
    Dernier message: 17/05/2006, 09h20

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