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 :

Utilisation de foreach php


Sujet :

PHP & Base de données

  1. #1
    Nouveau membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Juillet 2017
    Messages
    57
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Canada

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2017
    Messages : 57
    Points : 39
    Points
    39
    Par défaut Utilisation de foreach php
    bonjour, ca fait quelques semaines que je suis bloquée , et je commence q desesperer , j ai vraiment besoin d aide.

    mon code ressemble a ca :
    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
     
     
    <?php
     
        global $wpdb;
     
        //Je construis la requete à part
        $requete = "SELECT meta_value,meta_key FROM `usermeta` ";
        $requete .= "where user_id='".get_current_user_id()."' ";
     
        $donnees = $wpdb->get_results($requete);
     
    $domaine=array();
    	$metiers_domaine=array();
    	$description=array();
    	$dom=array();
    	$m_d=array();
    	$desc=array(); ?>
     
     
      <?php   
     
     
    foreach ($donnees as $user) {
            if ($user->meta_key == "job_listing_category") { 
                $domaine[] = $user->meta_value;
             $dom[] = $user->umeta_id;
            }
            if ($user->meta_key == "description") { 
                $description[]= $user->meta_value; 
             $desc[]= $user->umeta_id;    
            }     
            if ($user->meta_key == "metier_domaine") {
                $m_d[] = unserialize($user->meta_value);
              //$metiers_domaine1[] = $user->umeta_id;
              //$arraye = array($metiers_domaine, $metiers_domaine1);
              }
          }
     
     
    ?>
     
     
     <form method="POST" action="p.php">
     
     <table class="pure-table pure-table-bordered">
     
            <tr><th>Domaine</th>
        <?php  foreach($domaine as $dom ){
            echo "<td>".ucfirst($dom)."<br></td> ";} ?>
        </tr>
           <tr><th>Metier Domaine</th>
        <?php foreach($m_d as $key){
            echo "<td>";
            foreach($key as $o){
                echo "<br>";
                echo ucfirst($o);}echo "</td>";}?>
             </tr>
        <tr><th>Dossier Technique</th>
        <?php
            foreach($description as $desc){
                echo "<td>".ucfirst($desc)."<br></td>"; }?></tr>
        <tr><th>Action</th>
            <?php $somme=count($domaine);
                          for ($i = 0; $i < $somme; $i++){?>
            <td>
                <a href="p?dom=<?php echo $dom ?>&o=<?php echo $o ?>&desc=<?php echo $desc ?>" title="Editer">
                <img src="edit-e1498588233966.png"></a>
                <a href="e?dom=<?php echo $dom ?>&m_d=<?php echo $m_d ?>&desc=<?php echo $desc ?>" title="Remove"><img src="remove-e1499223.png" ></a>
            </td>
            <?php } $i++;?>
     
        </tr>
        </table>
    </form>
    le href editer , mon renvoi les valeurs du derniers enregistrements de la table , alors que je veux qu il me donne les valeurs de la ou il pointe .
    je sais que ca provient du for des href , mais je ne sais pas ce qu'il faut que je fasse pour récupérer les valeurs voulu .

    affichage :
    pj
    Images attachées Images attachées  

  2. #2
    Membre averti
    Homme Profil pro
    Autres
    Inscrit en
    Mai 2017
    Messages
    279
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Cameroun

    Informations professionnelles :
    Activité : Autres

    Informations forums :
    Inscription : Mai 2017
    Messages : 279
    Points : 421
    Points
    421
    Par défaut
    Ton problème se trouve au niveau du for
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    for ($i = 0; $i < $somme; $i++) {
    Tu dois l'écrire comme ceci
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    for ($i == 0; $i < $somme; $i++) {
    NB: L'égalité "=" égalité de comparaison "=="
    L’appétit vient en mangeant.
    Pourquoi compliquer quand on peut faire plus simple?
    Une réponse vous a été utile? pensez à
    Vous avez eu la réponse à votre question? marquez votre discussion
    Faites un tour aux FAQs et aux tutoriels et cours.

  3. #3
    Nouveau membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Juillet 2017
    Messages
    57
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Canada

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2017
    Messages : 57
    Points : 39
    Points
    39
    Par défaut
    Merci pour votre réponse,
    mon problème vient du fait que je récupère que les valeurs du dernier enregistrement vu que j'utilise $somme=count($domaine),

    alors que je dois récupérer 3 valeurs (domaine - metier domaine -description ) :-(

  4. #4
    Membre éprouvé Avatar de Willy_k
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2011
    Messages
    540
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juin 2011
    Messages : 540
    Points : 1 067
    Points
    1 067
    Par défaut
    Salut,
    Qu'est-ce qui est obtenu actuellement ? Et qu'est-ce que vous attendez comme résultat ?
    Quand vous sortez des "foreach", les variables à droite du "as" contiennent la dernière valeur du tableau parcouru, par exemple $o, $desc.
    Ce que je peux conseiller est de faire une esquisse du tableau final sur papier (nous le montrer ici avec peut être les données qui vont avec) et essayer de la traduire en PHP, ce code est confus désolé et sûrement trop complexe.

    @Nazoide, la correction avec == va renvoyer une erreur, c'est bien l'affectation qu'il faut utiliser dans ce cas.
    Le bienfait n'est jamais perdu

  5. #5
    Nouveau membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Juillet 2017
    Messages
    57
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Canada

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2017
    Messages : 57
    Points : 39
    Points
    39
    Par défaut
    Merci pour votre temps,

    j'ai mit en pièce jointe le résultat de mon tableau et ma table , ce que je veux c'est cliqué sur un des button (Action) et récupérer les 3 valeurs (domaine - metier domaine -description ), mais ce qui se passe mnt c'est que je récupère les 3 valeurs du derniers enregistrements.
    Images attachées Images attachées   

  6. #6
    Invité
    Invité(e)
    Par défaut
    Bonjour,

    Si tu ne montres pas ton code (modifié), ou ne peut pas le corriger.

  7. #7
    Nouveau membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Juillet 2017
    Messages
    57
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Canada

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2017
    Messages : 57
    Points : 39
    Points
    39
    Par défaut
    Merci pour la réponse :

    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
     
    <?php
    $domaines = get_user_meta( get_current_user_id(), 'job_listing_category', false );
    $descriptions = get_user_meta( get_current_user_id(), 'description', false ); 
    $metiers = get_user_meta( get_current_user_id(), 'metier', false ); 
     
    ?>
     
     
     <form method="POST" action="page-temp.php">
     
     <table class="pure-table pure-table-bordered">
     
            <tr><th>Domaine</th>
        <?php  foreach($domaines as $dom ){
            echo "<td>".ucfirst($dom)."</td> ";} ?>
        </tr>
       <tr><th>Metier Domaine</th>
        <?php foreach($metiers as $key){
           echo "<td>".ucfirst($key)."</td> ";} ?>
     
             </tr>
        <tr><th>Dossier Technique</th>
        <?php
            foreach($descriptions as $desc){
                echo "<td>".ucfirst($desc)."</td>"; 
     
    		}?></tr>
       <tr><th>Action</th>
            <?php $i=0;
    				$somme=count($domaines);
                          for ($i == 0; $i < $somme; $i++){?>
            <td>
                <a href="page-temp?dom=<?php echo $dom ?>&key=<?php echo $key ?>&desc=<?php echo $desc ?>" title="Editer">
                <img src="edit-e1498588233966.png"></a>
                <a href="delete-dossier-tech?dom=<?php echo $dom ?>&key=<?php echo $key ?>&desc=<?php echo $desc ?>" title="Remove"><img src="remove-e1499223.png" ></a>
            </td>
            <?php } $i++;?>
     
        </tr>
        </table>
     
    </form>

  8. #8
    Membre éprouvé Avatar de Willy_k
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2011
    Messages
    540
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juin 2011
    Messages : 540
    Points : 1 067
    Points
    1 067
    Par défaut
    Quand vous sortez des "foreach", les variables à droite du "as" contiennent la dernière valeur du tableau parcouru
    - Virez le $i = 0 L30 et $i++ L38
    - Vous pouvez déplacer la ligne $somme=count($domaines); juste après $metiers = get_user_meta( get_current_user_id(), 'metier', false );- Remplacez $dom , $key et $descdans la partie actions par $domaines[$i], $metiers[$i], $descriptions[$i] (suppose qu'on aura toujours le même nombre de valeurs pour chaque thème)

    Pour les affichages , regardez du côté de https://codex.wordpress.org/Function_Reference/esc_url pour les URL et https://codex.wordpress.org/Function_Reference/esc_html pour du texte.

    Vous pouvez réécrire les choses proprement avec les syntaxes alternatives de foreach et de for.
    Mais quelle est la finalité de ce code et comment vous allez modifier les valeurs proprement ?
    Le bienfait n'est jamais perdu

  9. #9
    Nouveau membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Juillet 2017
    Messages
    57
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Canada

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2017
    Messages : 57
    Points : 39
    Points
    39
    Par défaut
    Merci bcp pour l'aide,
    j'ai effectivement fait ce que vous m'avez dit, et j'ai réussi grâce à vous de récupérer les 3 valeurs demandés , je compte par la suite les afficher dans une nouvelle page et les modifier
    voila ma page :
    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
     
     
    <?php
    global $current_user, $wp_roles;
    $error = array();    
    /* If profile was saved, update profile. */
    if ( 'POST' == $_SERVER['REQUEST_METHOD'] && !empty( $_POST['action'] ) && $_POST['action'] == 'update-user' ) {
     
      	if ( !empty( $_POST['job_listing_category'] ) )
            update_user_meta( $current_user->ID, 'job_listing_category', esc_attr( $_POST['job_listing_category'] ) );
     
    	if ( !empty( $_POST['metier'] ) )
            update_user_meta( $current_user->ID, 'metier',  $_POST['metier']  );
     
        if ( !empty( $_POST['description'] ) )
            update_user_meta( $current_user->ID, 'description', esc_attr( $_POST['description'] ) );
     
        if ( count($error) == 0 ) {
            do_action('edit_user_profile_update', $current_user->ID);
            wp_redirect( get_permalink() );
            exit;
        }
    }
    ?>	  
    <form method="post" id="adduser" action="<?php the_permalink(); ?>">
                     <table> 
    	<?php
            function get_terms_dropdown_taxonomy($taxonomies, $args){
                $taxonomies = array('job_listing_category'); // CHANGE ME
                $args = array(
                        'order'=>'ASC',
                        'hide_empty'=>false,
                        'parent'=> 0
                        );
                $myterms = get_terms($taxonomies, $args);
                $optionname = "job_listing_category";
                echo "<div class='input_wrap div_".$optionname."'>";
    		  echo "<tr><td>Domaines :</td><td><select id='apskritis' class='select_".$optionname."' name='".$optionname."' required>'";
                echo "<option value='0' >Domaines</option>";
     
                foreach($myterms as $term){
                    if ( $term->parent == 0) {
                        echo "<option value='{$term->slug}'>{$term->name}</option>";
                    } 
                }
    		  echo "</select></td></tr>";
    		  echo "</div>";
     
            }    echo get_terms_dropdown_taxonomy($taxonomies, $args);
    					?> 
     
    				   <tr><td><?php _e('Préciser votre métier:', 'profile') ?></td>
     
    			   <td>          
    				 <input type="text" name="metier" id="metier" required value="<?php the_author_meta( 'metier', $current_user->ID ); ?>"></input>
    			   </td>
    		   </tr>
    		  <tr>
                      <td> 	
    					<label for="description"><?php _e('Dossier technique', 'profile') ?></label></td>
    					 <td>   <textarea name="description" id="description" rows="3" cols="50"><?php the_author_meta( 'description', $current_user->ID ); ?></textarea></td>
    				   </tr><!-- .form-textarea -->
    					<?php 
                            //action hook for plugin and extra fields
                            do_action('edit_user_profile',$current_user); 
                        ?>
     
    				   <tr><td></td><td>   <?php echo $referer; ?>
                            <input name="updateuser" type="submit" id="updateuser" class="submit button" value="<?php _e('Update', 'profile'); ?>" />
                            <?php wp_nonce_field( 'update-user' ) ?>
    					 <input name="action" type="hidden" id="action" value="update-user" /></td></tr></table>
     
    			   </p>
    			     </form>
    le problème c'est que ca me modifie tous les valeurs vu que je ne spécifie pas le id ,
    Est ce que vous avez une idée svp ?

  10. #10
    Invité
    Invité(e)
    Par défaut
    1/
    Citation Envoyé par rakima Voir le message
    ...vu que je ne spécifie pas le id...
    Et ça $current_user->ID, c'est quoi alors ?


    2/ Il faut aussi CORRIGER :

    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
                          for ($i == 0; $i < $somme; $i++){?>
    en
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
                          for ($i = 0; $i < $somme; $i++){?>
    • $i = 0 : c'est ici une affectation de valeur. Pas une comparaison.

  11. #11
    Nouveau membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Juillet 2017
    Messages
    57
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Canada

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2017
    Messages : 57
    Points : 39
    Points
    39
    Par défaut
    $current_user->ID ca c'est l'utilisateur pas le id de l'enregistrement
    maintenant faut que je récupère le umeta_id des 3 champs
    Images attachées Images attachées  

  12. #12
    Membre éprouvé Avatar de Willy_k
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2011
    Messages
    540
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juin 2011
    Messages : 540
    Points : 1 067
    Points
    1 067
    Par défaut
    Je n'avais pas même fait attention que vous aviez suivi le conseil de Nazoide pour l'égalité au lieu de l'affection.

    j'avais un doute sur comment les choses allaient se passer ensuite et apparemment j'avais raison.
    Une solution serait pour un utilisateur une seule clé "meta_key" et utiliser serialize pour le "meta_value", dans ce cas lors de l'édition on utilise l'user_id.
    Exemple
    user_id meta_key meta_value
    4 description valeurs avec serialize
    4 metier valeurs avec serialize
    4 job_listing_category valeurs avec serialize
    Le bienfait n'est jamais perdu

  13. #13
    Membre averti
    Homme Profil pro
    Autres
    Inscrit en
    Mai 2017
    Messages
    279
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Cameroun

    Informations professionnelles :
    Activité : Autres

    Informations forums :
    Inscription : Mai 2017
    Messages : 279
    Points : 421
    Points
    421
    Par défaut
    Citation Envoyé par Willy_k Voir le message
    Je n'avais pas même fait attention que vous aviez suivi le conseil de Nazoide pour l'égalité au lieu de l'affection.
    Je regarde plus haut et là ouffffffffff, quelle bourde!!!! Une journée de dur labeur, et tout se mélange. C'est la boucle for, alors affectation et non une comparaison.
    Merci @Willy_k du constat.
    L’appétit vient en mangeant.
    Pourquoi compliquer quand on peut faire plus simple?
    Une réponse vous a été utile? pensez à
    Vous avez eu la réponse à votre question? marquez votre discussion
    Faites un tour aux FAQs et aux tutoriels et cours.

Discussions similaires

  1. [Système] Utilisation gnuplot avec php
    Par jejerome dans le forum Langage
    Réponses: 12
    Dernier message: 27/04/2013, 15h39
  2. utilisation du Foreach.
    Par LESOLEIL dans le forum Langage
    Réponses: 5
    Dernier message: 15/03/2006, 14h26
  3. Réponses: 10
    Dernier message: 10/02/2006, 14h23
  4. [PHP-JS] utiliser une variable php dans du javascript
    Par kcizth dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 06/02/2006, 11h53
  5. utilisation de classes php
    Par lipao17 dans le forum Langage
    Réponses: 4
    Dernier message: 09/01/2006, 12h02

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