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 :

Probleme bizarre sur requête [PDO]


Sujet :

PHP & Base de données

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    288
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 288
    Points : 123
    Points
    123
    Par défaut Probleme bizarre sur requête
    Bonjour,

    J'ai un problème sur une requete, et surtout l'insertion en base.
    Voila je remplie un formulaire dans lequel se trouve une liste deroulante et un input box.

    Lorsque je transmets le resultat de ce formulaire pour la première fois il s'insere bien en base, si je recommence plus rien de s'insere en base, je ne vois pas pourquoi.

    Le formulaire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     <form method="post" id="myform" action="index.php?page=sendinc">
    	<label for="form_numincdt">Incident / DT : </label>
    		<select name="incident">
    			<option value=1>Incident</option>
    			<option value=2>Demande de travaux</option>
    		</select>
     
    	<label for="form_numincdt">Numero correspondant : </label>
    			<input type="text" id="form_numincdt" name="num_incdt"><br/><br/>
     
    	<input type="submit" value="Valider"><input type="reset" value="Effacer">
      </form>
    Le fichier php contenant la requete d'insertion :

    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
    require_once('mysql.php');
     
    //$_REQUEST['num_incdt'];
    //$_REQUEST['incident'];
     
    if($_REQUEST['incident'] ==	1){
    	$sql_in = sprintf("INSERT INTO incident(NUMERO, TYPE_INCIDENT, ETAT, LOGIN, RELANCE) value ('%s', '%s', '%s', '%s', '%s' )",
    	mysql_real_escape_string($_REQUEST['num_incdt']),
    	mysql_real_escape_string('I'),
    	mysql_real_escape_string('A'),
    	mysql_real_escape_string($_SESSION['nom']),
    	mysql_real_escape_string('1'));
     
    	$result_in = $dbh->query($sql_in);
     
    	$message = "L'incident a bien ete cree.";
    	$message .= "<br/><br/><a href=index.php>Retour</a>";
     
    	echo $message;
     
    }else{
    	$sql_dt = sprintf("INSERT INTO incident(NUMERO, TYPE_INCIDENT, ETAT, LOGIN, RELANCE) value ('%s', '%s', '%s', '%s', '%s' )",
    	mysql_real_escape_string($_REQUEST['num_incdt']),
    	mysql_real_escape_string('D'),
    	mysql_real_escape_string('A'),
    	mysql_real_escape_string($_SESSION['nom']),
    	mysql_real_escape_string('1'));
     
    	$result_dt = $dbh->query($sql_dt);
     
    	$message = "La demande de travaux a bien ete cree.";
    	$message .= "<br/><br/><a href=index.php>Retour</a>";
     
    	echo $message;
    }
    Si quelqu'un voit pourquoi

  2. #2
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    $dbh est une connexion PDO ?

    Sinon les value de formulaire sont des chaines
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $_REQUEST['incident'] == "1"

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    288
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 288
    Points : 123
    Points
    123
    Par défaut
    $dbh est bien une connexion PDO.

    Mème en mettant dans guillemets, cela ne s'insère plus a partir du moment ou il y a déja des données dans cette table.

  4. #4
    Nouveau membre du Club
    Étudiant
    Inscrit en
    Avril 2007
    Messages
    27
    Détails du profil
    Informations personnelles :
    Âge : 36

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2007
    Messages : 27
    Points : 34
    Points
    34
    Par défaut
    Bonjour,

    NUMERO est-il la clée primaire de ta table?

    Si oui, alors le problème vient de là, tu ne peux pas avoir deux champs avec la même clef. La meilleure solution est de le mettre en auto-increment et de ne pas laisser l'utilisateur l'entrer, quitte à ajouter un champs numero que l'utilisateur peut définir.

  5. #5
    Membre régulier
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    288
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 288
    Points : 123
    Points
    123
    Par défaut
    Non la clé est sur LOGIN.

  6. #6
    Nouveau membre du Club
    Étudiant
    Inscrit en
    Avril 2007
    Messages
    27
    Détails du profil
    Informations personnelles :
    Âge : 36

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2007
    Messages : 27
    Points : 34
    Points
    34
    Par défaut
    Entre tes deux tentatives d'insertion tu as changé de session?

    Sinon c'est exactement ce que je dis plus haut, une personne ne pourra poster qu'une seule fois.

  7. #7
    Membre régulier
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    288
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 288
    Points : 123
    Points
    123
    Par défaut
    Non je n'ais pas changé de session, cela voudrais dire qu'il faudrait que l'utilisateur se delog puis relog pour rentrer un nouvel incident ? Si c'est ça comment faire pour contourner

    En effet en changeant d'utilisateur cela s'insêre bien, comment faire pour contourner en gardant la mème architecture.

  8. #8
    Nouveau membre du Club
    Étudiant
    Inscrit en
    Avril 2007
    Messages
    27
    Détails du profil
    Informations personnelles :
    Âge : 36

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2007
    Messages : 27
    Points : 34
    Points
    34
    Par défaut
    Non, d'une session à l'autre le nom de l'utilisateur ne changera pas (si il doit se logger).

    Il faut que tu ajoutes un champs de type int en auto_increment dans ta table, qui sera la clée (unique) pour un champs de ta table. Il sera généré automatiquement lors d'un ajout, et cela permettra a un meme utilisateur de reporter plusieurs incident.

    Dans la configuration actuelle, c'est le nom de l'utilisateur qui est clée pour un report d'incident si je comprends bien. La clée d'une table devant être unique, il ne pourra y avoir qu'un seul enregistrement pour chaque utilisateur.

    Suis-je assez clair ou c'est encore flou ?

  9. #9
    Membre régulier
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    288
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 288
    Points : 123
    Points
    123
    Par défaut
    Non c'est bon, c'est clair, merci pour l'aide

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Probleme #VALEURMULTI sur requête
    Par Isbak13 dans le forum Webi
    Réponses: 5
    Dernier message: 21/06/2011, 18h55
  2. probleme bizarre sur le type double
    Par Garra dans le forum C++
    Réponses: 10
    Dernier message: 13/12/2010, 23h45
  3. Probleme bizarre sur FTP
    Par Kahlyv dans le forum Sécurité
    Réponses: 2
    Dernier message: 26/03/2007, 20h03
  4. Probleme bizarre sur relief d'un bouton
    Par Kara dans le forum Balisage (X)HTML et validation W3C
    Réponses: 3
    Dernier message: 21/07/2005, 12h32
  5. Probleme bizarre d affichage sur une radeon 9200 SE
    Par venomelektro dans le forum OpenGL
    Réponses: 6
    Dernier message: 03/12/2004, 11h11

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