utilisation de foreach pour wpdb

  • Statut : non résolu
5 sujets de 1 à 5 (sur un total de 5)
  • Auteur
    Messages
  • #547657
    Timama
    Participant
    Chevalier WordPress
    284 contributions

    Bonjour,

    Ma configuration WP actuelle
    – Version de WordPress : 4.1.1
    – Version de PHP/MySQL :
    – Thème utilisé : le mien
    – Extensions en place : aucune
    – Nom de l’hebergeur : Strato
    – Adresse du site :

    Problème(s) rencontré(s) :

    Bonjour,

    Décidément, je ne me suis pas encore habituée à la manipulation des wpbd.
    J’ai encore une question.

    Je fais la requête suivante afin d’avoir tous les post_id des projets de la bases:

    $sql3p =$wpdb->get_results($wpdb->prepare(“SELECT post_id as id, LEFT(meta_value,4) as anneeactuelle FROM $wpdb->postmeta WHERE meta_key = ‘date_projet’ ” , ARRAY_A));

    Le résultat me donne (avec un var_dump):
    array(6) { [0]=> object(stdClass)#50 (2) { [“id”]=> string(2) “89” [“anneeactuelle”]=> string(4) “2013” } [1]=> object(stdClass)#51 (2) { [“id”]=> string(2) “90” [“anneeactuelle”]=> string(4) “2013” } [2]=> object(stdClass)#52 (2) { [“id”]=> string(2) “92” [“anneeactuelle”]=> string(4) “2013” } [3]=> object(stdClass)#53 (2) { [“id”]=> string(2) “93” [“anneeactuelle”]=> string(4) “2014” } [4]=> object(stdClass)#54 (2) { [“id”]=> string(2) “98” [“anneeactuelle”]=> string(4) “2015” } [5]=> object(stdClass)#109 (2) { [“id”]=> string(3) “105” [“anneeactuelle”]=> string(4) “2015” } }

    Ensuite, j’aimerai que pour certain cas, un paramètre (ici activite_projet) passe à 1 si des conditions sont réunies.
    Les conditions sont, pour chaque post_id différents d’un id (connu sous le nom $id1p) et pour une année égale à une année connue ($anneeactuellep).
    Et c’est là que je ne sais pas du tout comment écrire la chose…. je me perds dans plein de chose et je fais plein d’erreur….
    j’ai fait ça

    foreach ($sql3p as $sql3ptemp)
    {
    $id->id;
    $anneeactuelle->anneeactu;

    if ($id !=’.$id1p.’ && $anneeactuelle == ‘.$anneeactuellep.’)
    {
    update_post_meta($id , ‘activite_projet’, ‘1’ );
    }

    }

    Bien sûr, cela ne fonctionne pas. Si vous avez compris ce que j’essaie de faire ou même si vous avez vu un gros problème mon code, merci de me conseiller 😉

    merci pour votre aide

    Timama

    #996655
    Timama
    Participant
    Chevalier WordPress
    284 contributions

    bon et bien en faisant plein d’affichage, j’ai trouvé une solution qui fonctionne….
    Je vous la donne. Mais je pense qu’il y a mieux.
    Car j’ai calculé un id et je pense qu’il doit être possible d’avoir cet ‘id’ autrement…. mais bon,
    la solution qui fonctionne….( je m’étais embrouillée grave sur les écritures…. oui je sais :oops:)

    $sql3p =$wpdb->get_results($wpdb->prepare(“SELECT post_id as id_meta, LEFT(meta_value,4) as anneeactu FROM $wpdb->postmeta WHERE meta_key = ‘date_projet’ ” , ARRAY_A));
    $id=0;
    foreach ($sql3p as $sql3ptemp)
    {
    $sql3pessai = $sql3p[$id];
    $id =$id+1;
    $id_meta= $sql3pessai->id_meta;
    $anneeactuelle= $sql3pessai->anneeactu;

    if ($id_meta !=$id1p && $anneeactuelle == $anneeactuellep)
    {
    update_post_meta($id_meta, ‘activite_projet’, ‘1’ );
    }
    }

    Voilà, ça fonctionne….. si quelqu’un sait si cela peut être “optimisé” ou mieux écrit .. merci de me le dire 😉

    #996656
    mathieu789
    Participant
    Maître WordPress
    1084 contributions

    à la place de faire une requête avec $wpdb, il vaut mieux utiliser les fonctions de wordpress comme celle là par exemple :
    http://codex.wordpress.org/Template_Tags/get_posts

    une remarque pour la boucle foreach, tu n’as pas besoin d’utiliser une variable $i pour parcourir ton tableau, ça devrait fonctionner comme ça :

    foreach ($sql3p as $sql3pessai) {
    	$id_meta= $sql3pessai->id_meta;
    	$anneeactuelle= $sql3pessai->anneeactu;
    	
    	if ($id_meta != $id1p && $anneeactuelle == $anneeactuellep)
    	{
    		update_post_meta($id_meta, ‘activite_projet’, ‘1’ );
    	}
    }

    elle vient d’où la variable $anneeactuellep ? elle n’est pas définie dans le code que tu nous as montré

    #996657
    mathieu789
    Participant
    Maître WordPress
    1084 contributions

    ah je viens de relire ce que tu as marqué au sujet de $anneeactuellep donc ça doit être bon 🙂

    #996658
    Timama
    Participant
    Chevalier WordPress
    284 contributions

    et bien merci beaucoup mathieu9512 !
    Je savais bien que je ne devais pas utiliser ce $id mais je ne savais pas comment….

    effectivement, ça fonctionne très bien sans ! (avec $anneeactuellep qui est connue, oui 😉 )

    oui, j’ai du mal à me débarrasser des requêtes après mon passage sur wordpress.
    c’est une autre façon de penser ! c’est déjà toi qui m’a parlé de update_post_meta 😉
    et bien , je vais regarder get_posts suite à tes précieux conseils.

    merci encore !

5 sujets de 1 à 5 (sur un total de 5)
  • Le forum ‘Utilisation spécifique de WordPress’ est fermé à de nouveaux sujets et réponses.