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 de donnée dans un tableau array


Sujet :

PHP & Base de données

  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    825
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 825
    Par défaut Insertion de donnée dans un tableau array
    Bonjour à tous, j'aurai besoin d'une petite aide pour ajouter des données dans un tableau array .

    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
     
    $sql1="SELECT matiere.code_m, nom_m, nom_four, cond_m, unite_conditionnement, inventaire_mat.qte_inventaire_mat as qte_prec  
    FROM matiere
    LEFT JOIN inventaire_mat ON matiere.code_m = inventaire_mat.code_m
    INNER JOIN fournisseur ON matiere.id_four = fournisseur.id_four
    INNER JOIN conditionnement ON conditionnement.id_conditionnement = matiere.id_conditionnement
    WHERE inventaire_mat.mois_inventaire_mat ='05' AND inventaire_mat.annee_inventaire_mat ='2008' 
    ORDER BY nom_four;";
    //echo $sql1;
    $query1 = mysql_query($sql1) or die('Erreur SQL !'.$sql.'<br>'.mysql_error());
    $ServArray = array ();
    while($servicetab= mysql_fetch_array($query1)) {
    $ServArray[$servicetab['code_m']][0] = $servicetab['code_m'];
    $ServArray[$servicetab['code_m']][1] = $servicetab['nom_four'];
    $ServArray[$servicetab['code_m']][2] = $servicetab['cond_m'];
    $ServArray[$servicetab['code_m']][3] = $servicetab['unite_conditionnement'];
    $ServArray[$servicetab['code_m']][4] = $servicetab['qte_prec'];
     
    	}
    Les informations de ma premiere requete sont rajouter dans le tableau array.
    Juste apres j'ai une seconde requete qui reprend comme indice le meme que la meme requete (code_m).

    Avec la 2ème je voudrait rajouter dans une nouvelle colonne ([5]) dans ce tableau array en fonction de l'indice (code_m)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    $sql2="SELECT code_m, qte_inventaire_mat as qte 
    FROM inventaire_mat
    WHERE inventaire_mat.mois_inventaire_mat ='05' AND inventaire_mat.annee_inventaire_mat ='2008' ";
    $query2 = mysql_query($sql2) or die('Erreur SQL !'.$sql.'<br>'.mysql_error());
     
    while($servicetab2= mysql_fetch_array($query2)) {
     
    if ($ServArray[$servicetab['code_m']][0] = $servicetab['code_m'])
    {
    array_push($ServArray,$ServArray[$servicetab['code_m']][5] = $servicetab['qte_inventaire_mat']);
    }


    Comment je doit faire? Un exemple ?
    Merci d'avance pour votre aide.

    guigui69

  2. #2
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    59
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 59
    Par défaut
    hmmm si j'ai bien compris tu n'a même pas besoin de if ni d'array_push tu remplis directement le tableau, comme tu as ton identifiant code_m pas ça va se mettre tout seul au bon endroit:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    $sql2="SELECT code_m, qte_inventaire_mat as qte 
    FROM inventaire_mat
    WHERE inventaire_mat.mois_inventaire_mat ='05' AND inventaire_mat.annee_inventaire_mat ='2008' ";
    $query2 = mysql_query($sql2) or die('Erreur SQL !'.$sql.'<br>'.mysql_error());
     
    while($servicetab2= mysql_fetch_array($query2))
    {
         $ServArray[$servicetab2['code_m']][5] = $servicetab2['qte'];
    }
    fait attention tu as mis un allias sur ton champ dans ta requête et tu as utilisé le vrai nom du champ dans ta boucle !


    edit: tu peux laisser ta vérification if code_m etc si jamais les 2 requêtes risquent de ne pas retourner les même enregistrements et que celà est important pour la suite de tes opération mais l'utilité dépend de ce qu'il y a derrière

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    825
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 825
    Par défaut
    Merci de ta réponse, J'ai pas compris ton EDIT peux-tu est plus clair?

    Le but après est d'afficher le tableau array au format HTML. ( je ne peut pas le faire directement. (de mysql =>php=> html))

    Merci

    guigui69

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    59
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 59
    Par défaut
    je parlais de ça dans la boucle while:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    if ($ServArray[$servicetab2['code_m']][0] == $servicetab2['code_m'])
    {
         $ServArray[$servicetab2['code_m']][5] = $servicetab2['qte']);
    }
    ça semble plus propre de le laisser tout bien réfléchit.

  5. #5
    Membre éclairé
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    825
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 825
    Par défaut
    Merci de ton aide,

    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
    31
    32
    33
    34
    35
    36
    37
    38
    39
     
    $query1 = mysql_query($sql1) or die('Erreur SQL !'.$sql.'<br>'.mysql_error());
    $ServArray = array ();
    while($servicetab= mysql_fetch_array($query1)) {
    $ServArray[$servicetab['code_m']][0] = $servicetab['code_m'];
    $ServArray[$servicetab['code_m']][1] = $servicetab['nom_four'];
    $ServArray[$servicetab['code_m']][2] = $servicetab['cond_m'];
    $ServArray[$servicetab['code_m']][3] = $servicetab['unite_conditionnement'];
    }
    $sql3="SELECT code_m, qte_inventaire_mat as qte_prec 
    FROM inventaire_mat
    WHERE inventaire_mat.mois_inventaire_mat ='04' AND inventaire_mat.annee_inventaire_mat ='2008' ORDER BY code_m; ";
    $query3 = mysql_query($sql3) or die('Erreur SQL !'.$sql3.'<br>'.mysql_error());
    $nbResults3 = mysql_num_rows($query3);
    //ici on réalise les calculs du fourrage
    if ($nbResults3 == 0)
    {
    $ServArray[4] = 0;
    }
    else
    {
    while($servicetab3= mysql_fetch_array($query3))
    {
    if ($ServArray[$servicetab3['code_m']][0] == $servicetab3['code_m'])
    {
    if(isset($servicetab3['qte_prec']))
    {
    $ServArray[$servicetab3['code_m']][4] = $servicetab3['qte_prec'];
    }
    else
    {
    $ServArray[$servicetab3['code_m']][4] = 0;
    }
    }
    }
    }
     
    echo '<pre>' . print_r($ServArray, true) . '</pre>';
    ?>
    J'aurai besoin encore d'une petite aide.
    J'explique ma requête et le reste:

    La première requête récupère les information sur le produit et les envoie dans un tableau array (avec code indice code_m)

    La deuxième requête regarde dans une autre table les enregistrements. Si il y a aucun enregistrement je voudrait quel mette a 0 lance de la [4] colonne à 0 Si il y a des enregistrements elle remplis la colonne [4] en fonction code_m.

    Comment je doit mettre pour remplir automatiquement la colonne [4] si il y a aucun enregistrement au niveau de la 2ème requête.

    Merci d'avance pour votre aide

    guigui69

  6. #6
    Membre éclairé
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    825
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 825
    Par défaut
    Je cherche maintenant a afficher le contenue de mon array au format html

    J'ai pour tester fait ceci:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    foreach ($ServArray as $key => $ServArray[0])
    { 
    echo $ServArray[1];
    echo $ServArray[2];
    echo $ServArray[3];
    echo $ServArray[4];
    }
    Mais ça na pas l'air de fonctionner. Comment je doit faire pour afficher (de manière simple) le contenue du array.

    merci

    guigui69

  7. #7
    Membre émérite Avatar de obito
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2008
    Messages
    773
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Janvier 2008
    Messages : 773
    Par défaut
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    print_r($ServArray);

    C'est vraiment très primaire comme affichage mais au moins y aura tout

  8. #8
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    59
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 59
    Par défaut
    Citation Envoyé par guigui69 Voir le message
    Si il y a aucun enregistrement je voudrait quel mette a 0 lance de la [4] colonne à 0
    ça ne veut rien dire :-/

  9. #9
    Membre éclairé
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    825
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 825
    Par défaut
    Voila ce que j'ai fait:

    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
     
    $sql1="SELECT matiere.code_m, nom_m, nom_four, cond_m, unite_conditionnement, qte_inventaire_mat as qte_prec 
    FROM matiere
    LEFT JOIN inventaire_mat ON matiere.code_m = inventaire_mat.code_m
    INNER JOIN fournisseur ON matiere.id_four = fournisseur.id_four
    INNER JOIN conditionnement ON conditionnement.id_conditionnement = matiere.id_conditionnement
    WHERE inventaire_mat.mois_inventaire_mat ='04' AND inventaire_mat.annee_inventaire_mat ='2008' ORDER BY nom_four;";
    //echo $sql1;
    $query1 = mysql_query($sql1) or die('Erreur SQL !'.$sql.'<br>'.mysql_error());
    $ServArray = array ();
    while($servicetab= mysql_fetch_array($query1)) {
    $ServArray[$servicetab['code_m']][0] = $servicetab['code_m'];
    $ServArray[$servicetab['code_m']][1] = $servicetab['nom_four'];
    $ServArray[$servicetab['code_m']][2] = $servicetab['cond_m'];
    $ServArray[$servicetab['code_m']][3] = $servicetab['unite_conditionnement'];
    $ServArray[$servicetab['code_m']][4] = $servicetab['qte_prec'];
    }
    $sql3="SELECT code_m, qte_inventaire_mat as qte
    FROM inventaire_mat
    WHERE inventaire_mat.mois_inventaire_mat ='05' AND inventaire_mat.annee_inventaire_mat ='2008' ORDER BY code_m; ";
    $query3 = mysql_query($sql3) or die('Erreur SQL !'.$sql3.'<br>'.mysql_error());
     
    while($servicetab3= mysql_fetch_array($query3))
    {
    if ($ServArray[$servicetab3['code_m']][0] == $servicetab3['code_m'])
    {
    if(isset($servicetab3['qte']))
    {
    $ServArray[$servicetab3['code_m']][5] = $servicetab3['qte'];
    }
    else
    {
    $ServArray[$servicetab3['code_m']][5] = 0;
    }
    }
    }
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    echo '<table border="1">';
    foreach ($ServArray as $key => $val)
    {
    $difference = $val[6] - $val[5];
    $ecart = ($val[6] - $val[5])* $val[7];
    echo '<tr><td>'.$val[1].'</td><td>'.$val[2].'</td><td>'.$val[3].'</td><td>'.$val[4].'</td><td>'.$val[5].'</td><td>'.$val[6].'</td><td>'.$val[7].'</td><td>'.$difference.'</td><td>'.$ecart.'</td></tr>';
    //echo 'test'.$key.'" >'.$val.'';
    //echo $val[1];
    }
    echo '</table>'
    Remarquer vous des erreurs ?

    Merci d'avance

    guigui69

Discussions similaires

  1. [PHP 5.3] Insertion de données dans un tableau
    Par Elrula dans le forum Langage
    Réponses: 6
    Dernier message: 18/06/2015, 16h04
  2. Insertion de données dans un tableau depuis EXCEL VBA
    Par reda120 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 26/12/2013, 12h11
  3. [XL-2007] Insertion de données dans un tableau via textBox
    Par toushusss dans le forum Macros et VBA Excel
    Réponses: 12
    Dernier message: 10/05/2011, 16h24
  4. Insertion de données dans un tableau
    Par PsyKoptiK dans le forum Shell et commandes GNU
    Réponses: 1
    Dernier message: 12/04/2011, 21h22

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