[Résolu] Problème d'insertion dans ma table !

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : [Résolu] Problème d'insertion dans ma table !

par mere-teresa » 29 juil. 2005, 17:13

:shock:

par zitO » 29 juil. 2005, 17:07


- pour ma part, je mettrais un if avant le message de confirm :
SI executer la requete mysql
message ok vous etes enregistres
SINON
message ah bah non

Parce que là, il met tout le temps
echo 'Merci de vous être inscrit '.$pseudo.' ! @ bientot ';
Oui je pensais le faire aussi mais je preferai le faire après avoir régler mon problème :)

Heu je remarque que dans le 1er script tu te connectes 2 fois à la base, et tu fais 2 fois la requête !
Je l'ai remarqué et je viens de tester 30 sec avt que tu edit et ca marche impecable :)

par ouckileou » 29 juil. 2005, 16:50

déjà vire tes identifiants de BDD

edit mere-teresa : j'ai viré le mot de passe

par mere-teresa » 29 juil. 2005, 16:50

Toujours pareil :
- garde la requête qui marche, même si elle est salement concaténée
- fais des echo des données
- pour ma part, je mettrais un if avant le message de confirm :
SI executer la requete mysql
message ok vous etes enregistres
SINON
message ah bah non

Parce que là, il met tout le temps
echo 'Merci de vous être inscrit '.$pseudo.' ! @ bientot ';


Heu je remarque que dans le 1er script tu te connectes 2 fois à la base, et tu fais 2 fois la requête !

par zitO » 29 juil. 2005, 16:47

Autant pour moi j'avais déjà oublier l'id donc ca pouvais pas fonctionner correctement :)

Mais y'a tjs un blem
Avec ce code ca marche :
<?php
if (isset($_POST['pseudo']) AND isset($_POST['prenom']) AND isset($_POST['age']) AND isset($_POST['ville']) AND isset($_POST['msn']))
	{
		if
		($_POST['pseudo'] != NULL 
		AND $_POST['prenom'] != NULL 
		AND $_POST['age'] != NULL 
		AND $_POST['ville'] != NULL
		AND $_POST['pays'] !=NULL
		AND $_POST['msn'] != NULL)
		{
		// Alors on peut enregister dans la table
		// Connexion à la base de données
		mysql_connect('sql.free.fr','teampowa','');
		mysql_select_db('teampowa');
		
		// On utilise la fonction PHP htmlentities pour ne pas avoir de HTML dans la BDD
        $pseudo = htmlentities ($_POST['pseudo']);
		$prenom = htmlentities ($_POST['prenom']);
		$age = htmlentities ($_POST['age']);
		$ville = htmlentities ($_POST['ville']);
		$msn = htmlentities ($_POST['msn']);
		
		// Suite à ce contrôle on peut enregistrer dans la table
		mysql_query("INSERT INTO membres(id, pseudo, prenom, age, ville, msn) VALUES ('', '".$pseudo."', '".$prenom."', '".$age."', '".$ville."', '".$pays."', '".$msn."')");
		}
		
		// Connexion à la base de données
		mysql_connect('sql.free.fr','teampowa','');
		mysql_select_db('teampowa');
		
		$insert = "INSERT INTO membres (id, pseudo, prenom, age, ville, msn) VALUES ('', '$pseudo', '$prenom', '$age', '$ville', '$msn')";
		echo 'Voici la requête qui est exécutée <br>:'.$insert.'<br>';
		mysql_query($insert) or die (mysql_error());
		
		echo 'Merci de vous être inscrit '.$pseudo.' ! @ bientot ';
	
	}
?>
Tandis que avec ce code ca ne marche pas, il n'insert rien dans la BDD :
<?php
if (isset($_POST['pseudo']) AND isset($_POST['prenom']) AND isset($_POST['age']) AND isset($_POST['ville']) AND isset($_POST['msn']))
	{
		if
		($_POST['pseudo'] != NULL 
		AND $_POST['prenom'] != NULL 
		AND $_POST['age'] != NULL 
		AND $_POST['ville'] != NULL
		AND $_POST['pays'] !=NULL
		AND $_POST['msn'] != NULL)
		{
		// Alors on peut enregister dans la table
		// Connexion à la base de données
		mysql_connect('sql.free.fr','teampowa','');
		mysql_select_db('teampowa');
		
		// On utilise la fonction PHP htmlentities pour ne pas avoir de HTML dans la BDD
        $pseudo = htmlentities ($_POST['pseudo']);
		$prenom = htmlentities ($_POST['prenom']);
		$age = htmlentities ($_POST['age']);
		$ville = htmlentities ($_POST['ville']);
		$msn = htmlentities ($_POST['msn']);
		
		// Suite à ce contrôle on peut enregistrer dans la table
		mysql_query("INSERT INTO membres(id, pseudo, prenom, age, ville, msn) VALUES ('', '".$pseudo."', '".$prenom."', '".$age."', '".$ville."', '".$pays."', '".$msn."')");
		}
		
		echo 'Merci de vous être inscrit '.$pseudo.' ! @ bientot ';
	}
?>

par mere-teresa » 29 juil. 2005, 16:35

toujours la mm requete ?
"INSERT INTO membres (pseudo, prenom, age, ville, msn)
 VALUES ('".$pseudo."', '".$prenom."', '".$age."', '".$ville."', '".$msn."')";

par zitO » 29 juil. 2005, 16:34

En effet j'ai bien fais de vérifier. Le PHP en fait que à sa tête :) .

J'avais mis 2 nouveaux membres pour tester par le biais de PHPMyAdmin. En suite j'ai mis ceci :
echo 'Merci de vous être inscrit '.$pseudo.' ! @ bientot ';
et comme par enchantement tout marche.

Ensuite je me décide de vider ma table pour recommencer à zéro, maintenant il n'enregistre plus dans ma table !

par zitO » 29 juil. 2005, 16:29

J'vérifie que ce soit sûr à 100 % avant le [résolu] :)

par ouckileou » 29 juil. 2005, 16:27

ça roule ;)

=> [Résolu] ?

par zitO » 29 juil. 2005, 16:25

dommage que tu n'ais pas suivi la méthode que je t'avais pourtant marquée comme "conseillée"
à savoir lister les colonnes :
$insert = "INSERT INTO membres (pseudo, prenom, age, ville, msn) VALUES ('$pseudo', '$prenom', '$age', '$ville', '$msn')";
avec ta méthode si tu décides un jour de rajouter une colonne "sexe" avant age, ta requête est moisie
Oui ca je vais le faire :) Je me suis pencher d'abord sur mon probleme.
m'enfin quelque chose comme ça devrait marcher :
echo 'Merci de vous être inscrit '.$pseudo.' ! @ bientot ';
C'est bon ca marche 8)
Merci pour tout encore

par ouckileou » 29 juil. 2005, 16:18

pourquoi exécuter la requête directement dans mysql_query, puis stocker le code (différent !!!) dans une variable pour l'afficher ?

stocke le code dans la variable, exécute et affiche ;)

édition : en fait j'ai mal vu, à quoi sert la première requête ? :shock:

dommage que tu n'ais pas suivi la méthode que je t'avais pourtant marquée comme "conseillée"
à savoir lister les colonnes :
$insert = "INSERT INTO membres (pseudo, prenom, age, ville, msn) VALUES ('$pseudo', '$prenom', '$age', '$ville', '$msn')";
avec ta méthode si tu décides un jour de rajouter une colonne "sexe" avant age, ta requête est moisie

pour qu'on t'aide sur ton problème, il faudrait voir le code que tu exécutes, et l'erreur que tu as en retour... m'enfin quelque chose comme ça devrait marcher :
echo 'Merci de vous être inscrit '.pseudo.' ! @ bientot ';

par zitO » 29 juil. 2005, 16:11

Voilà maintenant ca enregistre dans la BDD :)
Voici la requête qui est exécutée
:INSERT INTO membres VALUES ('', 'sNP', '132', '123', '123', '123')
Voici la fin de mon code :
		// Suite à ce contrôle on peut enregistrer dans la table
		mysql_query("INSERT INTO membres VALUES ('".$pseudo."', '".$prenom."', '".$age."', '".$ville."', '".$msn."')");
		}
		mysql_connect('sql.free.fr','****','*****');
		mysql_select_db('******');
		
		$insert = "INSERT INTO membres VALUES ('', '$pseudo', '$prenom', '$age', '$ville', '$msn')";
		echo 'Voici la requête qui est exécutée <br>:'.$insert.'<br>';
		mysql_query($insert) or die (mysql_error());
	
	}
?>
J'ai essayer de changer la fin pour qu'il marque ' Merci de vous être inscrit "Le pseudo de la personne" ! @ bientot '
Mais à chaque fois je retombe sur une erreur. J'arrive pas à le réecrire comme il faut.
Pourriez-vous m'aider?

par ouckileou » 29 juil. 2005, 15:42

tu t'es embrouillée entre quotes et guillemets

ici, tu commences ta chaine par des guillemets, ensuite arrivé à la première variable tu la fermes, puis tu mets une quote

ça ne peut pas marcher, inverse ;)

par mere-teresa » 29 juil. 2005, 15:42

Petit malin !
Dans le code que tu nous montre la variable $pseudo n'est pas bien concaténée.
"INSERT INTO membres VALUES ('".$pseudo."', '$prenom', '$age', '$ville', '$msn')";
echo 'Voici la requête qui est exécutée <br>:'.$insert.'<br>'; 

par zitO » 29 juil. 2005, 15:41

plus d'erreur MySQL ?

affiche le code SQL qui est exécuté, peut-être que quelquchose t'interpellera
$insert = "INSERT INTO membres VALUES ('$pseudo', '$prenom', '$age', '$ville', '$msn')";
echo 'Voici la requête qui est exécutée <br>:'.$insert.'<br>';

mysql_query($insert) or die (mysql_error());
J'ai fais comme tu as dis et voici ce qu'il me chante :o
Parse error: parse error, unexpected T_CONSTANT_ENCAPSED_STRING in /var/www/free.fr/4/4/teampowa/traitement.php on line 26
mysql_query("INSERT INTO membres VALUES ("'.$pseudo.'", "'.$prenom.'", "'.$age.'", "'.$ville.'", "'.$pays.'", "'.$msn.'")");
Voici la ligne en question avec l'aide de Charls