Insertion des données dans la base des données par php

Fermé
jack444 Messages postés 86 Date d'inscription samedi 9 octobre 2010 Statut Membre Dernière intervention 30 septembre 2021 - 3 oct. 2013 à 20:09
JooS Messages postés 2465 Date d'inscription mardi 22 janvier 2008 Statut Membre Dernière intervention 8 juin 2016 - 5 oct. 2013 à 14:30
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/

8 réponses

Utilisateur anonyme
3 oct. 2013 à 20:42
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
$sql="INSERT INTO 'users' ('id','login','pass') VALUES (NULL,'login','pass')"; 
par
$sql="INSERT INTO 'users' ('id','login','pass') VALUES (NULL,'$login','$pass')"; 
0
jack444 Messages postés 86 Date d'inscription samedi 9 octobre 2010 Statut Membre Dernière intervention 30 septembre 2021 2
3 oct. 2013 à 22:18
J'ai essayé cette solution mais sans résultat aucun ajout des données insérer dans la base de donnée .
0
JooS Messages postés 2465 Date d'inscription mardi 22 janvier 2008 Statut Membre Dernière intervention 8 juin 2016 228
Modifié par JooS le 3/10/2013 à 22:26
Essayes en supprimant la partie de l'identifiant.

$sql = "INSERT INTO 'users' ('login', 'pass') VALUES ('$login', '$pass')";
0
jack444 Messages postés 86 Date d'inscription samedi 9 octobre 2010 Statut Membre Dernière intervention 30 septembre 2021 2
3 oct. 2013 à 23:31
J'ai essayé votre solution JooS mais ça n'a pas marché
0
JooS Messages postés 2465 Date d'inscription mardi 22 janvier 2008 Statut Membre Dernière intervention 8 juin 2016 228
4 oct. 2013 à 00:50
Est ce qu'il y a des messages d'erreur ?!

Exécute cette requête directement a travers phpMyAdmin.
INSERT INTO 'users' ('login', 'pass') VALUES ('utilisateur', 'mot de passe');
0
jack444 Messages postés 86 Date d'inscription samedi 9 octobre 2010 Statut Membre Dernière intervention 30 septembre 2021 2
4 oct. 2013 à 01:03
J'ai exécuté cette 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
0
Utilisateur anonyme
4 oct. 2013 à 08:49
la requéte exacte qui marche sur phpmyadmin c 'est à cette forme 
INSERT INTO 'users' ('login','pass') VALUES ('valeur','valeur');
Non, 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.
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 ?
0
jack444 Messages postés 86 Date d'inscription samedi 9 octobre 2010 Statut Membre Dernière intervention 30 septembre 2021 2
4 oct. 2013 à 10:02
J'ai testé comme tu l'as dit mais il ne fonctionne pas et il n'affiche aucun message d'erreur
0
Utilisateur anonyme
4 oct. 2013 à 10:09
Qu'affiche-t-il ? Rien du tout ? "L'insertion a été correctement effectuée" ? "L'insertion à échouée" ?
0
jack444 Messages postés 86 Date d'inscription samedi 9 octobre 2010 Statut Membre Dernière intervention 30 septembre 2021 2
4 oct. 2013 à 10:33
Il m'affiche rien dans la page insert.php rien de tout cette page est blanche
0
Utilisateur anonyme
4 oct. 2013 à 10:39
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 ?
0
jack444 Messages postés 86 Date d'inscription samedi 9 octobre 2010 Statut Membre Dernière intervention 30 septembre 2021 2
4 oct. 2013 à 11:01
à 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
0

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 ?
0
jack444 Messages postés 86 Date d'inscription samedi 9 octobre 2010 Statut Membre Dernière intervention 30 septembre 2021 2
4 oct. 2013 à 14:40
Le fichier formulaire.html est dans le dossier C:\wamp\www\inscrit et je l'ouvre de cette emplacement là à l'exécution
0
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
0
jack444 Messages postés 86 Date d'inscription samedi 9 octobre 2010 Statut Membre Dernière intervention 30 septembre 2021 2
4 oct. 2013 à 23:14
J'ai ouvert le fichier insert.php à travers l'adresse localhost de wamp server
0
Utilisateur anonyme
5 oct. 2013 à 00:17
Fais la même chose pour formulaire.html, ça va beaucoup mieux marcher.
0
jack444 Messages postés 86 Date d'inscription samedi 9 octobre 2010 Statut Membre Dernière intervention 30 septembre 2021 2
5 oct. 2013 à 01:47
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
0
Utilisateur anonyme
5 oct. 2013 à 09:43
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.
0
jack444 Messages postés 86 Date d'inscription samedi 9 octobre 2010 Statut Membre Dernière intervention 30 septembre 2021 2
5 oct. 2013 à 11:47
Enfin ça fonctionne j'ai changé la requete sql :
$sql ="INSERT INTO users VALUES ('$login','$pass')";
par cette requete sql:
$sql ="INSERT INTO users VALUES (NULL,'$login','$pass')";
et elle a fonctionnée l'erreur c'est que j'ai pas mis la valeur NULL de l'id
Merci pour votre le pére et JooS .
0
JooS Messages postés 2465 Date d'inscription mardi 22 janvier 2008 Statut Membre Dernière intervention 8 juin 2016 228
Modifié par JooS le 5/10/2013 à 14:31
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.

$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.
0