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 :

Insertion données dans base


Sujet :

PHP & Base de données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2008
    Messages
    67
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 67
    Par défaut Insertion données dans base
    Bonjour,
    J'essaie en vain d'écrire un script correct pour insérer des données dans ma base mysql.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    $database->setQuery("INSERT INTO jos_societe(id_societe,nomsoc,etablissement,sadr,scp,sville,spays) VALUES ('2000','$nomsoc','$etablissement','$sadr','$scp','$sville','$spays')");
      $database->query();
    Tout d'abord j'aimerais savoir comment faire pour récupérer automatiquement un id non utilisé et qui suit les autres ?
    exemple : le dernier id de ma table est 150, il faudrait qu'automatiquement il rentre le prochain avec l'id 151.

    Autres problemes : Si je ne remplie pas tous les champs du formulaire, la ligne ne sera pas inséré dans mysql. Comment faire pour éviter ca ?

  2. #2
    Invité
    Invité(e)
    Par défaut
    il faudrait un message d'erreur pour pouvoir t'aider.Je pense que ça viens du fait que tu donne un id deja utilise.

    Pour donner un id non utilisé ... quel est l'interet ? un auto_increment n'est pas suffisant ?

    Pour ta dernière question j'ai pas bien compris, tu peut développer stp ?

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2008
    Messages
    67
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 67
    Par défaut
    Je vais essayer de m'exprimer un peu mieux :
    J'ai un formulaire qui permet de d'enregistrer des sociétés. L'utilisateur rentre donc plusieurs champs (nom, etablissement, adresse, ...). Le problème est que si il ne rentre pas un champ (exemple le champ etablissement) l'insertion ne se fait pas dans mysql. Comment résoudre ce problème ?

    Autre chose en ce qui concerne l'id, il faudrait que je fasse une requete pour voir si elle est deja utilisé et si oui, lui en attribuer une de libre. Comment faire ?

    exemple :
    Si je met ma requete comme ceci avec id_societe = 151, cela va bien m'insérer une nouvelle ligne dans ma table. Par contre si je ne met rien comme id_societe ou que j'en met un deja utilisé, forcément la ligne ne sera pas créé.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    INSERT INTO jos_societe(id_societe,nomsoc,etablissement,sadr,scp,sville,spays) VALUES ('151','$nomsoc','$etablissement','$sadr','$scp','$sville','$spays')

  4. #4
    Membre chevronné Avatar de papyphp
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    438
    Détails du profil
    Informations personnelles :
    Âge : 75
    Localisation : Belgique

    Informations professionnelles :
    Secteur : Enseignement

    Informations forums :
    Inscription : Avril 2005
    Messages : 438
    Par défaut
    Bonsoir,

    1) Le problème de l'id qui doit être unique. Je ne saurais que vous recommander de laisser Mysql faire ce travail en mettant le champs id en autoincrement.

    2) Le problème des champs vides : il vous faut tester chaque valeur donnée par l'internaute. Si elle est vide, la remplacer par la valeur par défaut de la colonne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    if (!isset($_POST['etablissement'])){
      $etablissement = '';
      }
      else{
      $etablissement = $_POST['etablissement'];
      }
    3) Amha il vous restera encore un problème : les insertions multiples. Dans l'état actuel des choses, rien n'empêche un internaute d'insérer une même entreprise à de nombreuses reprise. Il vous faudrait trouver un moyen de décider si une entreprise se trouve déjà dans la base. Avec les renseignements que vous demandez, il me semble difficile d'effectuer ce contrôle.

    A bientôt

  5. #5
    Membre Expert

    Homme Profil pro
    SDE
    Inscrit en
    Août 2007
    Messages
    2 013
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : SDE

    Informations forums :
    Inscription : Août 2007
    Messages : 2 013
    Par défaut
    Citation Envoyé par papyphp Voir le message
    Bonsoir,

    1)Je ne saurais que vous recommander de laisser Mysql faire ce travail en mettant le champs id en autoincrement.
    si le tuple d'id 151 est DELETE puis qu'on effectue un nouvel ajout alors le nouveau tuple aura pour identifiant 152. Cependant MySQL repart du max lorsqu'il redémarre. L'auto-increment ne répond donc pas toujours au problème.

    Citation Envoyé par papyphp Voir le message
    2) Le problème des champs vides : il vous faut tester chaque valeur donnée par l'internaute. Si elle est vide, la remplacer par la valeur par défaut de la colonne
    Le SGBD est fait pour gérer ce genre de problèmes. Il est premièrement là pour contrôler l'intégrité, à savoir interdire l'insertion de certains champ vide si il n'est pas normale que le tuple ne possède pas de valeurs. Il faut dont vérifier la définition des champ en tant que "NULLABLE".
    La valeur par défaut quant a elle est utilisé lorsque l'on précise pas de valeur, la valeur par défaut est alors inséré. Il s'agit donc de définir une valeur par défaut en accord avec ton modèle pour qu'elle soit inséré par ton SGBD même.

    Citation Envoyé par papyphp Voir le message
    3) Amha il vous restera encore un problème : les insertions multiples. Dans l'état actuel des choses, rien n'empêche un internaute d'insérer une même entreprise à de nombreuses reprise.
    Ce rôle est assuré par la clé primaire, et on ne désire pas différencier les tuples par autre chose que par sa clé primaire, en particulier pour gérer les homonymes par exemples mais de manière général inhérent à la modélisation merisiene. Parfois il est préférable par rapport au contexte métier de l'application de gérer une double identification qui permet d'avoir un code logique plus facile à retenir pour les utilisateurs du système (clé unique), puis un identifiant système qui sera géré uniquement par le SGBD et qui ne serant qu'une suite de nombre auxquelles l'utilisation n'aura ni accès, ni une connaissance de leurs éxistance (clé primaire).

Discussions similaires

  1. Probleme insertion données dans base ACCESS
    Par Ice-tea dans le forum SGBD
    Réponses: 7
    Dernier message: 20/08/2007, 14h38
  2. [SQL] Insertion multiple dans base de donnée
    Par leroidje dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 03/08/2007, 13h24
  3. Réponses: 2
    Dernier message: 18/03/2007, 19h02
  4. [ARRAY]insertion variable dans base de donnée
    Par lazzeroni dans le forum JDBC
    Réponses: 2
    Dernier message: 30/03/2006, 10h33
  5. insertion de données dans Base de données Oracle 9
    Par hottnikks_79 dans le forum SQL
    Réponses: 2
    Dernier message: 16/03/2006, 00h07

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