8795 sujets

Développement web côté serveur, CMS

bonjour
avant de vous exposer mon pb j'ai fais des recherches sur internet mais rien trouvé,
j'ai un menu select, je fais ma selection et je valide, j'aimerais enregistrer cela dans ma table forum,
voila le code httml:
<form style="margin-top:50px;margin-top:-10px;" action="/php/enreg_msg.php" method="POST">

<div>Domaine d'activité:<select name="domaine" >
	<option value="domaine_act">Etude et analyse du marché</option>
	<option value="domaine_act">Veille stratégique</option>
        </select>
</div>
<div>Consultant:<select name="consultant">
	<option value="consultant">Richard le boss </option>
	<option value="consultant">Mouloud gonzo</option>
	</select>
</div>
<div>Société:<input type="text" name="societe" value="<?php echo $row[6]; ?>" style="margin-left:2px;background-color:#F7E1FF;"></input></div>
<div>Tél:<input type="text" name="tel" value="<?php echo $row[8]; ?>"style="margin-left:25px;background-color:#F7E1FF;"></input></div>
<div>e-mail:<input type="text" name="mail" value="<?php echo $row[5]; ?>"style="margin-left:10px;background-color:#F7E1FF;"></input></div>
<div style="margin-left:49px;">
<TEXTAREA NAME="msg" COLS="50" style="height:200px; background-color:#F7E1FF;"> Votre Message ici!!!</TEXTAREA>
<input type="submit" name="validez" value="Validez" style="margin-left:-430px;background-color:#F7E1FF;"/>
<input type="hidden" name="id" value="<?php echo $row[0]; ?>" />
</div>
</form>


donc remarquer que c'est uniquement ce qui est entre les balises <select> que j'arrive pas à l'enregistrer, le reste marche parfaitement.

voila le code php pour l'enregistrement :

<?php
session_start();
session_register("login");
session_register("pwd");

$_SESSION['login'] = '$login';


# Variables pour la connection à la base
$base='';
$login='';
$pwd='';

# Connexion 
$res = @mysql_connect('localhost',$login,$pwd);
# selection de la base de données à exploiter
@mysql_select_db($base,$res) or die ("probleme dans selection base"); 

$msg=$_POST['msg'];
$id=$_POST['id'];
$tel=$_POST['tel'];
$societe=$_POST['societe'];
$mail=$_POST['mail'];
$domaine_act=$_POST['domaine_act'];
$consultant=$_POST['consultant'];

$sql_select= "SELECT login FROM info_perso WHERE id ='$id'";
$RegLog_select=mysql_query($sql_select);

if(mysql_numrows($RegLog_select) == 0)
{
echo"non";
}
else{
$sql= "INSERT INTO `forum` (`societe`,`tel`,`mail`,`message`,`domaine_act`,`consultant`) VALUES ('$societe','$tel','$mail','$msg',`$domaine_act`,`$consultant`)";
$RegLog= mysql_query($sql) or exit('Erreur requête : <br />'.mysql_error());

echo"<script> alert(\"la variable est nulle\") </script>";


header("Location: ../index.html");
}

?>



merci pour vos réponse
Smiley smile Smiley sweatdrop Smiley sweatdrop
Modifié par luca (04 Oct 2008 - 19:09)
bonjour,

Quelques conseil pour débugguer ton code par toi même :

utilises les les display error
ou bien encore xdebug

Enlève "@" qui force le passage et voit ce que peut d'indiquer les erreurs retournées.

Dans ce cas $pwd est initialisée à "rien" ($pwd=' ') et passée à la fonction de
connection ...
Tu as une connection à ta base sans mot de passe !?
Ce qui n'est déjà pas une bonne chose ou un "erreur".

Par contre aucune des valeurs passée à la requête SQL n'est sécurisée ...une mauvaise habitude.

Concernant la "vérification" de tes requêtes SQL utilise les fonctions de phpmyadmin par exemple pour tester ta requete et ensuite la fonction permettant , lorsque celle-ci est correcte, de la traduite en PHP.

Voilà quelques astuces pour trouver d'où peut provenir ton erreur .

Smiley cligne
Bonjour

Pour commencé j'aurai déjà une remarque sur le code : pour une meilleur lisibilité et une meilleur maintenabilité, évite de mélangé CSS et HTML. Utilise de préférence une feuille de style externe.

En ce qui concerne ta liste déroulante :




<div>Consultant:<select name="consultant">

	<option value="consultant">Richard le boss </option>

	<option value="consultant">Mouloud gonzo</option>

	</select>


Avec cette liste tu ne récupéreras que la valeur consultant. Une petite recherche devrait t'aider à résoudre ce problème.

Dans ta première requête SQL, tu as mis des quotes autour de l'id alors qu'il s'agit d'un entier (donc pas de quote).

Essaye déjà d'effectuer ces quelques modifications
Modérateur
Salut,

Pour relire Smiley biggol ton html, c'est pas facile.

La fin de ton script php est erroné puisque tu mets un affichage avant le header(); Smiley cligne .

Apparemment, ton code n'est pas très élaborer (gestion des erreurs), donc je peux te conseiller de supprimer le "@" devant les fonctions.

Il me semble que la fonction qui permets de retourner le nombre d'enregistrement est mysql_num_rows() non pas mysql_numrows().

Perso, je préfère faire ce genre de syntaxe :

$sql= "INSERT INTO `forum`";
$sql.="('societe','tel','mail','message','domaine_act','consultant') ";
$sql.="VALUES ('".$societe."','".$tel."','".$mail."','".$msg."','".$domaine_act."','".$consultant."')";


Pour finir, je te conseille également de filtrer tes superglobales Smiley cligne . Sinon attend toi à de sérieux désagréments.

<<<EDIT
La balise input ne s'écrit pas comme ceci : <input ...></input>
C'est plutôt : <input ... /> (comme la balise img) Smiley cligne
EDIT
++
Modifié par Nolem (06 Oct 2008 - 22:00)
@Nolem ... tout à fait
C'est écrit dans la DTD
a écrit :

<!ELEMENT INPUT - O EMPTY -- form control -->

Smiley ravi
Hello, sans faire attention au reste de ton code Smiley ravi , voilà comment tu doit faire:

HTML

<div>
     Consultant:
        <select name="consultant">
	     <option value="id_de_richard">Richard le boss </option>
	     <option value="id_de_mouloud">Mouloud gonzo</option>
	</select>
</div>


PHP

$consultant=$_POST['consultant'];
Modérateur
kzone a écrit :
@Nolem ... tout à fait
C'est écrit dans la DTD

<!ELEMENT INPUT - O EMPTY -- form control -->

Smiley ravi

Smiley ravi