Php et sqlsrv

Résolu
Bonsoir,

je suis debutante en php et sqlsrv j'utilise le serveur IIS je ne fais que mettre tout ce qui me passe par la tete pour pourvoir reussir. j'ai fait la connexion avec ma base mais je n'arrive pas a inserer jfais pas mal de recherche mais je ne trouve rien. au commencement ca me retournait des erreurs que je corrigeait mais la maintenant je ne sais pa quoi faire puisq'il ne retourne pas d'erreur mais une page blanche je ne sais pas quoi corrige. je vous prie g besoin de votre aide, je consulte google depuis 3 jours et rien.

<!DOCTYPE html>
<html>
<head>
 <title></title>
</head>
<body>
<?php
$server= "Sandra-PC\SQLEXPRESS";
$options= array("UID" => "sa", "PWD" =>"sandrads12", "Database" => "G_materiels");
$conn= sqlsrv_connect($server, $options);
if ($conn ===false)
{
    echo"peux pas connecter";
   die( print_r(sqlsrv_errors(), true));

} 



if(isset($_POST['enregistrer'])){
    $nom= $_POST['nom'];
    $prenom= $_POST['prenom'];
    $username= $_POST['username'];
    $password= $_POST['password'];
    $type_admin= $_POST['type_admin'];




$sql= "INSERT INTO administrateur (nom, prenom, username, password, type_admin) VALUES (:nom, :prenom, :username, :password, :type_admin)";
$sql->sqlsrv_execute(array( 
 'nom' =>$nom, 
 'prenom' =>$prenom, 
 'username' =>$username, 
 'password' =>$password, 
 'type_admin' =>$type_admin
  ));

$stmt=sqlsrv_prepare($conn, $sql);
if( sqlsrv_execute( $stmt ) === false ) {
          die( print_r( sqlsrv_errors(), true));
}

?>

<table border="1" >

<tr>
         <td>Nom</td>
            <td><?php echo ($nom)  ?></td>

</tr>

<tr>
         <td>Prenom</td>
            <td><?php echo ($prenom)   ?></td>

</tr>

<tr>
         <td>Identifiant</td>
            <td><?php echo ($username)   ?></td>

</tr>

<tr>
         <td>Mot de passe</td>
            <td><?php echo ($password)   ?></td>

</tr>

<tr>
         <td>Type Administrateur</td>
            <td><?php echo ($type_admin)   ?></td>

</tr>

</table>

<?php }  //fin if?>


<a href="affichage.php" rel="nofollow noopener noreferrer" target="_blank"> Afficher les utilisateurs </a>


</body>
</html>

je ne sais pas quoi faire.

6 réponses

  1. Contributeur
    Je me demande où se termine
    if(isset($_POST['enregistrer'])){
    , où se trouve le
    }
    0
    1. Contributeur
      Peut-être ajouter
      var_dump $_POST;
      avant
      if(isset($_POST['enregistrer'])){ 
      0
      1. erreur -> array(0){}
        0
      2. Contributeur
        Tu peux montrer le code de la page précédente, celle qui permet d'entrer les informations?
        0
      3. @yg_be
        <!DOCTYPE html>
        <html>
        <head>
         <title></title>
         <link rel="stylesheet" type="text/css" href="form.css">
        </head>
        <body>
        
        <div id="header">
                        <div id="tete">
        
        
        </div>
                </div>
        
        
        
        <form method="POST" action=" ajouter.php">
        <a id="top">
          <fieldset>
        <table>
        
        
        <tr>
        
        <td>Nom : </td>
        <td><input type="text" name="nom"></td>
        
        </tr>
        
        
        <tr>
        
        <td>Prenom : </td>
        <td><input type="text" name="prenom"></td>
        
        </tr>
        
        
        <tr>
        
        <td>Identifiant : </td>
        <td><input type="text" name="username"></td>
        
        </tr>
        
        
        <tr>
        
        <td>Mot de passe : </td>
        <td><input type="password" name="password"></td>
        
        </tr>
        
        
        <tr>
        
        <td>Type Administrateur: </td>
        <td><input type="text" name="type_admin"></td>
        
        </tr>
        
        
        <tr>
        
        <td> </td>
        <td><input type="submit" value="Enregistrer"  name="enregistrer"></td>
        
        </tr>
        
        </table>
        
        </a>
        </fieldset>
        </form>
        
        </body>
        </html>


        voila
        EDIT : Ajout des balises de code (la coloration syntaxique).
        Explications disponibles ici : ICI

        Merci d'y penser dans tes prochains messages.
        0
      4. Contributeur
        plutôt
        echo "<br>_post: ".var_dump ($_POST)."<br>";
        0
    2. encore la meme erreur.

      quand j'entre des informations dans la premiere page, elle affiche ces lignes:

      array(6) { ["nom"]=> string(4) "DC" ["prenom"]=> string(6) "Dod" ["username"]=> string(7) "jdod" ["password"]=> string(7) "jdod" ["type_admin"]=> string(6) "simple" ["enregistrer"]=> string(11) "Enregistrer" }
      _post:

      quand jfais un select dans la base g mes resultats tel kel.
      mais l'insertion ne marche pas.
      0
      1. Contributeur
        Je me demande si tu ne confonds pas execute et prepare: en général, on fait un prepare et puis un execute.
        0
    3. c'est ce que jsuis en train de tester.
      ouf ca me donne la grosse tete.
      0
      1. bonjour,
        je ne sais plus quoi faire maintenant.

        quand j'insere directement avec un script ca marche.
        mais ca ne fonctionne pas avec le formulaire et je c pas pourquoi.
        0
        1. Contributeur
          tu as regardé la documentation du
          prepare 
          et du
          execute
          ?
          0
        2. @yg_beoui,
          je faisais un test tout a l'heure avec;

          if( isset($_POST['enregistrer']) && isset ($_POST['nom']) && isset ($_POST['prenom']) && isset ($_POST['username']) && isset ($_POST['Motd_passe']) && isset ($_POST['type_admin'])){
          $nom= $_POST['nom'];
          $prenom= $_POST['prenom'];
          $username= $_POST['username'];
          $Motd_passe= $_POST['Motd_passe'];
          $type_admin= $_POST['type_admin'];

          echo $_POST['nom'];
          ca marchait mais quand j'ajoute la requete sql et autres bah ca ne marche plus je pense que c'est la mon prob mais c pas quoi faire.
          0
        3. Contributeur
          Peut-être ainsi?
          $sql= "INSERT INTO administrateur (nom, prenom, username, password, type_admin) VALUES (?, ?, ?, ?, ?)";
          
          $params = array($nom,$prenom, $username,$password,$type_admin);
          
          $stmt = sqlsrv_query( $conn, $sql, $params);
          if( $stmt === false ) {
               die( print_r( sqlsrv_errors(), true));
          }
          0
        4. @yg_beBonjour

          OUF enfin ça fonctionne.
          Avant y’avait un p’tit probe pendant que je faisais des tests pour l'insertion directe j'avais mis comme code:
          $sql1="SET IDENTITY_INSERT dbo.administrateur ON";
          $ss = sqlsrv_query( $conn, $sql1);

          if( $ss== false ) {
          die( print_r( sqlsrv_errors(), true));

          Quand j'ai mis ton code y'avait un probe d'identité alors j'ai mis OFF a la place de ON et boum ça marche convenablement bon je l'ai enlevé de toute manière, mais l'ancien code ne fonctionne pas quoiqu'il en soit. Pourquoi?? D 'après vous.

          je vous en remercie sincèrement pour votre patience .
          0