Php-SQL - mysql_query(INSERT TO..); -HELP ???

Résolu/Fermé
BartWadela Messages postés 557 Date d'inscription samedi 7 juillet 2007 Statut Membre Dernière intervention 3 février 2010 - 13 juin 2008 à 11:59
BartWadela Messages postés 557 Date d'inscription samedi 7 juillet 2007 Statut Membre Dernière intervention 3 février 2010 - 16 juin 2008 à 11:10
Bonjour,

j'ai besoin d'un petit coup de main, je sais pas si vous pourrez m'aider.

j'essaye de créer un mini-chat temporaire, c'est a dire que le visiteur arrive sur la page index :

- soit il indique le nom d'un "forum," qui existe et la il se connecte sur le "forum," en cours de discussion

soit il indique le nom d'un "forum," qui n'existe pas et la ça créer une table dans la bdd (table qui sera suppr. a la deconx avec drop_table)

- j'ai 2 pages : test.php et test02.php :

- sur la 1ere (test.php = index), je demande au visiteur de se connecter sur table existante ou de la créer - ça ça fonctionne impeccable

- sur la 2nde (test02.php = chat), le visiteur mets son pseudo et son msg et ca envoi sur la table dans la bdd, puis en affiche le contenu (comme sur le site du zero), par contre ce qui ne fonctionne pas c'est ma commande = mysql_query(INSERT TO ...);

qd je mets le contenu entre parenthese en "dur," ca insere bien dans la bdd,
par contre vu que le nom de la table et gérer par les sessions - $_SESSION['forum']
j'arrive pas a entrer la commande mysql_query(INSERT TO ...); avec cette variables en plus

je sais pas si vous m'avez compris

je poste mets deux codes : dites moi ce que vous en pensez !? (je débute en php/sql j'ai que 3mois d'xp)

test.php
<?php
session_start();
?>

<?php

define('PREFIX_SQL2', 'CREATE TABLE IF NOT EXISTS ');
define('SUFFIX_SQL2', ' (
`id` MEDIUMINT NOT NULL AUTO_INCREMENT ,
`pseudo` TEXT NOT NULL ,
`message` TEXT NOT NULL ,
PRIMARY KEY ( `id` )
) ENGINE = MYISAM;');
?>
<p>/!\ ATTENTION /!\
	<li>Pas d'espace</li>
	<li>Tout en minuscule</li>
	<li>Pas de chiffre en 1er caract&egrave;re</li>
	<li>pas de caract&egrave;res sp&eacute;ciaux</li>
	<li>16 caract&egrave;res MAXI</li>
</p>
<form method=post action="test.php">
<p>
	<label>Nom du forum : </label>
	<input type=text size="20" maxlength="16" name="nom_chat" />
	<input type="submit" value="OK">
</p>
</form>
<p>Si le forum est d&eacute;j&agrave; cr&eacute;er : <a href="test02.php">cliquez ici</a>
<?php
$table_temp = htmlspecialchars(strtolower($_POST['nom_chat']));
$new_sql = (PREFIX_SQL2.$table_temp.SUFFIX_SQL2);
	include("data_bd.php");

	mysql_connect("$db_server","$db_name","$db_user_pass");
	mysql_select_db("$db_user_login");

	mysql_query($new_sql);

?>
<?php $_SESSION['forum'] = $table_temp; ?>


et test02.php

<?php
session_start();
?>
Actuellement sur le forum : <?php echo $_SESSION['forum']; ?>
<form action="test02.php" method="post">
 
<p>
<label>Pseudo : </label>
		<input type="text" name="pseudo" /><br />
<label>Message : </label>
		<input type="text" name="message" /><br />
 
<input type="submit" value="Envoyer" />
</p>
</form>
<?php
include("data_bd.php");

  $sql_sql = mysql_connect("$db_server","$db_name","$db_user_pass");
	mysql_connect("$db_server","$db_name","$db_user_pass");
	mysql_select_db("$db_user_login");

        $message = mysql_real_escape_string(htmlspecialchars($_POST['message']));
        $pseudo = mysql_real_escape_string(htmlspecialchars($_POST['pseudo']));
 
define ('PART01', '"INSERT INTO ');
define ('PART02', ' VALUES (');
define ('PART03', '');
define ('PART05', '$pseudo', '$message');
$part01= "'', '$pseudo', '$message')";
define ('PART06', ';"');



$insert01= (PART01.$_SESSION['forum']);
$insert02= ($insert01.PART02);
$insert03= ($insert02.$part01);
$insert04= ($insert03.PART06);

		mysql_query($insert04);
		// mysql_query("INSERT INTO bartwadela VALUES (NULL , 'pseudo001', 'text-001')");

         //   décnx SQL
        mysql_close();
?>

1 réponse

gryzzly Messages postés 4608 Date d'inscription lundi 7 novembre 2005 Statut Contributeur Dernière intervention 24 octobre 2020 1 329
13 juin 2008 à 14:13
Déjà abandonne tes define & co ... ca en devient illisible, et derrière, c'est nous qui galérons pour débugguer. Il m'a fallu 10 minutes pour arriver au résultat ...

Traduction litérale de ton charabia de défintions:
"INSERT INTO $_SESSION['forum'] VALUES ( '', '$pseudo', '$message');"

forme d'une requete valide :
INSERT INTO `forum` (`id`, `pseudo`, `message`) VALUES ('', 'xxx', 'text');

plusieurs possibilités : problèmes des ' ou ` , $_SESSION existe pas, rajoutes les noms des champs ...
0
BartWadela Messages postés 557 Date d'inscription samedi 7 juillet 2007 Statut Membre Dernière intervention 3 février 2010 106
13 juin 2008 à 17:37
Déjà abandonne tes define & co ... ca en devient illisible, et derrière, c'est nous qui galérons pour débugguer. Il m'a fallu 10 minutes pour arriver au résultat ...

jsui bien d'accord avec toi...

$_SESSION['forum'] existe bien j'arrive a l'afficher pourtant.

jvais tester avec la syntaxe que tu me propose, ça se trouve c'est juste ça (je serai dégouté...)

en tout cas merci, d'avoir pris le temps de déchiffrer lire mon code.

Bon jpart en wkend, je vais voir ça lundi.
Merci beaucoup
0
BartWadela Messages postés 557 Date d'inscription samedi 7 juillet 2007 Statut Membre Dernière intervention 3 février 2010 106
16 juin 2008 à 11:10
Pffffffff.... jsui dégouté...

j'ai juste mis =
  $message = mysql_real_escape_string(htmlspecialchars($_POST['message']));
  $pseudo = mysql_real_escape_string(htmlspecialchars($_POST['pseudo']));
  $table_temp = $_SESSION['forum'];

	mysql_query("INSERT INTO $table_temp VALUES ('', '$pseudo', '$message')");

et ça passe,

JSUI VEEEEEERRRRTTT...

c't trop simple

En tout cas merci beaucoup, et encore désolé d'avoir usé tes yeux sur mon code a 2 balles
0