IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

PHP & Base de données Discussion :

Problème avec INSERT / UPDATE [SQL-Server]


Sujet :

PHP & Base de données

  1. #1
    Futur Membre du Club
    Homme Profil pro
    élève ingénieur d'état génie Télécommunications et Réseaux
    Inscrit en
    Août 2011
    Messages
    21
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Activité : élève ingénieur d'état génie Télécommunications et Réseaux
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Août 2011
    Messages : 21
    Points : 7
    Points
    7
    Par défaut Problème avec INSERT / UPDATE
    Bonjours à tous, j'espère que vous allez bien

    J'ai un petit soucis avec un bout de code de php sous un serveur sql server, qui normalement doit me permettre d'ajouter (fonction INSERT) des lignes dans une table users dans la base de donnée ctt_training, pourtant ca ne marche pas !

    P.S : j'ai le même soucis avec la fonction UPDATE :s

    ---------------------------------------------------------

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    <?php session_start(); // On démarre les sessions
     
    require_once("connect.php"); 
    $params = array(1, "id_dossier");
    sqlsrv_query($conn, "SET NAMES latin1_swedish_ci", $params);
     
    define ('systeme_dossiers', 0x01); // Nous définissons les constantes de droits
    define ('systeme_admin', 0x02); // Une constante = un droit
    define ('systeme_gest', 0x08); 
     
     //---Deconnexion
    if(isset($_GET['logout']))
    {
    unset($_SESSION['pseudo']);
    unset($_SESSION['password']);
    }
     
    //----Verification login
    if(!isset($_SESSION['pseudo']) AND !isset($_SESSION['password']))
    {
    header("Location:index.php");
    } 
     
      if (!((int)$_SESSION['droits'] & systeme_admin)) 
      {
    		header("Location:none.php");
    		exit;
      }
     
    $select = sqlsrv_query($conn, "SELECT * FROM permissions WHERE id='2' ", $params)or die(sqlsrv_errors()); // On sélectionne les groupes
    $donnees=sqlsrv_fetch_array($select);
     
    if(isset($_POST['submit'])) // Si le formulaire a été validé
    {
     
    		$nom_prenom=$_POST['nom_prenom'];
    		$service=$_POST['service'];
    		$pseudo = htmlspecialchars($_POST['Pseudo']); // Son pseudo
            $password = $_POST['Password']; // Son mot de passe, 
            $id_groupe = $donnees['id']; // L’ID du groupe
     
     
            $insert = sqlsrv_query($conn, "INSERT INTO users(id, nom_prenom, service, pseudo, password, id_groupe) VALUES('', '.$nom_prenom.', '.$service.', '.$pseudo.', '.$password.', '.$id_groupe.')", $params)or die(sqlsrv_errors()); // On insère le tout !
     
            if($insert) echo 'L\'ajout de l\'utilisateur a reussi !'; // Si c'est bon, message OK
            else echo 'L\'ajout de l\'utilisateur a raté !'; // Sinon, on affiche un message d'erreur
    }
    ?>
    -------------------------------------------------
    Le code ci-dessus a été d'abord réalisé sous MySQL, et donc je pense que le problème est apparu lors de la translation vers SQL SERVER, donc si quelqu'un arrive à détecter mon problème, qu'il m'aide svp

    merci d'avance

  2. #2
    Futur Membre du Club
    Homme Profil pro
    élève ingénieur d'état génie Télécommunications et Réseaux
    Inscrit en
    Août 2011
    Messages
    21
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Activité : élève ingénieur d'état génie Télécommunications et Réseaux
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Août 2011
    Messages : 21
    Points : 7
    Points
    7
    Par défaut
    L'erreur qui s'affiche est une page blanche avec un seul mot : array()

  3. #3
    Membre éprouvé
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2009
    Messages
    736
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : Maroc

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mai 2009
    Messages : 736
    Points : 1 101
    Points
    1 101
    Par défaut
    Essai de faire des trace pour voir à quel ligne il s’arrête.
    A la recherche d'un film : http://chercher-un-film.com

  4. #4
    Futur Membre du Club
    Homme Profil pro
    élève ingénieur d'état génie Télécommunications et Réseaux
    Inscrit en
    Août 2011
    Messages
    21
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Activité : élève ingénieur d'état génie Télécommunications et Réseaux
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Août 2011
    Messages : 21
    Points : 7
    Points
    7
    Par défaut
    Citation Envoyé par m4riachi Voir le message
    Essai de faire des trace pour voir à quel ligne il s’arrête.
    Comment faire cela ? en php !

  5. #5
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par abd_aabd Voir le message
    Comment faire cela ? en php !
    Bonjour, tu ajoutes au fil de ton code (à des endroits "stratégiques") :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    <?php
    //.....
    echo '1- jusqu\'ici, ca va';
    //.....
    echo '2- jusqu\'ici, ca va encore';
    //.....
    echo '3- jusqu\'ici, ca va toujours';
    //.....
    ?>
    Tu verras bien où ca coince ...

    Je ne connais pas SQLSRV mais ...
    INSERT ou UPDATE : tu n'as AUCUNE protection contre les injections SQL ?
    -> équivalent à mysql_real_escape_string() ?
    - sqlsrv_prepare() ?

  6. #6
    Futur Membre du Club
    Homme Profil pro
    élève ingénieur d'état génie Télécommunications et Réseaux
    Inscrit en
    Août 2011
    Messages
    21
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Activité : élève ingénieur d'état génie Télécommunications et Réseaux
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Août 2011
    Messages : 21
    Points : 7
    Points
    7
    Par défaut
    Citation Envoyé par jreaux62 Voir le message
    Bonjour, tu ajoutes au fil de ton code (à des endroits "stratégiques") :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    <?php
    //.....
    echo '1- jusqu\'ici, ca va';
    //.....
    echo '2- jusqu\'ici, ca va encore';
    //.....
    echo '3- jusqu\'ici, ca va toujours';
    //.....
    ?>
    Tu verras bien où ca coince ...

    INSERT ou UPDATE : tu n'as AUCUNE protection contre les injections SQL
    -> équivalent à mysql_real_escape_string() ?
    - sqlsrv_prepare() ?
    Merci pour ta réponse, c'est génial, et ca me remonte des erreurs ! ooof
    excusez moi, mais je commence à me douter que $_POST fonctionne bien sur SQL SERVER !!

    Notice: Undefined variable: insert in C:\wamp\www\WWWWWW\add_admin.php on line 51

    Je comprends pas pourquoi ? y a t il un problème de syntaxe dans ma requete insert ou quoi ? help please

  7. #7
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par abd_aabd Voir le message
    L'erreur qui s'affiche est une page blanche avec un seul mot : array()
    array() ... ou ... Array ?

    Fais-tu quelque part un echo $params; ? (c'est le seul array visible dans ton code)

    remplace
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ... or die(sqlsrv_errors());
    par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    ... or die('1ere requete (select) : '.sqlsrv_errors());
    ......
    ... or die('2eme requete (insert) : '.sqlsrv_errors());
    et aussi (début de script) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $params = array(1, "id_dossier");
    sqlsrv_query($conn, "SET NAMES latin1_swedish_ci", $params) or die('erreur (names) : '.sqlsrv_errors());

  8. #8
    Futur Membre du Club
    Homme Profil pro
    élève ingénieur d'état génie Télécommunications et Réseaux
    Inscrit en
    Août 2011
    Messages
    21
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Activité : élève ingénieur d'état génie Télécommunications et Réseaux
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Août 2011
    Messages : 21
    Points : 7
    Points
    7
    Par défaut
    Citation Envoyé par jreaux62 Voir le message
    array() ... ou ... Array ?

    Fais-tu quelque part un echo $params; ? (c'est le seul array visible dans ton code)
    Je m'excuse, c'est Array et non pas array()

    Même après ton modif, je reçois la même erreur : qui est

    Notice: Undefined variable: insert in C:\wamp\www\WWWWWW\add_admin.php on line 53
    L'ajout de l'utilisateur a raté !

    et après ajout du fameux :

    or die('erreur (names) : '.sqlsrv_errors())

    Je reçois : erreur (names) : Array

  9. #9
    Expert éminent
    Avatar de kdmbella
    Homme Profil pro
    Développeur Web
    Inscrit en
    Août 2010
    Messages
    799
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Cameroun

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Août 2010
    Messages : 799
    Points : 7 039
    Points
    7 039
    Par défaut
    tu devrait utiliser la balise code pour rendre ton code plus lisible
    et aussi montre nous le code de la ligne 51 incriminée
    "L'humanité se divise en trois catégories : ceux qui ne peuvent pas bouger, ceux qui peuvent bouger, et ceux qui bougent."
    - Benjamin Franklin

    De l'aide en Javascript , consultez la FAQ JS.

    De l'aide sur le FrameWork JS DHTMLX : posez vos questions sur le forum des Bibliothèques & Frameworks JS.

  10. #10
    Membre éprouvé
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2009
    Messages
    736
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : Maroc

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mai 2009
    Messages : 736
    Points : 1 101
    Points
    1 101
    Par défaut
    Fais un echo de ta requête et exécute la directement sous sqlserver pour voir si il y'a des erreur.
    A la recherche d'un film : http://chercher-un-film.com

  11. #11
    Futur Membre du Club
    Homme Profil pro
    élève ingénieur d'état génie Télécommunications et Réseaux
    Inscrit en
    Août 2011
    Messages
    21
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Activité : élève ingénieur d'état génie Télécommunications et Réseaux
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Août 2011
    Messages : 21
    Points : 7
    Points
    7
    Par défaut
    Citation Envoyé par m4riachi Voir le message
    Fais un echo de ta requête et exécute la directement sous sqlserver pour voir si il y'a des erreur.
    Désolé mais ma requête est relié à un formulaire php, donc je ne peux pas l'isoler du formulaire et l'executer sur sql server management studio :s

  12. #12
    Membre éprouvé
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2009
    Messages
    736
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : Maroc

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mai 2009
    Messages : 736
    Points : 1 101
    Points
    1 101
    Par défaut
    A la place de
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $insert = sqlsrv_query($conn, "INSERT INTO users(id, nom_prenom, service, pseudo, password, id_groupe) VALUES('', '.$nom_prenom.', '.$service.', '.$pseudo.', '.$password.', '.$id_groupe.')", $params)or die(sqlsrv_errors());
    Faire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     echo "INSERT INTO users(id, nom_prenom, service, pseudo, password, id_groupe) VALUES('', '.$nom_prenom.', '.$service.', '.$pseudo.', '.$password.', '.$id_groupe.')";
    A la recherche d'un film : http://chercher-un-film.com

  13. #13
    Membre éprouvé
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2009
    Messages
    736
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : Maroc

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mai 2009
    Messages : 736
    Points : 1 101
    Points
    1 101
    Par défaut
    Je viens de remarquer qu'il y a des point dans ta requête que tu dois enlever.
    A la recherche d'un film : http://chercher-un-film.com

  14. #14
    Futur Membre du Club
    Homme Profil pro
    élève ingénieur d'état génie Télécommunications et Réseaux
    Inscrit en
    Août 2011
    Messages
    21
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Activité : élève ingénieur d'état génie Télécommunications et Réseaux
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Août 2011
    Messages : 21
    Points : 7
    Points
    7
    Par défaut
    Voilà j'ai changé le code comme tu me l'as montré, voilà mon nouveau bout de code

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    <?php if(isset($_POST['submit'])) // Si le formulaire a été validé
    {
     
    		$nom_prenom=$_POST['nom_prenom'];
    		$service=$_POST['service'];
    		$pseudo = htmlspecialchars($_POST['Pseudo']); // Son pseudo
            $password = $_POST['Password']; // Son mot de passe, 
            $id_groupe = '2'; // L’ID du groupe	
     
     echo "INSERT INTO users(id, nom_prenom, service, pseudo, password, id_groupe) VALUES('', '.$nom_prenom.', '.$service.', '.$pseudo.', '.$password.', '.$id_groupe.')";
     
            if($insert) { echo 'L\'ajout de l\'utilisateur a reussi !';} // Si c'est bon, message OK
            else { echo 'L\'ajout de l\'utilisateur a raté !';} // Sinon, on affiche un message d'erreur
    }
     ?>
    Voilà ce que je reçois dans le navigateur :

    INSERT INTO users(id, nom_prenom, service, pseudo, password, id_groupe) VALUES('', '.adil.', '.infos.', '.adil.', '.ctt.', '.2.')
    Notice: Undefined variable: insert in C:\wamp\www\WWWWWW\add_admin.php on line 45
    L'ajout de l'utilisateur a raté !

  15. #15
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par m4riachi Voir le message
    Je viens de remarquer qu'il y a des point dans ta requête que tu dois enlever.
    bien vu !

    Voila pourquoi je préfère écrire la requête avant, dans une variable (-> meilleure lisibilité du code, donc plus facile à déboger).

    1/ en échappant les variables :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    <?php
    $insert_sql = "INSERT INTO users
    	(id, nom_prenom, service, pseudo, password, id_groupe) 
    	VALUES
    	('', '".$nom_prenom."', '".$service."', '".$pseudo."', '".$password."', '".$id_groupe."');"
    	;
    $insert = sqlsrv_query($conn, $insert_sql, $params)or die(sqlsrv_errors());
    ?>
    2/ ou (autre choix d'écriture) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    <?php
    $insert_sql = "INSERT INTO users
    	(id, nom_prenom, service, pseudo, password, id_groupe) 
    	VALUES
    	('', '$nom_prenom', '$service', '$pseudo', '$password', '$id_groupe');"
    	;
    $insert = sqlsrv_query($conn, $insert_sql, $params)or die(sqlsrv_errors());
    ?>

  16. #16
    Membre éprouvé
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2009
    Messages
    736
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : Maroc

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mai 2009
    Messages : 736
    Points : 1 101
    Points
    1 101
    Par défaut
    exécute la requête afficher sous sqlserver pour vois s'il y a des erreur
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    INSERT INTO users(id, nom_prenom, service, pseudo, password, id_groupe) VALUES('', '.adil.', '.infos.', '.adil.', '.ctt.', '.2.')
    A la recherche d'un film : http://chercher-un-film.com

  17. #17
    Invité
    Invité(e)
    Par défaut
    @m4riachi : ce n'était pas les $ qu'il fallait enlever !
    (voir ma précédente réponse)

  18. #18
    Futur Membre du Club
    Homme Profil pro
    élève ingénieur d'état génie Télécommunications et Réseaux
    Inscrit en
    Août 2011
    Messages
    21
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Activité : élève ingénieur d'état génie Télécommunications et Réseaux
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Août 2011
    Messages : 21
    Points : 7
    Points
    7
    Par défaut
    Citation Envoyé par m4riachi Voir le message
    exécute la requête afficher sous sqlserver pour vois s'il y a des erreur
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    INSERT INTO users(id, nom_prenom, service, pseudo, password, id_groupe) VALUES('', '.adil.', '.infos.', '.adil.', '.ctt.', '.2.')

    OMG : ca donne le résultat suivant sur SQL SERVER MANAGEMENT STUDIO !

    Impossible d'insérer une valeur explicite dans la colonne identité de la table 'users' quand IDENTITY_INSERT est défini à OFF.

    Ce problème d'identity insert se résourd par un simple :
    SET IDENTITY_INSERT users ON
    et ca s'ajoute à la base de donnée

    Mais en php comment faire ?

  19. #19
    Membre éprouvé
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2009
    Messages
    736
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : Maroc

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mai 2009
    Messages : 736
    Points : 1 101
    Points
    1 101
    Par défaut
    1er enlève les points dans ta requête ou faire comme a dit @jreaux62.
    Tu pourra exécuté le Set avec
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    sqlsrv_query($conn, "SET IDENTITY_INSERT users ON", $params)or die(sqlsrv_errors());
    A la recherche d'un film : http://chercher-un-film.com

  20. #20
    Futur Membre du Club
    Homme Profil pro
    élève ingénieur d'état génie Télécommunications et Réseaux
    Inscrit en
    Août 2011
    Messages
    21
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Activité : élève ingénieur d'état génie Télécommunications et Réseaux
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Août 2011
    Messages : 21
    Points : 7
    Points
    7
    Par défaut
    Citation Envoyé par m4riachi Voir le message
    1er enlève les points dans ta requête ou faire comme a dit @jreaux62.
    Tu pourra exécuté le Set avec
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    sqlsrv_query($conn, "SET IDENTITY_INSERT users ON", $params)or die(sqlsrv_errors());
    Je pense que j'ai tout essayé, et là je pense que le problème se trouve au niveau des variables que j'ai définis a partir du formulaire avec la méthode POST,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    $nom_prenom=$_POST['nom_prenom'];
    		$service=$_POST['service'];
    		$pseudo = htmlspecialchars($_POST['Pseudo']); // Son pseudo
            $password = $_POST['Password']; // Son mot de passe, 
            $id_groupe = '2'; // L’ID du groupe
    Merci bien de me préciser si cette méthode marche bien avec le SQL SERVER, et si il n'a pas des attributs spéciaux ou je sais pas quoi

    mercii

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. [VB6] Problème avec insertion d'icônes dans menu
    Par marsup54 dans le forum VB 6 et antérieur
    Réponses: 3
    Dernier message: 02/03/2006, 21h38
  2. [VB6] Problème avec requête Update
    Par bb62 dans le forum VB 6 et antérieur
    Réponses: 3
    Dernier message: 02/02/2006, 03h40
  3. Réponses: 12
    Dernier message: 25/11/2005, 12h29
  4. Réponses: 3
    Dernier message: 10/05/2005, 11h02
  5. STL : std::set problème avec insert ...
    Par Big K. dans le forum MFC
    Réponses: 13
    Dernier message: 08/11/2003, 01h02

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo