probleme avec if isset get

Eléphant du PHP | 111 Messages

02 nov. 2011, 20:57

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

ViPHP
xTG
ViPHP | 7331 Messages

02 nov. 2011, 22:04

Problème de quotes. ;)

Eléphant du PHP | 111 Messages

02 nov. 2011, 22:28

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:

Eléphanteau du PHP | 28 Messages

03 nov. 2011, 06:21

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(); 
       }  
    } 
?>
 

Eléphant du PHP | 111 Messages

03 nov. 2011, 20:05

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é.

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 8758 Messages

03 nov. 2011, 20:10

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.


@+
Il en faut peu pour être heureux ......

Eléphant du PHP | 111 Messages

03 nov. 2011, 23:14

oui pas assez car il manque "", avant la variable .idCom.