Insertion des données dans la base des données par php
jack444
Messages postés
121
Statut
Membre
-
JooS Messages postés 2705 Statut Membre -
JooS Messages postés 2705 Statut Membre -
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/
--
-- Client: localhost
-- Généré le: Jeu 03 Octobre 2013 à 18:03
-- Version du serveur: 5.5.24-log
-- Version de PHP: 5.4.3
SET SQL_MODE="NO_AUTO_VALUE_ON_ZERO";
SET time_zone = "+00:00";
/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
/*!40101 SET NAMES utf8 */;
--
-- Base de données: 'database'
--
-- --------------------------------------------------------
--
-- Structure de la table 'users'
--
CREATE TABLE IF NOT EXISTS 'users' (
'id' int(11) NOT NULL AUTO_INCREMENT,
'login' varchar(60) NOT NULL,
'pass' varchar(60) NOT NULL,
PRIMARY KEY ('id')
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=9 ;
Mon probléme c'est que je n'arrive pas à trouver l'insertion des données dans la base de donnée quand je rempli le formulaire .
Je n'arrive pas à résoudre ce probléme depuis 3 jours .
Je cherche votre aide merci .
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/
--
-- Client: localhost
-- Généré le: Jeu 03 Octobre 2013 à 18:03
-- Version du serveur: 5.5.24-log
-- Version de PHP: 5.4.3
SET SQL_MODE="NO_AUTO_VALUE_ON_ZERO";
SET time_zone = "+00:00";
/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
/*!40101 SET NAMES utf8 */;
--
-- Base de données: 'database'
--
-- --------------------------------------------------------
--
-- Structure de la table 'users'
--
CREATE TABLE IF NOT EXISTS 'users' (
'id' int(11) NOT NULL AUTO_INCREMENT,
'login' varchar(60) NOT NULL,
'pass' varchar(60) NOT NULL,
PRIMARY KEY ('id')
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=9 ;
Mon probléme c'est que je n'arrive pas à trouver l'insertion des données dans la base de donnée quand je rempli le formulaire .
Je n'arrive pas à résoudre ce probléme depuis 3 jours .
Je cherche votre aide merci .
A voir également:
- Insertion des données dans la base des données par php
- Trier des données excel - Guide
- Restauration des données - Guide
- Reconsidérer le traitement de vos données à des fins publicitaires - Accueil - Réseaux sociaux
- Logiciel de récupération de données - Guide
- Tnt base de données vide - Forum TV & Vidéo
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 ?
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
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.
$sql = "INSERT INTO 'users' ('login', 'pass') VALUES ('$login', '$pass')";Exécute cette requête directement a travers phpMyAdmin.
INSERT INTO 'users' ('login', 'pass') VALUES ('utilisateur', 'mot de passe');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