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

Langage PHP Discussion :

[Tableaux] Soucis avec array_map


Sujet :

Langage PHP

  1. #1
    Membre régulier
    Inscrit en
    Juin 2006
    Messages
    215
    Détails du profil
    Informations forums :
    Inscription : Juin 2006
    Messages : 215
    Points : 79
    Points
    79
    Par défaut [Tableaux] Soucis avec array_map
    Bonjour,

    J'ai un formulaire avec 6 lignes dans chaque lignes il y à les même champs
    exemple nom[1], nom[2], nom[3], etc...

    Dans mon fichier j'essaye de récupérer les données des TABLEAU nom[] avec le fonction array_map mais j'ai probablement pas du comprendre un truc qui pourrais m'éclairsir ?
    Voilà ce que j'essaye mais sans succés.
    $nom = array_map( 'mysql_real_escape_string', $_POST['nom']);
    $nom = Est la variable que je compte utiliser pour mon INSERT.

    D'avance merci

  2. #2
    Membre expert

    Profil pro
    imposteur
    Inscrit en
    Avril 2003
    Messages
    3 308
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : imposteur

    Informations forums :
    Inscription : Avril 2003
    Messages : 3 308
    Points : 3 377
    Points
    3 377
    Par défaut
    Tu as des messages d'erreur ?
    Tu es bien connecté au serveur MySQL ?

  3. #3
    Membre expérimenté

    Homme Profil pro
    Inscrit en
    Janvier 2004
    Messages
    1 249
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2004
    Messages : 1 249
    Points : 1 565
    Points
    1 565
    Par défaut
    Regle n°3 sur $_POST['nom'] et $nom

  4. #4
    Membre régulier
    Inscrit en
    Juin 2006
    Messages
    215
    Détails du profil
    Informations forums :
    Inscription : Juin 2006
    Messages : 215
    Points : 79
    Points
    79
    Par défaut
    Citation Envoyé par Eusebius
    Tu as des messages d'erreur ?
    Tu es bien connecté au serveur MySQL ?
    Oui effectivement j'ai une erreur mais pas une erreur de syntax.
    Warning: array_map() [function.array-map]: Argument #2 should be an array in
    D'avance merci

  5. #5
    Membre expérimenté
    Avatar de guitou12
    Homme Profil pro
    Inscrit en
    Juillet 2006
    Messages
    1 077
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 1 077
    Points : 1 561
    Points
    1 561
    Par défaut
    Selon Manouel

    array array_map ( callback callback, array arr1 [, array ...] )

    array_map() retourne un tableau contenant tous les éléments du tableau arr1, après leur avoir appliqué la fonction callback. Le nombre de paramètres de la fonction callback doit être égal au nombre de tableaux passés dans la fonction array_map(), dans les arguments supplémentaires ....
    Ton appel de fonction n'est pas bon car ton 2ème argument n'est pas un tableau voilà tout
    Ex développeur Php / J2EE.
    Actuellement reconverti à SharePoint 2013

    Mon blog SP 2013

  6. #6
    Membre régulier
    Inscrit en
    Juin 2006
    Messages
    215
    Détails du profil
    Informations forums :
    Inscription : Juin 2006
    Messages : 215
    Points : 79
    Points
    79
    Par défaut
    Citation Envoyé par guitou12
    Selon Manouel



    Ton appel de fonction n'est pas bon car ton 2ème argument n'est pas un tableau voilà tout
    Salut
    Tu pourrais me donner un exemple avec le champs nom[1], nom[2], etc..

    PArce que je ne suis pas trés malin et j'ai du mal à comprendre

    Merci

  7. #7
    Membre expert

    Profil pro
    imposteur
    Inscrit en
    Avril 2003
    Messages
    3 308
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : imposteur

    Informations forums :
    Inscription : Avril 2003
    Messages : 3 308
    Points : 3 377
    Points
    3 377
    Par défaut
    Citation Envoyé par dunbar
    Salut
    Tu pourrais me donner un exemple avec le champs nom[1], nom[2], etc..

    PArce que je ne suis pas trés malin et j'ai du mal à comprendre

    Merci
    Le souci est ailleurs, tu as du mal remplir le tableau $nom dans ton formulaire (par exemple)

  8. #8
    Membre régulier
    Inscrit en
    Juin 2006
    Messages
    215
    Détails du profil
    Informations forums :
    Inscription : Juin 2006
    Messages : 215
    Points : 79
    Points
    79
    Par défaut
    Citation Envoyé par Eusebius
    Le souci est ailleurs, tu as du mal remplir le tableau $nom dans ton formulaire (par exemple)
    Comme je suis en test j'ai une premiere ligne complet et 5 autre ligne avec uniquement le champ ['com'] donc en
    la 1 ligne contient les champs , ref[1], nom[1], adr[1] etc.. jusque com[1]
    les ligne suivant ne contiennent que com[2] à [6] l'erreur pourrais venir de là ?

    Oui non ?

  9. #9
    Membre expert

    Profil pro
    imposteur
    Inscrit en
    Avril 2003
    Messages
    3 308
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : imposteur

    Informations forums :
    Inscription : Avril 2003
    Messages : 3 308
    Points : 3 377
    Points
    3 377
    Par défaut
    Citation Envoyé par dunbar
    Oui non ?
    J'ai rien compris. Si tu pouvais reformuler, si possible avec un bout de code...

  10. #10
    Membre régulier
    Inscrit en
    Juin 2006
    Messages
    215
    Détails du profil
    Informations forums :
    Inscription : Juin 2006
    Messages : 215
    Points : 79
    Points
    79
    Par défaut
    Citation Envoyé par Eusebius
    J'ai rien compris. Si tu pouvais reformuler, si possible avec un bout de code...
    On va recommencer ce sera plus simple
    J'ai un formulaire avec 6 lignes dans chaque ligne il y à les même champs.
    Exemple nom[1] ---> ligne 1
    nom[2] ---> ligne 2
    nom[3] ---> ligne 3
    etc... jusque 6 et la même chose pour les autres champs, une fois le formulaire encoder il est envoyer vers ----> validation.php
    Donc voici le 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
    $date1 = mysql_real_escape_string (trim($_POST['date'][1]));
    $date2 = $today = date("Y-m-j");
    $user = $_SESSION['nom'];
    $ref = mysql_real_escape_string ($_POST['ref'][1]);
    $nom = mysql_real_escape_string ($_POST['nom_client'][1]);
    $adr = mysql_real_escape_string ($_POST['adr'][1]);
    $code = mysql_real_escape_string ($_POST['postal'][1]);
    $commune = mysql_real_escape_string ($_POST['commune'][1]);
    $address_mac = $_POST['mac'][1].":".$_POST['mac'][2].":".$_POST['mac'][3].":".$_POST['mac'][4].":".$_POST['mac'][5].":".$_POST['mac'][6];
    $tech = mysql_real_escape_string ($_POST['technicien']);
    $heure_debut = mysql_real_escape_string ($_POST['ha'][1].":".$_POST['ha'][2]);
    $heure_fin = mysql_real_escape_string ($_POST['hd'][1].":".$_POST['hd'][2]);
    $telephone = mysql_real_escape_string ($_POST['tel'][1]);
    $installation = mysql_real_escape_string ($_POST['installation']);
    //$commentaire = mysql_real_escape_string ($_POST['com']);
     
    /************************************                                  TEST array_map
    *****************************************
    $_POST = array_map( 'htmlentities', $_POST );
     
    //$ref = $_POST['ref'];
     
     
     
     
    /***************************                                                             Insertion dans la TABLE prestation
    ***************************************/
     
     
                                                $sql = "INSERT INTO prestation_tvc_lux (date_encodage, date, nom_utilisateur, ref_client, nom_client, adr_client, code_postal, commune, adr_modem, technicien, heure_debut, heure_fin, telephone, etat_installation, commentaire) values ( '".$date2."','".$date1."','".$user."','".$ref."','".ucfirst($nom)."','".ucfirst($adr)."','".$code."','".ucfirst($commune)."','".strtoupper($address_mac)."', '".$tech."','".$heure_debut."','".$heure_fin."','".$telephone."','".$installation."','".ucfirst($commentaire)."')";
    Mon soucis est de faire en sorte de faire un INSERT le plus propre et court possible sans devoir faire 6 fois de suite ce genre d'opération :

    $commentaire = $_POST['com'][1];
    $commentaire_2 = $_POST['com'][2];
    $commentaire_3 = $_POST['com'][3];

    Etc.....
    Et je pense que la fonction Array_map pourrais m'aider mais je ne la comprend pas dutout

    D'avance merci

    Tu ma compris ?

  11. #11
    Membre expert

    Profil pro
    imposteur
    Inscrit en
    Avril 2003
    Messages
    3 308
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : imposteur

    Informations forums :
    Inscription : Avril 2003
    Messages : 3 308
    Points : 3 377
    Points
    3 377
    Par défaut
    On va dire que j'ai compris.
    Si tu voulais bien faire, au tout début de ton script de traitement :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    print_r($_POST["nom"]);
    print_r($_POST["com"]);
    Et ce pour toutes les variables qui sont censées être des tableaux, et nous dire si le résultat semble "normal"...

  12. #12
    Membre régulier
    Inscrit en
    Juin 2006
    Messages
    215
    Détails du profil
    Informations forums :
    Inscription : Juin 2006
    Messages : 215
    Points : 79
    Points
    79
    Par défaut
    Citation Envoyé par Eusebius
    On va dire que j'ai compris.
    Si tu voulais bien faire, au tout début de ton script de traitement :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    print_r($_POST["nom"]);
    print_r($_POST["com"]);
    Et ce pour toutes les variables qui sont censées être des tableaux, et nous dire si le résultat semble "normal"...
    Dans cette exemple comment je déclare mes variable ?

  13. #13
    Membre expert

    Profil pro
    imposteur
    Inscrit en
    Avril 2003
    Messages
    3 308
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : imposteur

    Informations forums :
    Inscription : Avril 2003
    Messages : 3 308
    Points : 3 377
    Points
    3 377
    Par défaut
    Citation Envoyé par dunbar
    Dans cette exemple comment je déclare mes variable ?
    Quoi ? Mais tes variables, elles viennent de ton formulaire, non ?

  14. #14
    Membre régulier
    Inscrit en
    Juin 2006
    Messages
    215
    Détails du profil
    Informations forums :
    Inscription : Juin 2006
    Messages : 215
    Points : 79
    Points
    79
    Par défaut
    Citation Envoyé par Eusebius
    Quoi ? Mais tes variables, elles viennent de ton formulaire, non ?
    Mes variable je les déclare ton mon fichier validation.php
    L'exemple ci dessous est valable pour la première ligne de mon formulaire.
    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
    $date1 = mysql_real_escape_string (trim($_POST['date'][1]));
    $date2 = $today = date("Y-m-j");
    $user = $_SESSION['nom'];
    $ref = mysql_real_escape_string ($_POST['ref'][1]);
    $nom = mysql_real_escape_string ($_POST['nom_client'][1]);
    $adr = mysql_real_escape_string ($_POST['adr'][1]);
    $code = mysql_real_escape_string ($_POST['postal'][1]);
    $commune = mysql_real_escape_string ($_POST['commune'][1]);
    $address_mac = $_POST['mac'][1].":".$_POST['mac'][2].":".$_POST['mac'][3].":".$_POST['mac'][4].":".$_POST['mac'][5].":".$_POST['mac'][6];
    $tech = mysql_real_escape_string ($_POST['technicien']);
    $heure_debut = mysql_real_escape_string ($_POST['ha'][1].":".$_POST['ha'][2]);
    $heure_fin = mysql_real_escape_string ($_POST['hd'][1].":".$_POST['hd'][2]);
    $telephone = mysql_real_escape_string ($_POST['tel'][1]);
    $installation = mysql_real_escape_string ($_POST['installation']);
    //$commentaire = mysql_real_escape_string ($_POST['com']);
     
    /************************************                                  TEST array_map
    *****************************************
    $_POST = array_map( 'htmlentities', $_POST );
     
    //$ref = $_POST['ref'];
     
     
     
     
    /***************************                                                             Insertion dans la TABLE prestation
    ***************************************/
     
     
                                                $sql = "INSERT INTO prestation_tvc_lux (date_encodage, date, nom_utilisateur, ref_client, nom_client, adr_client, code_postal, commune, adr_modem, technicien, heure_debut, heure_fin, telephone, etat_installation, commentaire) values ( '".$date2."','".$date1."','".$user."','".$ref."','".ucfirst($nom)."','".ucfirst($adr)."','".$code."','".ucfirst($commune)."','".strtoupper($address_mac)."', '".$tech."','".$heure_debut."','".$heure_fin."','".$telephone."','".$installation."','".ucfirst($commentaire)."')";

    Je voudrais trouver le moyen de pouvoir en inserer 5 de plus mais sans devoir refaire 5 fois tout le code ci dessus.
    Donc une fonction qui prendrais les valeurs de mes 6 champs nom, 6 champs ref, 6 champs adr, etc....
    Sinon je vais de voir faire
    $nom = ($_POST['nom'][1]);
    $nom_2 = ($_POST['nom'][2]);
    $nom_3 = ($_POST['nom'][3]);
    Etc.......

    Tu à compris ?

  15. #15
    Membre expert

    Profil pro
    imposteur
    Inscrit en
    Avril 2003
    Messages
    3 308
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : imposteur

    Informations forums :
    Inscription : Avril 2003
    Messages : 3 308
    Points : 3 377
    Points
    3 377
    Par défaut
    Citation Envoyé par dunbar
    Mes variable je les déclare ton mon fichier validation.php
    Et ton formulaire il sert à QUOI alors ?

    Citation Envoyé par dunbar
    Je voudrais trouver le moyen de pouvoir en inserer 5 de plus mais sans devoir refaire 5 fois tout le code ci dessus.
    Ben tu fais une boucle for sur l'indice, et tu mets ça dans un tableau, pas dans des variables nommées avec des chiffres.

  16. #16
    Membre régulier
    Inscrit en
    Juin 2006
    Messages
    215
    Détails du profil
    Informations forums :
    Inscription : Juin 2006
    Messages : 215
    Points : 79
    Points
    79
    Par défaut
    Citation Envoyé par Eusebius
    Et ton formulaire il sert à QUOI alors ?
    Et bien il sert à encoder des données, puis il est traiter par le fichier VALIDATION.PHP
    Ou je déclare par exemple que
    $ref = ($_POST['ref'][1]); //['ref'][1] correspondant au champ du formulaire name=nom[1]
    Et mon insert ==== j'insert la variable $ref.


    Ben tu fais une boucle for sur l'indice, et tu mets ça dans un tableau, pas dans des variables nommées avec des chiffres.
    Oui là les chose se complique

  17. #17
    Membre expert

    Profil pro
    imposteur
    Inscrit en
    Avril 2003
    Messages
    3 308
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : imposteur

    Informations forums :
    Inscription : Avril 2003
    Messages : 3 308
    Points : 3 377
    Points
    3 377
    Par défaut
    Citation Envoyé par dunbar
    Ou je déclare par exemple que
    $ref = ($_POST['ref'][1]); //['ref'][1] correspondant au champ du formulaire name=nom[1]
    Eh bien c'est là que je te demande de faire un
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    print_r($_POST["ref"]);
    Note au passage, si tu ne sais pas manier un tableau avec une boucle for, je te conseille de lire quelques bons cours de programmation (peu importe le langage) avant de développer une application.

  18. #18
    Membre régulier
    Inscrit en
    Juin 2006
    Messages
    215
    Détails du profil
    Informations forums :
    Inscription : Juin 2006
    Messages : 215
    Points : 79
    Points
    79
    Par défaut
    Citation Envoyé par Eusebius
    Eh bien c'est là que je te demande de faire un
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    print_r($_POST["ref"]);
    Note au passage, si tu ne sais pas manier un tableau avec une boucle for, je te conseille de lire quelques bons cours de programmation (peu importe le langage) avant de développer une application.
    Ok alors si je fait ceci
    print_r($_POST["ref"]);
    J'ai plu d'erreur mais dans ma table j'ai dans les champs array .

    Quand à ma Boucle rassure toi la voici.
    for ($i=0;$i<6;$i++){
    if (($ref.$i != '') && ($nom.$i != '') && ($adr.$i != '') && ($code.$i != '') && ($commune.$i != '') && ($adress_mac.$i != '') && ($tech.$i != '') && ($heure_debut.$i != '') && ($heure_fin.$i != '') && ($installation.$i != '')){
    $sql = "INSERT INTO prestation_tvc_lux (date_encodage, date, nom_utilisateur, ref_client, nom_client, adr_client, code_postal, commune, adr_modem, technicien, heure_debut, heure_fin, telephone, etat_installation, commentaire) values ( '".$date2."','".$date1."','".$user."','".$ref."','".ucfirst($nom)."','".ucfirst($adr)."','".$code."','".ucfirst($commune)."','".strtoupper($address_mac)."', '".$tech."','".$heure_debut."','".$heure_fin."','".$telephone."','".$installation."','".ucfirst($commentaire)."')";
    }
    }

  19. #19
    Membre expert

    Profil pro
    imposteur
    Inscrit en
    Avril 2003
    Messages
    3 308
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : imposteur

    Informations forums :
    Inscription : Avril 2003
    Messages : 3 308
    Points : 3 377
    Points
    3 377
    Par défaut
    Citation Envoyé par dunbar
    J'ai plu d'erreur mais dans ma table j'ai dans les champs array .
    Tu peux afficher la sortie du print_r s'il te plait ?

Discussions similaires

  1. [Tableaux] souci avec array_push sous firefox
    Par gregetso dans le forum Langage
    Réponses: 4
    Dernier message: 02/02/2009, 14h16
  2. [Tableaux] Soucis avec foreach
    Par maysa dans le forum Langage
    Réponses: 4
    Dernier message: 02/10/2007, 12h38
  3. [Tableaux] soucis avec $_get[' '];
    Par maysa dans le forum Langage
    Réponses: 12
    Dernier message: 27/10/2006, 13h40
  4. [Tableaux] Souci avec array_push()
    Par renaud26 dans le forum Langage
    Réponses: 1
    Dernier message: 28/07/2006, 14h00
  5. [Tableaux] souci avec des simples quotes
    Par Jean Fi dans le forum Langage
    Réponses: 6
    Dernier message: 29/03/2006, 20h13

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