Insérer valeurs champs formulaire dans une base SQL Server

Laim
Invité n'ayant pas de compte PHPfrance

23 déc. 2014, 13:42

Bonjour à tous,
Je viens fraîchement de m'inscrire sur ce forum, alors si un sujet similaire au mien a été déjà traité, prière de m'y orienter.
J'ai pas grand problème avec la structure d'un code PHP.
Je bute pourtant depuis 03 jours sur l'insertion des valeurs de champs d'un formulaire dans une base SQL Server Express 2008 R2.
L'insertion ne marche pas quand je récupère les valeurs sous forme de variables. Mais plutôt quand je les fixe.

Ci-joint les 02 parties de codes:
Formulaire ---------------------------------------------------------------------------------
<form method="POST" name="rptcoaching"><table width="992">
<tr>
 <td colspan="10" class="tabhead">RAPPORT DE SEANCE DE COACHING</td></tr>
  <tr><td colspan="10">&nbsp;</td></tr>
  <tr>
    <td width="196">Campagne</td>
    <td colspan="2"><select name="anneecamp"  size="1">
	<option value="-1">Sélectionnez ...</option> <?php
	while ($Lignerescamp=sqlsrv_fetch_array($Reslistcamp)){	
	$campagne=addslashes($Lignerescamp['annee_campagne']);	
	echo '<option value="'.$Lignerescamp['id_campagne'].'">'.$Lignerescamp['annee_campagne'].'</option>\n';	
	};
	?>
	</select></td></tr>
	<tr><td>Date</td>
	<td width="209"><input  type="text" size="15" name="datecoaching" id="start_dt" class="datepicker"></td></tr>
  <tr>
    <td>Evaluateur</td>
    <td><select name="nomeval" size="1">
	<option value="-1">Sélectionnez ...</option><?php 
	while ($lignereseval=sqlsrv_fetch_array($Reslisteval)){	
	$evaluateur=addslashes($lignereseval['Nom_prenoms_coll']);	
	echo '<option value="'.$lignereseval['id_coll'].'">'.$lignereseval['Nom_prenoms_coll'].'</option>\n';	
	};
	?>
	</select></td>
	<td width="55"> Evalu&eacute;</td>
	<td width="485"><select name="nomcoll"  size="1">
      <option value="-1">Sélectionnez ...</option>
      <?php
	while ($lignerescoll=sqlsrv_fetch_array($Reslistcoll)){	
	$evalue=addslashes($lignerescoll['Nom_prenoms_coll']);	
	echo '<option value="'.$lignerescoll['id_coll'].'">'.$lignerescoll['Nom_prenoms_coll'].'</option>\n';  
	};
	?></select>
</td></tr>
<tr>
        <td><input name="valider" type="submit" value="Valider" /></td>
        <td width="263"><input name="reset" type="reset" value="Annuler" /></td>
        <td>&nbsp;</td>
      </tr>
    </table>
  </form>
PHP ---------------------------------------------------------------------------------------joint directement dans le même fichier
<?php
$idcampagne = $_POST['anneecamp'];
$ideval = $_POST['nomeval'];
$idcoll = $_POST['nomcoll'];
$datecoaching = $_POST['datecoaching'];

if (isset($_POST['valider'])) {
$sql ="INSERT INTO dbo.T_seances_coaching(id_campagne,id_evaluateur, id_coll, date_coaching)
   	   VALUES ($idcampagne, $ideval, $idcoll, $datecoaching)";
$stmt = sqlsrv_query($conn, $sql);

}
?>
Merci d'avance

Mammouth du PHP | 688 Messages

23 déc. 2014, 16:25

ajouter un echo $sql après la construction de la requête. exécuter le résultat affiché dans la page dans un gestionnaire de la bdd pour voir si une erreur est indiquée.

ynx
Mammouth du PHP | 586 Messages

23 déc. 2014, 18:26

Salut,

Essaye ceci :
$sql ="INSERT INTO dbo.T_seances_coaching(id_campagne,id_evaluateur, id_coll, date_coaching)
           VALUES ('$idcampagne', '$ideval', '$idcoll', '$datecoaching')";
Dans l'idéal il faudrait également protéger tes variables contre les injections sql.

Bonne journée