Insertion des données dans la base des données par php
jack444
Messages postés
85
Date d'inscription
Statut
Membre
Dernière intervention
-
JooS Messages postés 2468 Date d'inscription Statut Membre Dernière intervention -
JooS Messages postés 2468 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
Je vais tester la création d'un espace d'inscrit avec php alors j'ai fait deux fichiers :
1iére fichier qui s'appelle formulaire.html et qui contient le code suivant :
<html>
<head>
<title>formulaire</title>
<head>
<body>
Pour vous inscrire :<br>
<form method="post" action="insert.php">
Login : <input type="text" name="login"><br>
Mot de passe : <input type="password" name="pass"><br>
<input type="submit" name="submit" value="Envoyer">
</form>
</body>
</html>
2iéme fichier qui s'appelle insert.php et contient le code suivant :
<?php
$connect = mysql_connect("localhost","root","") or die ("erreur de connexion");
if(!$connect) die("Cannot connect to database");
if(!mysql_select_db("database")) die("Cannot find database");
$login = $_POST['login'];
$pass = $_POST['pass'];
$sql="INSERT INTO 'users' ('id','login','pass') VALUES (NULL,'login','pass')";
$requete = mysql_query($sql, $connect) or die( mysql_error() ) ;
if($requete)
{
echo("L'insertion a été correctement effectuée") ;
}
else
{
echo("L'insertion à échouée") ;
}
mysql_close($connect);
?>
et voila le code sql de la base de donnée qui s'appelle database :
-- phpMyAdmin SQL Dump
-- version 3.5.1
-- https://www.phpmyadmin.net/
Je vais tester la création d'un espace d'inscrit avec php alors j'ai fait deux fichiers :
1iére fichier qui s'appelle formulaire.html et qui contient le code suivant :
<html>
<head>
<title>formulaire</title>
<head>
<body>
Pour vous inscrire :<br>
<form method="post" action="insert.php">
Login : <input type="text" name="login"><br>
Mot de passe : <input type="password" name="pass"><br>
<input type="submit" name="submit" value="Envoyer">
</form>
</body>
</html>
2iéme fichier qui s'appelle insert.php et contient le code suivant :
<?php
$connect = mysql_connect("localhost","root","") or die ("erreur de connexion");
if(!$connect) die("Cannot connect to database");
if(!mysql_select_db("database")) die("Cannot find database");
$login = $_POST['login'];
$pass = $_POST['pass'];
$sql="INSERT INTO 'users' ('id','login','pass') VALUES (NULL,'login','pass')";
$requete = mysql_query($sql, $connect) or die( mysql_error() ) ;
if($requete)
{
echo("L'insertion a été correctement effectuée") ;
}
else
{
echo("L'insertion à échouée") ;
}
mysql_close($connect);
?>
et voila le code sql de la base de donnée qui s'appelle database :
-- phpMyAdmin SQL Dump
-- version 3.5.1
-- https://www.phpmyadmin.net/
A voir également:
- Insertion des données dans la base des données par php
- Fuite données maif - Guide
- Trier des données excel - Guide
- Sauvegarde des données - Guide
- Supprimer les données de navigation - Guide
- Excel validation des données liste - Guide
8 réponses
Bonsoir
Je suppose qu'il te remplit tes login de 'login' et tes pass de 'pass' car c'est ce que tu lui demandes. Tu insères les textes login et pass, pas les variables.
Remplace
Je suppose qu'il te remplit tes login de 'login' et tes pass de 'pass' car c'est ce que tu lui demandes. Tu insères les textes login et pass, pas les variables.
Remplace
$sql="INSERT INTO 'users' ('id','login','pass') VALUES (NULL,'login','pass')";par
$sql="INSERT INTO 'users' ('id','login','pass') VALUES (NULL,'$login','$pass')";
la requéte exacte qui marche sur phpmyadmin c 'est à cette formeNon, certainement pas. il y avait des accents graves ` (Alt Gr 7) autour des nopms de tables et de champs (users,login et pass) mais certainement pas des apostrophes ' . Tu ne l'as poas remarqué, mais qund tu recopie un accent grave sur CCM, il le transforme en apostrophe ! Dans ce cas, l'erreur que tu indiques à ton message #6 est parfaitement normale.
INSERT INTO 'users' ('login','pass') VALUES ('valeur','valeur');
Le plus simple est certainement de supprimer les apostrophes (attention ! pas autour des VALUES) :
$sql="INSERT INTO users (id,login,pass) VALUES (NULL,'$login','$pass')";
Qu'est-ce qui s'affiche quand tu envoies ton formulaire ? As-tu un message d'erreur ?
Qu'affiche-t-il ? Rien du tout ? "L'insertion a été correctement effectuée" ? "L'insertion à échouée" ?
Tel que ton code est écrit dans ton premier message, insert.php doit obligatoirement t'afficher quelque chose.
Est-ce le bon code ? TOUT le code ?
Peux-tu ajouter echou 'coucou1'; aussitôt après le <?php , et echo 'coucou2'; echo 'coucou3';... à plusieurs endroits de insert.php pour voir ce qui passe et ce qui ne passe pas ?
Est-ce le bon code ? TOUT le code ?
Peux-tu ajouter echou 'coucou1'; aussitôt après le <?php , et echo 'coucou2'; echo 'coucou3';... à plusieurs endroits de insert.php pour voir ce qui passe et ce qui ne passe pas ?
à l'exécution de la page insert.php il m'affiche ceci :
coucou
( ! ) Notice: Undefined index: login in C:\wamp\www\inscrit\insert.php on line 7
Call Stack
# Time Memory Function Location
1 0.0140 141440 {main}( ) ..\insert.php:0
( ! ) Notice: Undefined index: pass in C:\wamp\www\inscrit\insert.php on line 8
Call Stack
# Time Memory Function Location
1 0.0140 141440 {main}( ) ..\insert.php:0
Column count doesn't match value count at row 1
il m'affiche le message créer et les deux erreurs
mais quand j'exécute le fichier formulaire.html il m'affiche rien dans insert.php et dans la base de donnée il n'ajoute rien
coucou
( ! ) Notice: Undefined index: login in C:\wamp\www\inscrit\insert.php on line 7
Call Stack
# Time Memory Function Location
1 0.0140 141440 {main}( ) ..\insert.php:0
( ! ) Notice: Undefined index: pass in C:\wamp\www\inscrit\insert.php on line 8
Call Stack
# Time Memory Function Location
1 0.0140 141440 {main}( ) ..\insert.php:0
Column count doesn't match value count at row 1
il m'affiche le message créer et les deux erreurs
mais quand j'exécute le fichier formulaire.html il m'affiche rien dans insert.php et dans la base de donnée il n'ajoute rien
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Je crois que je commence à comprendre.
Comment fais-tu pour lancer formulaire.html ? Tu double-cliques dessus depuis l'explorateur windows ? Ou tu tapes une url genre 127.0.0.1/formulaire.html dans la barre du navigateur ?
Comment fais-tu pour lancer formulaire.html ? Tu double-cliques dessus depuis l'explorateur windows ? Ou tu tapes une url genre 127.0.0.1/formulaire.html dans la barre du navigateur ?
Alors c'est ça ton problème.
Comment as-tu fait pour ouvrir \insert.php et obtenir les messages d'erreur que tu as eus ? Procède de la même manière pour ouvrir formulaire.html
Comment as-tu fait pour ouvrir \insert.php et obtenir les messages d'erreur que tu as eus ? Procède de la même manière pour ouvrir formulaire.html
Ca fonctionne mais dans l'affichage en phpmyadmin il m'a affiché $login et $pass dans les colonnes de login et pass donc il n'a pas affiché les valeurs que je l'ai insérer à travers formulaire.html
et dans insert php il m'a affiché ceci:
coucouColumn count doesn't match value count at row 1
coucou c'est le message qui j'ai fait mais j'ai pas compris ce message d'erreur :
Column count doesn't match value count at row 1
et dans insert php il m'a affiché ceci:
coucouColumn count doesn't match value count at row 1
coucou c'est le message qui j'ai fait mais j'ai pas compris ce message d'erreur :
Column count doesn't match value count at row 1
Dans ta requête INSERT, tu as mis les champs à insérer et ensuite tu as mis des VALUES pour ces champs.
Le message signifie que tu n'as pas le même nombre de champs (columns) que de values.
Peux-tu montrer ta requête ( la ligne complète $sql=... )
Si tu vois $login et $pass au lieu des textes que tu avais tappés, c'est que tu as bricolé les ' et les " sans savoir ce que tu faisais, car d'après le code que tu donnes au départ, ce sont bien les valeurs que tu devrais avoir.
Le message signifie que tu n'as pas le même nombre de champs (columns) que de values.
Peux-tu montrer ta requête ( la ligne complète $sql=... )
Si tu vois $login et $pass au lieu des textes que tu avais tappés, c'est que tu as bricolé les ' et les " sans savoir ce que tu faisais, car d'après le code que tu donnes au départ, ce sont bien les valeurs que tu devrais avoir.
Le null n'est pas obligatoire (sauf si tu veux communiquer la valeur de chaque colonne).
Dans ton cas, id est un champs dont la valeur est automatique, donc pas la peine de l'ajouter a la requête.
Le message d'erreur voulait dire que le nombre de valeurs (communiquées entre les parenthèses) est différent de celui des colonnes de la table, et c'est normal, puisque tu possèdes trois champs, et tu n'a désigné des valeurs que pour 2 de ces champs.
Dans ton cas, id est un champs dont la valeur est automatique, donc pas la peine de l'ajouter a la requête.
$sql = "INSERT INTO users (login, pass) VALUES ('$login', '$pass')";
Le message d'erreur voulait dire que le nombre de valeurs (communiquées entre les parenthèses) est différent de celui des colonnes de la table, et c'est normal, puisque tu possèdes trois champs, et tu n'a désigné des valeurs que pour 2 de ces champs.
Exécute cette requête directement a travers phpMyAdmin.
INSERT INTO 'users' ('login', 'pass') VALUES ('utilisateur', 'mot de passe');
et il m'a affiché ce message d'erreur :
#1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ''users' ('login', 'pass') VALUES ('utilisateur', 'mot de passe')' at line 1