IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

Problème de $_GET['id'];


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 4
    Par défaut Problème de $_GET['id'];
    Bonjour,
    Bon alors je me lance, ça fait un mois je fais du php pour un projet et j'ai un problème que je n'arrive pas à résoudre. Je vous explique d'abord la page :
    la page est une page qui affiche des données selon l'id dans l'url.
    Je fait donc les requêtes nécessaires pour sélectionner les informations dans ma bdd en fonction de l'id. Jusqu'ici, tout va bien. Les éléments que je veux s'affichent bien en fonction de l'id.
    Je veux donc rajouter des commentaires. Le problème est là, quand je veux rentrer les commentaires dans ma bdd, tout fonctionne, sauf l'id (il me rentre un 0). En effet je veux le rentré dans ma bdd pour pouvoir afficher les commentaires en fonction de l'id. Je précise que le champ id_event est un int

    Voici mon code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    $result = mysql_query("
    				INSERT INTO commentaire(
    					contenu
    					, date
    					, id_event
    					, id_utilisateur
    					)
    				VALUES(
    					'" . $_POST["TB_Com"] . "'
    					, '" . date("Y-m-d") . "'
    					, '" . $_GET['id'] ."'
    					, '" . $_COOKIE["id_utilisateur"] . "'
    					)
    					") or die('Erreur'.mysql_error());
    Je précise que le champ id_event est un int dans la bdd.
    Quand je fait un echo de l'id (que j'ai récupéré avec $id=$_GET['id'], cela m'affiche bien la valeur de l'id. Un ami m'a conseillé de faire un

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    <pre>
    <?php var_dump($_GET) ?>
    </pre>
    Cela m'affiche encore une fois la bonne valeur.
    Je me tourne vers vous car je vois pas du tout qu'elle est l'erreur (s'il y en a une).

    En vous remerciant d'avance!
    LenemZ

    PS: quand je veux faire un header avec le $_GET['id'] pour redirection, sa me met rien dans l'url : "mapage.php?id=". Je ne sais pas si il y a un lien.

  2. #2
    Membre émérite
    Profil pro
    Inscrit en
    Août 2005
    Messages
    514
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 514
    Par défaut
    Bonjour,
    pourrait-on avoir un peu plus de code que ça?

    Cordialement,
    DaRiaN.

  3. #3
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 4
    Par défaut
    Tout d'abord merci de t'intéresser à mon problème.
    Et pour le code, oui, c'est possible .

    Alors, ici le code php concernant les commentaires qui sont sous forme d'include dans ma page principale

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    <?
     
    $id=$_GET['id'];
     
    // Ajout de commentaires
    if(isset($_POST["BT_Envoyer"]))
    		{
    		if(isset($_COOKIE["id_utilisateur"]))
    			{			
    			$result = mysql_query("
    				INSERT INTO commentaire(
    					contenu
    					, date
    					, id_event
    					, id_utilisateur
    					)
    				VALUES(
    					'" . $_POST["TB_Com"] . "'
    					, '" . date("Y-m-d") . "'
    					, '" . $_GET['id'] ."'
    					, '" . $_COOKIE["id_utilisateur"] . "'
    					)
    					") or die('Erreur de selection '.mysql_error());
     
    			}
    		else
    			{
    			header("Location: inscription.php");
    			}
    		}
    ?>
     
    <form action="http://<?= $_SERVER["SERVER_NAME"] . $_SERVER["SCRIPT_NAME"]; ?>" method="post">
    		<p> Ajouter un commentaire </p>
    		<p> <textarea name="TB_Com" maxlenght="600" rows="15" cols="57"></textarea></p>
    		<p> <input class="sub" type="submit" name="BT_Envoyer" value="Envoyer" /> <a href="profil.php" class="bouton">Revenir</a></p>
    </form>
    Ensuite le code ma page principal qui selon moi est susceptible d'influencer puisque c'est seulement là que j'utilise l'id:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    // On choisit l'evenement dans la bdd grace a l'id
    $id=$_GET['id'];
     
    // Compteur de visite pour l'event
    include "includes/compteur_event.php";
     
    // On prend les informations de la bdd sur l'evenement
    $result = mysql_query("
    	     	SELECT id_event
    	     		, nom
    	     	 	, genre
    	     	 	, categorie
    	            , description
    	            , prive
    	           	, adresse
    				, ville
    				, code_postal
    				, lieu
    				, date_debut
    				, date_fin
    				, id_utilisateur
    	     FROM event
    	     WHERE id_event = '$id'
    	");
     
    	if(mysql_num_rows($result) > 0)
    	   	{
     
    	        while($row = mysql_fetch_array($result))
    	        {
    				if(!$result)
    	   			{
    	        		$message = "Une erreur est survenue";
    	   			} 
     
    				else 
    				{
    					$TB_Event = $row["id_event"];
    					$TB_Nom = $row["nom"];
    					$TB_Genre = $row["genre"];
    					$TB_Categorie = $row["categorie"];
    					$TB_Description = $row["description"];
    					$TB_Adresse = $row["adresse"];
    					$TB_Ville = $row["ville"];
    					$TB_Code_postal = $row["code_postal"];
    					$TB_Lieu = $row["lieu"];
    					$TB_Date_debut = $row["date_debut"];
    					$TB_Date_fin = $row["date_fin"];
    					$TB_Utilisateur1 = $row["id_utilisateur"];
    				}
    	        }
    	   	}
    Tu va pouvoir remarqué que $TB_Event et $id ont la même valeur. Mais cela ne fonctionne pas aussi avec $TB_Event. Aussi je prend deux fois l'id, dans la page principale, et dans l'include commentaire. J'avais test de l'enlever dans l'include, mais cela ne fonctionne pas non plus.
    Ce code m'affiche ce que je veux (donc bien en fonction de $id).
    Le problème ne provient pas du compteur_event en include, je viens de le rajouter ce matin et hier ça ne fonctionner pas déjà.

    LenemZ

  4. #4
    Membre émérite
    Profil pro
    Inscrit en
    Août 2005
    Messages
    514
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 514
    Par défaut
    Je ne m'attendais pas à ces codes, avec ça, je ne peux pas suivre la vie de la variable, mais de toute façon, je n'ai rien vu de louche sauf de légères erreurs de syntaxe.

    Déjà, évitez de cumuler les $id = $_GET['id'] si après vous utilisez $_GET['id'] plutôt que la variable nouvellement créée. Si vous utilisez un champ integer dans MySQL, n'utilisez pas les guillemets simples pour encadré une valeur numérique, cela peut être problématique même si c'est toléré.

    De toute façon, $TB_Event = $row["id_event"]; devrait avoir la valeur d'id ou de $_GET['id'], donc il y a quelque chose de louche dans votre script et il me faudrait l'intégralité des codes pour vous l'indiquer.

  5. #5
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 4
    Par défaut
    Voici le code en entier de ma page :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    <?
    include "includes/connexion.php";
     
    // On prend les informations de la bdd sur l'evenement
    $result = mysql_query("
    	     	SELECT id_event
    	     		, nom
    	     	 	, genre
    	     	 	, categorie
    	            , description
    	            , prive
    	           	, adresse
    				, ville
    				, code_postal
    				, lieu
    				, date_debut
    				, date_fin
    				, id_utilisateur
    	     FROM event
    	     WHERE id_event = '". $_GET['id'] ."'
    	");
     
    	if(mysql_num_rows($result) > 0)
    	   	{
     
    	        while($row = mysql_fetch_array($result))
    	        {
    				if(!$result)
    	   			{
    	        		$message = "Une erreur est survenue";
    	   			} 
     
    				else 
    				{
    					$TB_Event = $row["id_event"];
    					$TB_Nom = $row["nom"];
    					$TB_Genre = $row["genre"];
    					$TB_Categorie = $row["categorie"];
    					$TB_Description = $row["description"];
    					$TB_Adresse = $row["adresse"];
    					$TB_Ville = $row["ville"];
    					$TB_Code_postal = $row["code_postal"];
    					$TB_Lieu = $row["lieu"];
    					$TB_Date_debut = $row["date_debut"];
    					$TB_Date_fin = $row["date_fin"];
    					$TB_Utilisateur1 = $row["id_utilisateur"];
    				}
    	        }
    	   	}
     
     
    // On prend le login du createur de l'evenement
    $result = mysql_query("
    	     	SELECT id_utilisateur
    	     		id_utilisateur
    	     		, login
    	     	FROM utilisateur
    	     	WHERE id_utilisateur = '$TB_Utilisateur1'
    	     	");
    if(mysql_num_rows($result) > 0)
    	   	{
     
    	        while($row = mysql_fetch_array($result))
    	        {
    				if(!$result)
    	   			{
    	        		$message = "Une erreur est survenue";
    	   			} 
     
    				else 
    				{
    					$TB_Utilisateur2 = $row["id_utlisateur"];
    					$TB_Login = $row["login"];
    				}
    			}
    		}
     
    // Affichage des dates sous la forme jj-mm-aaaa
    // Date de debut
    $annee = substr($TB_Date_debut, 0, 4);
    $mois = substr($TB_Date_debut, 5, 2);
    $jour = substr($TB_Date_debut, 8, 2);  
    $TB_Date_debut = $jour . '-' . $mois . '-' . $annee;
    // Date de fin
    $annee = substr($TB_Date_fin, 0, 4);
    $mois = substr($TB_Date_fin, 5, 2);
    $jour = substr($TB_Date_fin, 8, 2);  
    $TB_Date_fin = $jour . '-' . $mois . '-' . $annee;
     
    ?>
     
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
     
    	<head>
    		<title> Freez-Online ~ <? echo $TB_Nom ?> ~ </title> <link href="" rel="stylesheet" type="text/css"/>
    		<meta http-equiv="content-type" content="text/html;charset=iso-8859-1"/>
    	</head>
     
    	<body>
     
    	<p> <? echo $TB_Event ?> </p>
    	<p> Nom de l&rsquo;&eacute;v&egrave;nement : <? echo $TB_Nom ?> </p>
    	<p> Cat&eacute;gorie : <? echo $TB_Categorie ?> </p>
    	<p> Genre : <? echo $TB_Genre ?> </p>
    	<p> Description : <? echo $TB_Description ?> </p>
    	<p> Adresse : <? echo $TB_Adresse ?> </p>
    	<p> Ville : <? echo $TB_Ville ?> </p>
    	<p> Code postal : <? echo $TB_Code_postal ?> </p>
    	<p> Lieu : <? echo $TB_Lieu ?> </p>
    	<p> Date de d&eacute;but : <? echo $TB_Date_debut ?> </p>
    	<p> Date de fin : <? echo $TB_Date_fin ?> </p>
    	<p> Cr&eacute;ateur : <? echo $TB_Login ?> </p>
     
    <? include "includes/commentaires.php" ?>
    	</body>
     
    </html>
    J'ai enlever les include qui ne servent pas pour le momment et j'ai utilisé $_GET['id'] au lieu de passé par la variable $id.

    Voici le code de l'include commentaire :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    <?
    // Ajout de commentaires
    if(isset($_POST["BT_Envoyer"]))
    		{
    		if(isset($_COOKIE["id_utilisateur"]))
    			{			
    			$result = mysql_query("
    				INSERT INTO commentaire(
    					contenu
    					, date
    					, id_event
    					, id_utilisateur
    					)
    				VALUES(
    					'" . $_POST["TB_Com"] . "'
    					, '" . date("Y-m-d") . "'
    					, '" . $_GET['id'] ."'
    					, '" . $_COOKIE["id_utilisateur"] . "'
    					)
    					") or die('Erreur de selection '.mysql_error());
     
    			}
    		else
    			{
    			header("Location: inscription.php");
    			}
    		}
    ?>
     
    <form action="http://<?= $_SERVER["SERVER_NAME"] . $_SERVER["SCRIPT_NAME"]; ?>" method="post">
    		<p> Ajouter un commentaire </p>
    		<p> <textarea name="TB_Com" maxlenght="600" rows="15" cols="57"></textarea></p>
    		<p> <input class="sub" type="submit" name="BT_Envoyer" value="Envoyer" /> <a href="profil.php" class="bouton">Revenir</a></p>
    </form>
    Par contre je n'ai pas saisi l'histoire des guillemets avec le type integer. Je doit enlever lesquelles?

    Merci pour vos réponses.

    LenemZ

  6. #6
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 4
    Par défaut
    Problème résolu.
    Un ami m'a dit, en voyant le post, que je ne transmettais pas l'id lorsque je validé le formulaire. Il m'a donc dit de remplacer le form de mon commentaire :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <form action="http://<?= $_SERVER["SERVER_NAME"] . $_SERVER["SCRIPT_NAME"]; ?>" method="post">
    Par :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <form action="lefichierdetraitement.php?id=<?php echo $_GET['id'] ?>" method="post">
    L'id est bien dans la base donnée à présent !

    Merci DaRiaN pour tes réponses et ton temps

    Bonne journée.

    LenemZ

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [MySQL] Problème avec $_GET
    Par linkoff dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 27/04/2010, 15h10
  2. problème avec $_GET['']
    Par crazy_inf dans le forum Langage
    Réponses: 7
    Dernier message: 18/06/2008, 22h07
  3. [Mail] Problème Fonction $_GET[]
    Par lebigboss dans le forum Langage
    Réponses: 3
    Dernier message: 27/04/2007, 09h53
  4. [MySQL] Problème de récupération de variables en $_GET
    Par gussoner dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 07/11/2006, 12h38
  5. [PHP-JS] Problème avec les $_GET J'en peux plus la
    Par schtek2 dans le forum Langage
    Réponses: 8
    Dernier message: 21/05/2006, 21h56

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo