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 :

Certains champs de la table ne sont pas remplis [MySQL]


Sujet :

PHP & Base de données

  1. #1
    Membre à l'essai
    Inscrit en
    Mai 2010
    Messages
    35
    Détails du profil
    Informations forums :
    Inscription : Mai 2010
    Messages : 35
    Points : 22
    Points
    22
    Par défaut Certains champs de la table ne sont pas remplis
    Bonjour,
    j'essaye d'inserer dans ma base de données un nouvel enregistrement,je le fais tout le temps mais là sérieux je sais pas pouquoi ca marche que pour les champs 'identifiant' et 'description',les autres champs ne sont pas du tout remplis.Ce serait sympa si quelqu'un pourrait m'aider.

    voici mon 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
    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
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
     
    <?php
    require("config.php");// connexion a ma BD
     
    	$id=$_POST['identifiant'];
        $description=$_POST['description'];
    	$mot_de_passe=$_POST['mot_de_passe'];
    	$mot_de_passe1=$_POST['mot_de_passe1'];
    	$service=$_POST['service'];
    	$nom=$_POST['nom'];
    	$prenom=$_POST['prenom'];
    	$erreur=NULL;
     
    	if($id=='' or $description=='' or $mot_de_passe=''or $mot_de_passe1='' or $service='' or $nom='' or $prenom='') 
     
    	{
    		$erreur="<span style='color:black'>Informations manquantes ou incohérentes! Vérifiez tous les champs.</span>"; 
    		echo"$erreur";
    		include("formulaire_ajout_medecin.php");
    		exit();
     
    	}
     
     
     if($mot_de_passe!=$mot_de_passe1) 
     
    	{
    		$erreur="<span style='color:black'>Les mots de passe saisis ne correspondent pas.</span>"; 
    		echo"$erreur";
    		include("formulaire_ajout_medecin.php");
    		exit();	
    	}
        if($erreur!=NULL)
        {
     
           return FALSE;
     
        }
     
    else
    {
     
    		 $query = "INSERT INTO `sante`.`administrateurs` (`identifiant`,`mot_de_passe`,`description`,`service`,`nom`,`prenom`) VALUES ('$id ','$mot_de_passe','$description','$service','$nom','$prenom') "; 
     
           $result= mysql_query($query); 
     
    		  if($result)
    		  {
    		  $erreur="<span style='color:black'>Medecin inséré avec succès!.</span>";
    		  echo"$erreur";
    		  include("formulaire_ajout_medecin.php");
    		  exit();
    			}
      		  else{
                 $erreur="<span style='color:black'>Insertion impossible!Un medecin porte peut etre déjà cet Identifiant ou autre erreur!</span>";
    			  echo"$erreur";
    		  include("formulaire_ajout_medecin.php");
               }
     
     
    	 }
    ?>

  2. #2
    Invité
    Invité(e)
    Par défaut
    Bonjour,
    utilise mysql_real_escape_string()

  3. #3
    Expert éminent
    Avatar de Benjamin Delespierre
    Profil pro
    Développeur Web
    Inscrit en
    Février 2010
    Messages
    3 929
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Février 2010
    Messages : 3 929
    Points : 7 762
    Points
    7 762
    Par défaut
    Aïe, c'est pas la bonne syntaxe que tu nous a écrit là.

    Alors déjà:
    - le "ou" logique en PHP c'est l'opérateur || et non pas l'opérateur OR, le "et" logique c'est l'opérateur &&
    - si tu ne teste pas l'existence des index de ton tableau, tu va polluer ton log (ou ton affichage) avec des tonnes de messages d'erreur
    - tu utilise alternativement = et == dans une condition. Je rappelle pour mémoire que = est l'opérateur d'affectation et == l'opérateur de comparaison
    - utilise les directives isset et empty pour vérifier les données plutôt que de comparer des valeurs de chaines (même chaine vide) c'est plus rapide.

    Corrige tout ça et reviens nous voir

    -- Edit

    Allez, pour t'aider, voici comment on insère des données en base à partir de données GET (ou POST):
    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
     
    if (!empty($_GET['a'] &&
        !empty($_GET['b'] &&
        !empty($_GET['c']) {
        $a = mysql_real_escape_string($_GET['a']);
        $b = mysql_real_escape_string($_GET['b']);
        $c = mysql_real_escape_string($_GET['c']);
     
        $query = "INSERT INTO `table` VALUES ('$a','$b','$c')";
        if ($res = mysql_query($query)) {
           echo "Ligne insérée: $a $b $c";
        else
           echo "Ligne non insérée";
    }
    else {
      echo "Il manque des paramètres";
    }

  4. #4
    Membre à l'essai
    Inscrit en
    Mai 2010
    Messages
    35
    Détails du profil
    Informations forums :
    Inscription : Mai 2010
    Messages : 35
    Points : 22
    Points
    22
    Par défaut
    Ok je nettoie un peu,back soon on not!!

  5. #5
    Membre à l'essai
    Inscrit en
    Mai 2010
    Messages
    35
    Détails du profil
    Informations forums :
    Inscription : Mai 2010
    Messages : 35
    Points : 22
    Points
    22
    Par défaut Done
    Bon dejà j'ai créé une classe pour sécuriser les entrées du formulaire.Apres avoir inséré des empty() à la place des chaines vides et des "||" à la place des "OR"



    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
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
     
    <?php
     
        class Securite
    	{
    		// Données entrantes
    		public static function bdd($string)
    		{
    			// On regarde si le type de string est un nombre entier (int)
    			if(ctype_digit($string))
    			{
    				$string = intval($string);
    			}
    			// Pour tous les autres types
    			else
    			{
    				$string = mysql_real_escape_string($string);
    				$string = addcslashes($string, '%_');
    			}
     
    			return $string;
     
    		}
    		// Données sortantes
    		public static function html($string)
    		{
    			return htmlentities($string);
    		}
    	}
    ?>
    <?php
    global $erreur;
     
    require("config.php");
     
    	$id=Securite::bdd($_POST['identifiant']);
        $description=Securite::bdd($_POST['description']);
    	$mot_de_passe=Securite::bdd($_POST['mot_de_passe']);
    	$mot_de_passe1=Securite::bdd($_POST['mot_de_passe1']);
    	$service=Securite::bdd($_POST['service']);
    	$nom=Securite::bdd($_POST['nom']);
    	$prenom=Securite::bdd($_POST['prenom']);
    	$erreur=NULL;
     
    	if(empty($id)||empty($description)||empty($mot_de_passe)|| empty($mot_de_passe1)||empty($service)||empty($nom)||empty($prenom) )
     
    	{
    		$erreur="<span style='color:black'>Informations manquantes ou incohérentes! Vérifiez tous les champs.</span>"; 
    		echo"$erreur";
    		include("formulaire_ajout_medecin.php");
    		exit();
     
    	}
     
     
     if($mot_de_passe!=$mot_de_passe1) 
     
    	{
    		$erreur="<span style='color:black'>Les mots de passe saisis ne correspondent pas.</span>"; 
    		echo"$erreur";
    		include("formulaire_ajout_medecin.php");
    		exit();	
    	}
        if($erreur!=NULL)
        {
     
           return FALSE;
     
        }
     
    else
    {
     
    		 $query = "INSERT INTO `sante`.`administrateurs` (`identifiant`,`mot_de_passe`,`description`,`service`,`nom`,`prenom`) VALUES ('$id ','$mot_de_passe','$description','$service','$nom','$prenom') "; 
     
           $result= mysql_query($query); 
     
    		  if($result)
    		  {
    		  $erreur="<span style='color:black'>Medecin inséré avec succès!.</span>";
    		  echo"$erreur";
    		  include("formulaire_ajout_medecin.php");
    		  exit();
    			}
      		  else{
                 $erreur="<span style='color:black'>Insertion impossible!Un medecin porte peut etre déjà cet Identifiant ou autre erreur!</span>";
    			  echo"$erreur";
    		  include("formulaire_ajout_medecin.php");
               }
     
     
    	 }
     
    ?>

  6. #6
    Membre à l'essai
    Inscrit en
    Mai 2010
    Messages
    35
    Détails du profil
    Informations forums :
    Inscription : Mai 2010
    Messages : 35
    Points : 22
    Points
    22
    Par défaut
    et il marche

  7. #7
    Expert éminent
    Avatar de Benjamin Delespierre
    Profil pro
    Développeur Web
    Inscrit en
    Février 2010
    Messages
    3 929
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Février 2010
    Messages : 3 929
    Points : 7 762
    Points
    7 762
    Par défaut
    Bon dejà j'ai créé une classe pour sécuriser les entrées du formulaire.
    Cette fonctionnalité existe déjà en PHP et ça s'appelle les filtres.

  8. #8
    Membre à l'essai
    Inscrit en
    Mai 2010
    Messages
    35
    Détails du profil
    Informations forums :
    Inscription : Mai 2010
    Messages : 35
    Points : 22
    Points
    22
    Par défaut
    oui,pas "créé" mais plutot"utilisé" les filtres

  9. #9
    Expert éminent
    Avatar de Benjamin Delespierre
    Profil pro
    Développeur Web
    Inscrit en
    Février 2010
    Messages
    3 929
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Février 2010
    Messages : 3 929
    Points : 7 762
    Points
    7 762
    Par défaut
    Je ne vois pourtant aucun filtre dans ton code, tu effectues des vérifications manuelles qui en soit n'est pas une mauvaise chose. Mais je te recommande de jeter un oeil sur la documentation des filtres, tu verra c'est très pratique et surtout très puissant.

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

Discussions similaires

  1. [AC-2003] Certaines ligne de ma table ne sont pas sélectionnées
    Par pedrus16 dans le forum Requêtes et SQL.
    Réponses: 14
    Dernier message: 24/06/2009, 11h34
  2. Modifier les valeurs de certains champs d'une table
    Par Xorbane dans le forum Requêtes et SQL.
    Réponses: 6
    Dernier message: 22/10/2007, 22h10
  3. Réponses: 3
    Dernier message: 26/07/2007, 15h54
  4. Réponses: 4
    Dernier message: 06/03/2007, 12h00
  5. [CR XI] Les nouveaux champs d'une table n'apparaissent pas
    Par david_chardonnet dans le forum SAP Crystal Reports
    Réponses: 4
    Dernier message: 03/04/2006, 11h20

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