Page 1 sur 1

probleme avec if isset get

Posté : 02 nov. 2011, 20:57
par squallblanc
bonjours a tous :)
je sollicite votre aide car j'ai un formulaire de contact qui insert les données dans une table message. Le formulaire contact fonctionne parfaitement tous est stocké dans ma base sauf un champ :colere2: ! Celui de l'id que je recupère via un if isset get.

Voici le code:
<?php 
include('../php/connexion_bd.php');	

if(isset($_GET['idCom']))
{
$idCom = $_GET['idCom'];
}

    // on teste si le formulaire a bien été soumis
    if (isset($_POST['go']) && $_POST['go'] == 'Envoyer') { 
       if (empty($_POST['nom']) || empty($_POST['prenom']) || empty($_POST['email']) || empty($_POST['message'])) { 
          $erreur = 'Au moins un des champs est vide.'; 
       } 
       else { 
			mysql_connect("$nom_du_serveur","$nom_utilisateur","$passe");
			mysql_select_db("$nom_de_la_base") or die('Impossible de s&eacute;lectionner une base de donn&eacute;e. Assurez vous d\'avoir correctement remplit les donn&eacute;es du fichier connexion_bd.php.');
          // si tout a été bien rempli, on insère le message dans notre table SQL
          $sql = 'INSERT INTO messages VALUES("",".$idCom.", "'.date("Y-m-d H:i:s").'", "'.mysql_escape_string($_POST['nom']).'", "'.mysql_escape_string($_POST['prenom']).'", "'.mysql_escape_string($_POST['email']).'", "'.mysql_escape_string($_POST['message']).'")'; 
          mysql_query($sql) or die('Erreur SQL !'.$sql.'<br />'.mysql_error()); 
     
          mysql_close(); 
     
          header('Location: index.php'); 
          exit(); 
       }  
    } 
?>
Le champ idCom reste vide alors que si je fais un echo sur la variable $idCom ca affiche parfaitement le numero de l id passé dans l'url.
Merci

Re: probleme avec if isset get

Posté : 02 nov. 2011, 22:04
par xTG
Problème de quotes. ;)

Re: probleme avec if isset get

Posté : 02 nov. 2011, 22:28
par squallblanc
tu pense a quoi exactement ? car j'ai testé tout ce que je connaissais...

Ca je pense : "'.$idCom.'"? mais c pareil ca change rien par contre j'ai fais une bidouille qui marche mais c'est horrible comme code :
<?php 
include('../php/connexion_bd.php');	
if(isset($_GET['idCom']))
{
$_POST['idCom'] = $_GET['idCom'];
}
    // on teste si le formulaire a bien été soumis
    if (isset($_POST['go']) && $_POST['go'] == 'Envoyer') { 
       if (empty($_POST['nom']) || empty($_POST['email']) || empty($_POST['objet']) || empty($_POST['message'])) { 
          $erreur = 'Au moins un des champs est vide.'; 
       } 
       else { 
			mysql_connect("$nom_du_serveur","$nom_utilisateur","$passe");
			mysql_select_db("$nom_de_la_base") or die('Impossible de s&eacute;lectionner une base de donn&eacute;e. Assurez vous d\'avoir correctement remplit les donn&eacute;es du fichier connexion_bd.php.');
          // si tout a été bien rempli, on insère le message dans notre table SQL
          $sql = 'INSERT INTO messages VALUES("","'.$_POST['idCom'].'", "'.date("Y-m-d H:i:s").'", "'.mysql_escape_string($_POST['nom']).'", "'.mysql_escape_string($_POST['prenom']).'", "'.mysql_escape_string($_POST['email']).'", "'.mysql_escape_string($_POST['objet']).'", "'.mysql_escape_string($_POST['message']).'")'; 
          mysql_query($sql) or die('Erreur SQL !'.$sql.'<br />'.mysql_error()); 
     
          mysql_close(); 

			echo $mess="<center><span style='color:green; font-weight:bold;'>Nous avons bien reçus votre message. Nous vous répondrons prochainement<br /> Cette fenetre ce fermera automatiquement<br /></span><A HREF='javascript:window.close()'>Fermer la fenetre</A><noscript></center>";
          exit(); 
       }  
    } 
?>
et pour le formulaire : 
[code]
				 <form name="form1" method="post" action="pop_contact.php">
                 <input name="idCom" type="hidden" id="idCom" value="<?php if (isset($_POST['idCom'])) echo stripslashes(htmlentities(trim($_POST['idCom']))); ?>">
					  <table width="430" border="0" cellpadding="2" cellspacing="0" class="txt_petit_noir">
					 <tr>
					   <td bgcolor="#EAEEED">&nbsp;</td>
					   <td bgcolor="#EAEEED"><strong>Nom* </strong></td>
					   <td bgcolor="#EAEEED"><input name="nom" type="text" id="nom" size="49" value="<?php if (isset($_POST['nom'])) echo stripslashes(htmlentities(trim($_POST['nom']))); ?>"></td>

					 </tr>
					 <tr>
					   <td>&nbsp;</td>
					   <td>Pr&eacute;nom</td>
					   <td><input name="prenom" type="text" id="prenom" size="49" value="<?php if (isset($_POST['prenom'])) echo stripslashes(htmlentities(trim($_POST['prenom']))); ?>"></td>
[/code]
Ce n'est pas digne d'un codeur mais bon ca marche :shock:

Re: probleme avec if isset get

Posté : 03 nov. 2011, 06:21
par aurel80
Bonjour,

évitez d'utilisé mysql_espace_string cette fonction est complétement dépasser depuis un moment,utilisée maintenant mysql_real_espace_string,je vous est corriger votre code et normalement l'erreur qui vous embête :
<?php 
include('../php/connexion_bd.php');     

if(isset($_GET['idCom']))
{
$idCom = $_GET['idCom'];
}

    // on teste si le formulaire a bien été soumis
    if (isset($_POST['go']) && $_POST['go'] == 'Envoyer') { 
       if (empty($_POST['nom']) || empty($_POST['prenom']) || empty($_POST['email']) || empty($_POST['message'])) { 
          $erreur = 'Au moins un des champs est vide.'; 
       } 
       else { 
                        mysql_connect($nom_du_serveur, $nom_utilisateur, $passe);
                        mysql_select_db($nom_de_la_base) or die('Impossible de s&eacute;lectionner une base de donn&eacute;e. Assurez vous d\'avoir correctement remplit les donn&eacute;es du fichier connexion_bd.php.');
          // si tout a été bien rempli, on insère le message dans notre table SQL
          $sql = 'INSERT INTO messages VALUES("'.$idCom.'", "'.date("Y-m-d H:i:s").'", "'.mysql_real_escape_string($_POST['nom']).'",
		  "'.mysql_real_escape_string($_POST['prenom']).'", "'.mysql_real_escape_string($_POST['email']).'",
		  "'.mysql_real_escape_string($_POST['message']).'")'; 
          mysql_query($sql) or die('Erreur SQL !'.$sql.'<br />'.mysql_error()); 
     
          mysql_close(); 
     
          header('Location: index.php'); 
          exit(); 
       }  
    } 
?>
 

Re: probleme avec if isset get

Posté : 03 nov. 2011, 20:05
par squallblanc
bonjour merci pour votre aide mais le code me retourne l'erreur :

Erreur SQL !INSERT INTO messages VALUES("", "2011-11-03 18:40:15", "test", "test", "[email protected]", "hgjg", "dfdsfsdfsdfsdf")
Column count doesn't match value count at row 1

Car l'id n'est pas renseigné.

Re: probleme avec if isset get

Posté : 03 nov. 2011, 20:10
par moogli
Heu nan nan le message d'erreur dit que la requête ne remplie pas la ligne complètement ou de trop c'est pas du tout la même chose car le 1er champs est bien renseigner !

En clair y a trop ou pas assez de valeurs dans le value de la requête.


@+

Re: probleme avec if isset get

Posté : 03 nov. 2011, 23:14
par squallblanc
oui pas assez car il manque "", avant la variable .idCom.