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   -
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/
A voir également:

8 réponses

Utilisateur anonyme
 
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 85 Date d'inscription   Statut Membre Dernière intervention   2
 
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 2468 Date d'inscription   Statut Membre Dernière intervention   228
 
Essayes en supprimant la partie de l'identifiant.

$sql = "INSERT INTO 'users' ('login', 'pass') VALUES ('$login', '$pass')";
0
jack444 Messages postés 85 Date d'inscription   Statut Membre Dernière intervention   2
 
J'ai essayé votre solution JooS mais ça n'a pas marché
0
JooS Messages postés 2468 Date d'inscription   Statut Membre Dernière intervention   228
 
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 85 Date d'inscription   Statut Membre Dernière intervention   2
 
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
 
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 85 Date d'inscription   Statut Membre Dernière intervention   2
 
J'ai testé comme tu l'as dit mais il ne fonctionne pas et il n'affiche aucun message d'erreur
0
Utilisateur anonyme
 
Qu'affiche-t-il ? Rien du tout ? "L'insertion a été correctement effectuée" ? "L'insertion à échouée" ?
0
jack444 Messages postés 85 Date d'inscription   Statut Membre Dernière intervention   2
 
Il m'affiche rien dans la page insert.php rien de tout cette page est blanche
0
Utilisateur anonyme
 
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 85 Date d'inscription   Statut Membre Dernière intervention   2
 
à 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
Utilisateur anonyme
 
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 85 Date d'inscription   Statut Membre Dernière intervention   2
 
Le fichier formulaire.html est dans le dossier C:\wamp\www\inscrit et je l'ouvre de cette emplacement là à l'exécution
0
Utilisateur anonyme
 
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 85 Date d'inscription   Statut Membre Dernière intervention   2
 
J'ai ouvert le fichier insert.php à travers l'adresse localhost de wamp server
0
Utilisateur anonyme
 
Fais la même chose pour formulaire.html, ça va beaucoup mieux marcher.
0
jack444 Messages postés 85 Date d'inscription   Statut Membre Dernière intervention   2
 
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
 
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 85 Date d'inscription   Statut Membre Dernière intervention   2
 
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 2468 Date d'inscription   Statut Membre Dernière intervention   228
 
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