babbleshit
Messages postés17Date d'inscriptiondimanche 2 janvier 2005StatutMembreDernière intervention11 décembre 2008
-
22 oct. 2005 à 00:08
monoceros01
Messages postés420Date d'inscriptionvendredi 28 novembre 2003StatutMembreDernière intervention20 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)
babbleshit
Messages postés17Date d'inscriptiondimanche 2 janvier 2005StatutMembreDernière intervention11 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.';
babbleshit
Messages postés17Date d'inscriptiondimanche 2 janvier 2005StatutMembreDernière intervention11 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
}
?>
Vous n’avez pas trouvé la réponse que vous recherchez ?
babbleshit
Messages postés17Date d'inscriptiondimanche 2 janvier 2005StatutMembreDernière intervention11 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...
babbleshit
Messages postés17Date d'inscriptiondimanche 2 janvier 2005StatutMembreDernière intervention11 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.
monoceros01
Messages postés420Date d'inscriptionvendredi 28 novembre 2003StatutMembreDernière intervention20 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 =)
babbleshit
Messages postés17Date d'inscriptiondimanche 2 janvier 2005StatutMembreDernière intervention11 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 ?