Probleme de variable $_GET avec un IF
nice2k
-
nice2k -
nice2k -
Bonjour,
Je réalise un projet pour mes études qui consiste à coder un forum avec PHP / MySQL.
Mais voilà, j'ai un problème et je bloque.
En fait, je veux transmettre par l'url l'id du topic sur lequel l'utilisateur veut poster, et le récupérer dans mon fichier create_message.php pour pouvoir ensuite insérer le nouveau message dans ma base de donnée, et ce message aura comme topic_id celui que j'aurais récupéré.(J'espère que c'est clair :p)
Seulement, je récupère bien ma variable grâce à $id_topic = (int) $_GET['topic']; lorsque je fais un echo j'ai bien mon topic_id, mais dès que je fais mon echo dans mon IF juste après, il me renvoie que ma variable est égale à 0 !
J'ai essayé en passant par une variable de session ou même par POST dans un input hidden, et pareil, j'arrive à 'echo' ma variable avant mon IF, mais quand je le fais dedans j'ai ce message d'erreur :
Erreur : SQLSTATE[23000]: Integrity constraint violation: 1048 Column 'topic_id' cannot be null
Alors que juste avant mon if ma variable n'était pas nulle.. HELP PLEASE :'(
La partie où je fais passer ma variable de show_topic.php à create_message.php :
Et la partie où je récupére sur create_message.php (où le echo marche que avant mon IF) :
Je vous remercie d'avance de votre aide, je suis désespéré..
Je réalise un projet pour mes études qui consiste à coder un forum avec PHP / MySQL.
Mais voilà, j'ai un problème et je bloque.
En fait, je veux transmettre par l'url l'id du topic sur lequel l'utilisateur veut poster, et le récupérer dans mon fichier create_message.php pour pouvoir ensuite insérer le nouveau message dans ma base de donnée, et ce message aura comme topic_id celui que j'aurais récupéré.(J'espère que c'est clair :p)
Seulement, je récupère bien ma variable grâce à $id_topic = (int) $_GET['topic']; lorsque je fais un echo j'ai bien mon topic_id, mais dès que je fais mon echo dans mon IF juste après, il me renvoie que ma variable est égale à 0 !
J'ai essayé en passant par une variable de session ou même par POST dans un input hidden, et pareil, j'arrive à 'echo' ma variable avant mon IF, mais quand je le fais dedans j'ai ce message d'erreur :
Erreur : SQLSTATE[23000]: Integrity constraint violation: 1048 Column 'topic_id' cannot be null
Alors que juste avant mon if ma variable n'était pas nulle.. HELP PLEASE :'(
La partie où je fais passer ma variable de show_topic.php à create_message.php :
<th width="10%" align="right" colspan="2">Créé le <?php echo $message['creation_date'].' ' ; if ($_SESSION['is_admin'] == 1) { echo '<a href=remove_message.php?message='.$message['id'].'>Supprimer</a>'. ' '; echo '<a href=create_message.php?topic='.$id_topic.'>Répondre</a>'; }?></th> </tr>
Et la partie où je récupére sur create_message.php (où le echo marche que avant mon IF) :
<?php session_start(); try { // On se connecte à MySQL $pdo_options[PDO::ATTR_ERRMODE] = PDO::ERRMODE_EXCEPTION; $pdo_options[PDO::MYSQL_ATTR_INIT_COMMAND] = "SET NAMES utf8"; $bdd = new PDO('mysql:host=localhost;dbname=SUPFORUM', 'root', 'root', $pdo_options); $id_topic = (int) $_GET['topic']; if(isset($_POST['submit'])) { if(!isset($_POST['msg_content']) || $_POST['msg_content']=="") { $msg = "Le message est vide !"; } else { $msg = ""; } if (isset($_POST['submit']) && !empty($_POST['msg_content'])) { $insert_db_msg = $bdd->prepare('INSERT INTO MESSAGES (content, author_id, topic_id, creation_date) VALUES(?, ?, ?, ?)'); $insert_db_msg->execute(array($_POST['msg_content'], $_SESSION['id'], $id_topic, time())); } } ?>
Je vous remercie d'avance de votre aide, je suis désespéré..
A voir également:
- If $_get
- If exist - Forum Java
- The realtek network controller was not found. if deep sleep mode is enabled please plug the cable ✓ - Forum Pilotes (drivers)
- If char ✓ - Forum Programmation
- Php if multiple conditions ✓ - Forum PHP
- The Realtek Network Controller was not found. - Forum Pilotes (drivers)
4 réponses
Quand tu cliques sur le lien Repondre créé par
tu récupères $_GET['topic'] mais rien en $_POST
Quand tu cliques sur le bouton du formulaire, comme l'action est simplement create_message.php, tu récupères quelque chose en $_POST mais rien en $_GET : tu as perdu ton id_topic. Tu devrais le garder dans une variable de session
href=remove_message.php?message='.$message['id'].'>Supprimer</a>'. ' '; echo '<a href=create_message.php?topic='.$id_topic.'>Répondre</a>'; }?></th>
tu récupères $_GET['topic'] mais rien en $_POST
Quand tu cliques sur le bouton du formulaire, comme l'action est simplement create_message.php, tu récupères quelque chose en $_POST mais rien en $_GET : tu as perdu ton id_topic. Tu devrais le garder dans une variable de session
Bonjour
Faut pas désespérer comme ça :)
Dans ton code, tu récupères ton $id_topic dans $_GET, et tu testes la suite avec $_POST. Est-ce bien normal ?
Faut pas désespérer comme ça :)
Dans ton code, tu récupères ton $id_topic dans $_GET, et tu testes la suite avec $_POST. Est-ce bien normal ?
Tout d'abord merci de te pencher sur mon problème :).
En fait je tente de stocker ma variable $_GET['topic'] dans $id_topic.
Puis j'essaye de l'insérer dans la base de donnée dans la colonne topic_id.
Mes variables POST présentes dans mon code sont en fait celles d'un formulaire présent un peu plus bas que je n'ai pas montré, je te le mets :
Merci encore.
En fait je tente de stocker ma variable $_GET['topic'] dans $id_topic.
Puis j'essaye de l'insérer dans la base de donnée dans la colonne topic_id.
Mes variables POST présentes dans mon code sont en fait celles d'un formulaire présent un peu plus bas que je n'ai pas montré, je te le mets :
<form id="form5" name="form5" method="post" action="create_message.php"> <p> Contenu du message * : </br></br> <textarea name="msg_content" type="text" id="textarea" value=""></textarea> </br></br> <input type="submit" name="submit" id="button" value="Ajouter message" /> </br></br> <?php if(isset($_POST['submit'])) { echo $msg; } ?> </p> </form>
Merci encore.
Je ne suis pas sûr d'avoir bien compris, enfin je ne vois pas trop comment faire et ce que je dois changer.
J'ai essayé avec une variable de SESSION et j'avais l'impression d'avoir le même problème.. Pourrais-tu me mettre sur la voie?
EDIT : Bah écoute après plusieurs lectures de ton post j'ai compris et changé le formulaire en insérant la variable GET dans le champ action. Je te remercie infiniment, ça faisait 3 jours que je bloquais là dessus ! bonne journée à toi ;)
J'ai essayé avec une variable de SESSION et j'avais l'impression d'avoir le même problème.. Pourrais-tu me mettre sur la voie?
EDIT : Bah écoute après plusieurs lectures de ton post j'ai compris et changé le formulaire en insérant la variable GET dans le champ action. Je te remercie infiniment, ça faisait 3 jours que je bloquais là dessus ! bonne journée à toi ;)