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 avec INSERT [MySQL]


Sujet :

PHP & Base de données

  1. #1
    Membre éclairé
    Inscrit en
    Juillet 2005
    Messages
    288
    Détails du profil
    Informations forums :
    Inscription : Juillet 2005
    Messages : 288
    Par défaut Probleme avec INSERT
    Bonjour tout le monde ,

    En fait j'ai un souci pour insérer dans ma table ,je m'explique :
    J' ai créer un formulaire avec les champs Numéro et message ,dans le champs numéro j'ai la possibilité de mettre plusieurs numéros séparés par une virgule .Alors mon problème est que je veux insérer les numéros saisis dans une table et je veux que chacun soit dans une colonne au lieux de les mettre tous dans une colonne .
    Si vous pouvez m'aider .
    Merci de votre compréhension !

  2. #2
    Expert confirmé
    Avatar de Séb.
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    5 354
    Détails du profil
    Informations personnelles :
    Âge : 48
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 354
    Billets dans le blog
    17
    Par défaut
    Salut !
    Quel est le problème ?

  3. #3
    Membre éclairé
    Inscrit en
    Juillet 2005
    Messages
    288
    Détails du profil
    Informations forums :
    Inscription : Juillet 2005
    Messages : 288
    Par défaut
    Slt,
    Le probleme est que :Au lieu d'inserer tous les numero sépares par virgule dans une colonne ,je veux inserer chaque numero par colonne .J'esper que je suis un peu claire

  4. #4
    Membre éprouvé Avatar de vrd-74
    Profil pro
    Inscrit en
    Novembre 2010
    Messages
    76
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2010
    Messages : 76
    Par défaut
    Si j'ai bien compris, tu as une liste de numéros en php que tu souhaites injecter dans une base, en séparant les numéros dans des colonnes ?
    Si le nombre de numéros est constant (enfin si il a un maximum définit), la fonction explode remplira cette tache.

    $str_numbers = '1,2,3,4,5';
    $numbers = explode (',', $str_numbers);
    Après tout dépend de l'utilité de ces numéros, il ne sera pas forcément pertinent d'alourdir la table en ajoutant un nombre important de colonne.

  5. #5
    Expert confirmé
    Avatar de Séb.
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    5 354
    Détails du profil
    Informations personnelles :
    Âge : 48
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 354
    Billets dans le blog
    17
    Par défaut
    Citation Envoyé par rane Voir le message
    Le probleme est que :Au lieu d'inserer tous les numero sépares par virgule dans une colonne ,je veux inserer chaque numero par colonne .J'esper que je suis un peu claire
    Dis-en un peu plus. Quelle est la nature de ces numéros ? Que représentent-ils ? Leur nombre est-il connu ?

  6. #6
    Membre éclairé
    Inscrit en
    Juillet 2005
    Messages
    288
    Détails du profil
    Informations forums :
    Inscription : Juillet 2005
    Messages : 288
    Par défaut
    Merci vrd-74 de votre réponse,
    en fait j'ai deja fait ton scripte et ca marche bien mais si je veux compter le nombre de numero quel fonction utiliser car avec COUNT j'y arrive pas c'est pourquoi je veux inserer numero par colonne;si vous pouvez me passer une fonction qui peut compter le nombre de numero je suis preneur.
    Encore Merci !

  7. #7
    Membre éprouvé Avatar de vrd-74
    Profil pro
    Inscrit en
    Novembre 2010
    Messages
    76
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2010
    Messages : 76
    Par défaut
    Et bien à partir du code précédent la fonction count te renverra bien le nombre de numéros :
    Mais de combien de numéros s'agit-il ? Quelle est leur utilité ?

  8. #8
    Membre éclairé
    Inscrit en
    Juillet 2005
    Messages
    288
    Détails du profil
    Informations forums :
    Inscription : Juillet 2005
    Messages : 288
    Par défaut
    En fait j'utilise ce code pour compter le nombre de numero mais il me renvoit une liste vide
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $requete = "SELECT `user`, COUNT(`numeros`) FROM ".MSG_TB." WHERE
                        MONth(`date`) = '$month' GROUP BY `user`";

  9. #9
    Membre éclairé
    Inscrit en
    Juillet 2005
    Messages
    288
    Détails du profil
    Informations forums :
    Inscription : Juillet 2005
    Messages : 288
    Par défaut
    Pour etre plus claire :compter le nombre d'enregistrement (numero) séparer par virgule

  10. #10
    Membre éclairé
    Inscrit en
    Juillet 2005
    Messages
    288
    Détails du profil
    Informations forums :
    Inscription : Juillet 2005
    Messages : 288
    Par défaut
    Est il possible de compter le nombre d'enregistrement d'un champ si les données sont séparer par des virgules ?
    Si oui comment ?

  11. #11
    Expert confirmé
    Avatar de Séb.
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    5 354
    Détails du profil
    Informations personnelles :
    Âge : 48
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 354
    Billets dans le blog
    17
    Par défaut
    Tu comptes les virgules + 1.
    Avec PHP c'est facile : il existe substr_count( )
    Avec MySQL : il ne me semble pas qu'une telle fonction existe

    Mais devoir faire ce genre de choses démontre tout de même une mauvaise modélisation de la base de données.

  12. #12
    Membre éclairé
    Inscrit en
    Juillet 2005
    Messages
    288
    Détails du profil
    Informations forums :
    Inscription : Juillet 2005
    Messages : 288
    Par défaut
    Alors est il possible d'inserer les numeros par colonne au lieu de mettre par exemple 5 numeros dans une colonne en les séparant par des virgules ?

  13. #13
    Expert confirmé
    Avatar de Séb.
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    5 354
    Détails du profil
    Informations personnelles :
    Âge : 48
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 354
    Billets dans le blog
    17
    Par défaut
    Tout est possible, mais chaque possibilité n'est pas forcément la meilleure dans ton cas précis.
    Voilà pourquoi il faut répondre aux questions posées : pour qu'on puisse te conseiller au mieux.

  14. #14
    Membre éclairé
    Inscrit en
    Juillet 2005
    Messages
    288
    Détails du profil
    Informations forums :
    Inscription : Juillet 2005
    Messages : 288
    Par défaut
    Oui vous avez parfaitement raison .
    En fait c'est des numero de telephone et le nombre est de par numero mais a la possibilité n numero en les séparant par des virgules

  15. #15
    Membre éprouvé Avatar de vrd-74
    Profil pro
    Inscrit en
    Novembre 2010
    Messages
    76
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2010
    Messages : 76
    Par défaut
    Dans ce cas il faut que le champ dans la base soit en VARCHAR, pour le count par contre il faudra le faire en php comme l'a indiqué Séb plus haut. Si tu veux vraiment les séparer dans des colonnes différentes (ce qui sera sans doute plus pratique si le nombre de numéros de téléphones max est clairement défini et peu important), pour les compter récupère la valeur de tous ses champs et regarde lesquels sont à null (les champs sont donc en DEFAULT NULL).

    Cela répond à ta question ?

  16. #16
    Expert confirmé
    Avatar de Séb.
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    5 354
    Détails du profil
    Informations personnelles :
    Âge : 48
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 354
    Billets dans le blog
    17
    Par défaut
    Citation Envoyé par rane Voir le message
    Oui vous avez parfaitement raison .
    En fait c'est des numero de telephone et le nombre est de par numero mais a la possibilité n numero en les séparant par des virgules
    Pas compris

  17. #17
    Membre éprouvé Avatar de vrd-74
    Profil pro
    Inscrit en
    Novembre 2010
    Messages
    76
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2010
    Messages : 76
    Par défaut
    Je pense qu'il veut dire que l'utilisateur peut saisir plusieurs numéros de téléphone (un numéro domicile, portable et pro par exemple) dans un champ, séparés par des virgules (je trouve que c'est un choix étrange d'ailleurs), puis il veut les insérer dans sa base dans des colonnes différentes, genre tel1, tel2, etc.

  18. #18
    Membre éclairé
    Inscrit en
    Juillet 2005
    Messages
    288
    Détails du profil
    Informations forums :
    Inscription : Juillet 2005
    Messages : 288
    Par défaut
    En fait je viens d'essayer avec cela
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    $numeros = explode(',', trim($_POST["numArea"]));
    $query = "INSERT INTO " . LISTDEST . " (`idMsg`,`destinataire`) ".
               "VALUES('$idMsg','$numeros[0]') ";
    $query = "INSERT INTO " . LISTDEST . " (`idMsg`,`destinataire`) ".
               "VALUES('$idMsg','$numeros[1]') ";
    $query = "INSERT INTO " . LISTDEST . " (`idMsg`,`destinataire`) ".
               "VALUES('$idMsg','$numeros[2]') ";
    Mais il n'insere numero sinon il met (Array)

  19. #19
    Membre chevronné
    Profil pro
    Inscrit en
    Novembre 2010
    Messages
    207
    Détails du profil
    Informations personnelles :
    Localisation : France, Indre et Loire (Centre)

    Informations forums :
    Inscription : Novembre 2010
    Messages : 207
    Par défaut
    Essaye ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    $numeros = explode(',', trim($_POST["numArea"]));
    $query = "INSERT INTO " . LISTDEST . " (`idMsg`,`destinataire`) ".
               "VALUES('$idMsg','".$numeros[0]."') ";
    $query = "INSERT INTO " . LISTDEST . " (`idMsg`,`destinataire`) ".
               "VALUES('$idMsg','".$numeros[1]."') ";
    $query = "INSERT INTO " . LISTDEST . " (`idMsg`,`destinataire`) ".
               "VALUES('$idMsg','".$numeros[2]."') ";
    Quand tu mets une variable de type array tu ne peux pas faire '$numeros[2]' comme tu as pu le faire pour '$idMsg'

  20. #20
    Expert confirmé
    Avatar de Séb.
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    5 354
    Détails du profil
    Informations personnelles :
    Âge : 48
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 354
    Billets dans le blog
    17
    Par défaut
    Citation Envoyé par scourjean Voir le message
    Quand tu mets une variable de type array tu ne peux pas faire '$numeros[2]' comme tu as pu le faire pour '$idMsg'
    Si c'est possible :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $a[0] = '(item tableau)' ;
    echo "avant $a[0] après" ; // donne "avant (item tableau) après"
    Par contre c'est vrai que parfois il y a une erreur, dans ce cas il faut encadrer la variable avec { }

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

Discussions similaires

  1. Probleme avec INSERT INTO et select
    Par jmjmjm dans le forum Requêtes
    Réponses: 9
    Dernier message: 28/01/2007, 23h51
  2. [My SQL]probleme avec insert select
    Par jmjmjm dans le forum Langage SQL
    Réponses: 2
    Dernier message: 27/01/2007, 12h24
  3. probleme avec insert into
    Par bscorpion dans le forum Langage SQL
    Réponses: 5
    Dernier message: 05/07/2005, 14h00
  4. Problem avec insertion de l'heure
    Par moniphal dans le forum MS SQL Server
    Réponses: 8
    Dernier message: 29/04/2005, 12h27
  5. [ADO.NET] Problème avec Insert dans base de données
    Par mpascolo dans le forum Accès aux données
    Réponses: 9
    Dernier message: 24/01/2005, 10h36

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