Problème avec une variable.

Résolu
babbleshit Messages postés 17 Date d'inscription dimanche 2 janvier 2005 Statut Membre Dernière intervention 11 décembre 2008 - 22 oct. 2005 à 00:08
monoceros01 Messages postés 420 Date d'inscription vendredi 28 novembre 2003 Statut Membre Dernière intervention 20 mars 2006 - 25 oct. 2005 à 13:33
Bonjour,

J'ai un soucis avec mon code (pas étonant sur ce forum ^^).
J'ai créé un code pour enregistrer 4 valeurs dans 4 variables d'une table... La première est une variable "id", la valeur s'enregistre donc automatiquement.
2 autres(pseudo, et texte) s'enregistrent via un formulaire.
la dernière (celle qui pose problème) s'enregistre avec une variable noté comme celà : $id2="$id2";
(quand je fais un echo de $id2, la valeur s'affiche...)

Par contre après l'enregistrement, dans la table, la valeur de la variable id2 ne s'affiche pas...

Donc je suppose que c'est là que ça pose problème :

$sql = "INSERT INTO comment2_hxc VALUES('','$id2','$pseudo','$texte')";

(Je ne me suis pas planté dans l'odre des variables)

Merci d'avance.

Nico.

21 réponses

babbleshit Messages postés 17 Date d'inscription dimanche 2 janvier 2005 Statut Membre Dernière intervention 11 décembre 2008
25 oct. 2005 à 11:45
Je viens de résoudre le problème en le contournant !

Plutôt que de vouloir enregistrer directement la valeur dans la table, j'ai ajouter ca dans la balise form :

<?
echo "";
?>
3
FhX Messages postés 2350 Date d'inscription mercredi 13 octobre 2004 Statut Membre Dernière intervention 18 avril 2015 3
22 oct. 2005 à 00:28
heu, on peut en avoir un peu plus ?
0
babbleshit Messages postés 17 Date d'inscription dimanche 2 janvier 2005 Statut Membre Dernière intervention 11 décembre 2008
22 oct. 2005 à 00:33
voilà :

<?
$id2="$id2";
?>
<?
if(empty($texte))
{
echo 'Attention, tous les champs sont obligatoire !';
}


// Aucun champ n'est vide, on peut enregistrer dans la table
else
{
// connexion à la base
$db = mysql_connect('sql6', '****', '*****') or die('Erreur de connexion '.mysql_error());
// sélection de la base


mysql_select_db('*****',$db) or die('Erreur de selection '.mysql_error());

// on ecris la requete sql
$sql = "INSERT INTO comment2_hxc VALUES('','".$id2."','$pseudo','$texte')";
// on insère les informations du formulaire dans la table
mysql_query($sql) or die('Erreur SQL !'.$sql.'
'.mysql_error());


// on affiche le résultat pour le visiteur
echo 'Vos infos on été ajoutées.';


mysql_close(); // on ferme la connexion
}
?>
0
babbleshit Messages postés 17 Date d'inscription dimanche 2 janvier 2005 Statut Membre Dernière intervention 11 décembre 2008
22 oct. 2005 à 00:33
voilà :

<?
$id2="$id2";
?>
<?
if(empty($texte))
{
echo 'Attention, tous les champs sont obligatoire !';
}


// Aucun champ n'est vide, on peut enregistrer dans la table
else
{
// connexion à la base
$db = mysql_connect('sql6', '****', '*****') or die('Erreur de connexion '.mysql_error());
// sélection de la base


mysql_select_db('*****',$db) or die('Erreur de selection '.mysql_error());

// on ecris la requete sql
$sql = "INSERT INTO comment2_hxc VALUES('','".$id2."','$pseudo','$texte')";
// on insère les informations du formulaire dans la table
mysql_query($sql) or die('Erreur SQL !'.$sql.'
'.mysql_error());


// on affiche le résultat pour le visiteur
echo 'Vos infos on été ajoutées.';


mysql_close(); // on ferme la connexion
}
?>
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
monoceros01 Messages postés 420 Date d'inscription vendredi 28 novembre 2003 Statut Membre Dernière intervention 20 mars 2006
22 oct. 2005 à 03:37
Tout m'a l'air bon.... sauf un truc qui me choque :

$id2 = "$id2";

La faut que tu m'expliquer pourquoi tu assignes sa propre valeur à une variable :)



Sinon... vérifie que ton champ correspondant à id2 soit bien du bon type (INT c'est s'es un nombre entier en l'occurence)

Pas d'autres idées ;)
0
babbleshit Messages postés 17 Date d'inscription dimanche 2 janvier 2005 Statut Membre Dernière intervention 11 décembre 2008
22 oct. 2005 à 12:23
Bah en fait je récupère la valeur d'une adresse ("comment.php?id2=blabla" par exemple) et en effet ca sert à rien ^^
pour ce qui est du type varchar(255) ce qui est donc correct il me semble dans mon cas...
0
monoceros01 Messages postés 420 Date d'inscription vendredi 28 novembre 2003 Statut Membre Dernière intervention 20 mars 2006
22 oct. 2005 à 13:51
Si tu récupère la variable d'une url il faut utiliser $_GET["id"]
0
monoceros01 Messages postés 420 Date d'inscription vendredi 28 novembre 2003 Statut Membre Dernière intervention 20 mars 2006
22 oct. 2005 à 13:53
$_GET["id2"] dans ton cas (erf je suis pas réveillé =_= )
0
babbleshit Messages postés 17 Date d'inscription dimanche 2 janvier 2005 Statut Membre Dernière intervention 11 décembre 2008
22 oct. 2005 à 14:32
J'ai donc mis ça :

$sql = "INSERT INTO comment2_hxc VALUES('','".$_GET["id2"]."','$pseudo','$texte')";

Mais ca ne marche tjrs pas...
0
monoceros01 Messages postés 420 Date d'inscription vendredi 28 novembre 2003 Statut Membre Dernière intervention 20 mars 2006
22 oct. 2005 à 15:16
Si ça génère vraiment aucune erreur, et que c'est juste un champ qui ne
se remplis pas.... Affiche la structure de ta base pour voir...
0
babbleshit Messages postés 17 Date d'inscription dimanche 2 janvier 2005 Statut Membre Dernière intervention 11 décembre 2008
22 oct. 2005 à 16:04
Ca fait comme un champ qui ne se remplis pas...


Voici la structure.


CREATE TABLE `bio_hxc` (
`id` int(11) NOT NULL auto_increment,
`id2` varchar(255) NOT NULL default '',
`pseudo` varchar(255) NOT NULL default '',
`texte` varchar (255) NOT NULL default '',
PRIMARY KEY (`id`),
UNIQUE KEY `id_2` (`id`),
KEY `id` (`id`)
) TYPE=MyISAM
0
monoceros01 Messages postés 420 Date d'inscription vendredi 28 novembre 2003 Statut Membre Dernière intervention 20 mars 2006
22 oct. 2005 à 16:36
$sql = "INSERT INTO comment2_hxc ......
CREATE TABLE `bio_hxc` .......
C'est normal que les tables aient pas le même nom?
0
babbleshit Messages postés 17 Date d'inscription dimanche 2 janvier 2005 Statut Membre Dernière intervention 11 décembre 2008
23 oct. 2005 à 00:18
ah zut !

erreur de frappe mais si le code est bien rentré avec comment2_hxc
0
babbleshit Messages postés 17 Date d'inscription dimanche 2 janvier 2005 Statut Membre Dernière intervention 11 décembre 2008
23 oct. 2005 à 19:37
Plus personnes n'a d'idée ?
0
monoceros01 Messages postés 420 Date d'inscription vendredi 28 novembre 2003 Statut Membre Dernière intervention 20 mars 2006
23 oct. 2005 à 19:40
Montre toujours la dernière version de ton code et la structure de la bonne table
0
babbleshit Messages postés 17 Date d'inscription dimanche 2 janvier 2005 Statut Membre Dernière intervention 11 décembre 2008
23 oct. 2005 à 21:21
La structure :

CREATE TABLE `comment2_hxc` (
`id` int(11) NOT NULL auto_increment,
`id2` varchar(255) NOT NULL default '',
`pseudo` varchar(255) NOT NULL default '',
`texte` varchar (255) NOT NULL default '',
PRIMARY KEY (`id`),
UNIQUE KEY `id_2` (`id`),
KEY `id` (`id`)
) TYPE=MyISAM

Le code :

<?
if(empty($texte))
{
echo 'Attention, tous les champs sont obligatoire !';
}


// Aucun champ n'est vide, on peut enregistrer dans la table
else
{
// connexion à la base
$db = mysql_connect('sql6', '****', '****') or die('Erreur de connexion '.mysql_error());
// sélection de la base


mysql_select_db('****',$db) or die('Erreur de selection '.mysql_error());

// on ecris la requete sql
$sql = "INSERT INTO comment2_hxc VALUES('','".$_GET["id2"]."','$pseudo','$texte')";
// on insère les informations du formulaire dans la table
mysql_query($sql) or die('Erreur SQL !'.$sql.'
'.mysql_error());


// on affiche le résultat pour le visiteur
echo 'Vos infos on été ajoutées.';


mysql_close(); // on ferme la connexion
}
?>
Voilà

Sinon, se aucune erreur n'est trouvé... Se serait possible d'avoir un petit exemple de code pr ce que j'éssaie de faire (enregistrer la valeur de l'url dans SQL) que je puisse tester ?
Merci.
0
monoceros01 Messages postés 420 Date d'inscription vendredi 28 novembre 2003 Statut Membre Dernière intervention 20 mars 2006
23 oct. 2005 à 21:48
Première chose que je remarque et qui a l'air faux

UNIQUE KEY `id_2` (`id`),

devrait être

UNIQUE KEY `id_2` (`id2`),



Je ne sais pas si ça a une influence sur le bug que tu décrit, mais en
tout cas, si tu veux changer ça, va dans l'interface phpmyadmin,
supprime l'index en question et recrée le en cliquant sur l'icone
"unique" sur la ligne correspondant à ce champ



Mise à part ça je ne note aucune erreur de syntaxe, d'ailleurs ton script ne renvoi aucune erreur.



Donc procédons par élimination :

Si php ne renvoi pas d'erreur, il n'y a pas d'erreur de syntaxe

Si mysql ne renvoi pas d'erreur, la requête est correcte et executée

Regardons donc cette requête de plus près

$sql = "INSERT INTO comment2_hxc VALUES('','".$_GET["id2"]."','$pseudo','$texte')";



D'après les symptomes décrits, tout s'enregistre sauf le champ id2. Or la valeure du champ id2 devrait être celle de $_GET["id2"].

D'où proviens $_GET["id2"] ? De ce que l'on appelle la QUERY_STRING, qui se trouve être tout ce qu'il y a derrière un ? dans une url.

Dans ce cas, la valeur de $_GET["id2"] devrais être ce qu'il y a après ?id2=

S'il n'y a rien, alors $_GET["id2"] undefined, et php retournera une erreur s'il est configurer pour retourner toutes les erreurs (dans php.ini, error_reporting = E_ALL)



Bilan :

1/ Régle le problème d'index dans la base de donnée

2/ Vérifie bien que $_GET["id2"] soit défini

3/ Vérifie bien que php renvois tous les types d'erreurs



Remarque : normalement, le fait d'indexer id2 en UNIQUE devrait générer une erreur si tu entre deux enregistrement avec la même valeur de id2. Or comme tu dis qu'il n'enregistre jamais cette valeur, il crée donc des enregistrement avec les mêmes valeurs de id2 (c'est-à-dire rien). Ça prouverait que ton index est mal fait =)
0
babbleshit Messages postés 17 Date d'inscription dimanche 2 janvier 2005 Statut Membre Dernière intervention 11 décembre 2008
24 oct. 2005 à 20:23
Bon alors j'ai testé... j'ai modifié l'index et j'ai eu en effet un petit message d'erreur comme quoi j'avais les mêmes valeurs pour ID2.

Du coup j'ai refais la table comment2_hxc comme ça :

CREATE TABLE comment2_hxc (id INT not null AUTO_INCREMENT, valeur VARCHAR (50) not null , pseudo VARCHAR (50) not null , texte VARCHAR (255) not null , PRIMARY KEY (id))

Seulement j'ai toujours le même problème... Personne ne pourrai créer un exemple pour voir si ça marche et me l'envoyer que je teste si ca prend pas trop de temps ?
0
monoceros01 Messages postés 420 Date d'inscription vendredi 28 novembre 2003 Statut Membre Dernière intervention 20 mars 2006
25 oct. 2005 à 06:49
t'as vérifié, le 2/ et le 3/ ?
0
babbleshit Messages postés 17 Date d'inscription dimanche 2 janvier 2005 Statut Membre Dernière intervention 11 décembre 2008
25 oct. 2005 à 10:54
Oui...
0
Rejoignez-nous