Problème au niveau d'un foreach

Résolu
arcadenaker Messages postés 61 Date d'inscription   Statut Membre Dernière intervention   -  
arcadenaker Messages postés 61 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour,
Je suis en train de faire un foreach mais j'ai un problème avec le $value.
Celui-ci ne me donne pas tous les éléments du tableau comme nécessaire, je m'en suis rendu compte en faisant un var_dump();.
Normalement il y a 3 choses dans le tableau, mais le var_dump de $value en sort 1, celui-ci me donne que la première valeur de $data.
CODE:

foreach($data as $value){  
    var_dump($value);
    die;  
      if($data != false){
        if($value === $compte_view){
         }else{
          $se = $db->prepare("INSERT INTO view_articles(id_article, compte_view) VALUES(:id_article, :compte_view)");
          $se->execute(['id_article' => $id_article, 'compte_view' => $compte_view]);
         }
         break;
        }
      }

Merci d'avance pour vos idées!

2 réponses

Utilisateur anonyme
 
Bonsoir,

pourrait-on avoir un var_dump() de $data , SVP ?
Juste pour savoir, lorsque vous dites :

Celui-ci ne me donne pas tous les éléments du tableau comme nécessaire, je m'en suis rendu compte en faisant un var_dump();.

Il s'agit du var_dump() qui est dans l'exemple que vous nous donnez ? avec le die ?

foreach($data as $value){  
    var_dump($value);
    die;  
0
arcadenaker Messages postés 61 Date d'inscription   Statut Membre Dernière intervention   1
 
En fait j'ai fait un var_dump de $value et puis celui de $data mais ceux-ci étaient plus au-dessus de mon code et je me suis rendu compte qui manquait des choses:

echo "Premier ($data) :";
    var_dump($data); //var_dump du $data
    echo "Suivant ($value) :";
    foreach($data as $value){  
    var_dump($value); //var_dump de $value


Avec ceci j'ai eu un resultat comme ça:

Premier ($data) :

array (size=3)
0 =>
array (size=2)
'compte_view' => string 'salut258' (length=8)
0 => string 'salut258' (length=8)
1 =>
array (size=2)
'compte_view' => string 'Arcadenaker258' (length=14)
0 => string 'Arcadenaker258' (length=14)
2 =>
array (size=2)
'compte_view' => string '123456' (length=6)
0 => string '123456' (length=6)

Suivant ($value) :

array (size=2)
'compte_view' => string 'salut258' (length=8)
0 => string 'salut258' (length=8)
0
jordane45 Messages postés 38486 Date d'inscription   Statut Modérateur Dernière intervention   4 752
 
Donc c'est bon ou pas ??
C'est ce que tu souhaites obtenir ou non ?
Si ce n'est pas bon.. pourrais tu nous indiquer ce que "devrait" avoir selon toi ?
Donnes nous également un peu plus de code... j'ai l'impression que tu as laissé un DIE qui fait se troper ta boucle et donc ne te donne pas tout.

Et pour finir... comme déjà indiqué dans une précédente discussion....
Applique ceci pour tes requêtes PDO :
https://forums.commentcamarche.net/forum/affich-37584941-php-pdo-gerer-les-erreurs
Tu n'as visiblement toujours pas géré les erreurs PDO dans tes codes .... et c'est bien dommage
0
arcadenaker Messages postés 61 Date d'inscription   Statut Membre Dernière intervention   1
 
Bonjour Jordane45,
j'ai appliqué tes aides sur les erreures PDO et j'aimerais obtenir la meme chose de $data que de $value
mon code:
$data = $re->fetchAll();
    echo "Premier ($data) :";
    var_dump($data);
    echo "Suivant ($value) :";
    foreach($data as $value){  
    var_dump($value);
      if($data != false){
        if($value === $compte_view){
         }else{
          try{
          $se = $db->prepare("INSERT INTO view_articles(id_article, compte_view) VALUES(:id_article, :compte_view)");
          $se->execute(['id_article' => $id_article, 'compte_view' => $compte_view]);
          }catch(Exception $e){
          echo " Erreur ! ".$e->getMessage();
          echo "Erreur sur la requete '$se'" ;
          }
        }
        break;
      }
    }

Merci d'avance pour vos idées.
0
jordane45 Messages postés 38486 Date d'inscription   Statut Modérateur Dernière intervention   4 752
 
Ton souci se trouve où exactement ??
Au niveau de ton if je suppose...
$value est un array... Il faut que tu en sortes sa valeur
$value['compte_view']
0
arcadenaker Messages postés 61 Date d'inscription   Statut Membre Dernière intervention   1
 
Mon problème est là:
Quand je demande d'afficher ceci:

echo "Premier (data) :";
    var_dump($data);
    echo "Suivant (value) :";
    foreach($data as $value){  
    var_dump($value['compte_view']);
      if($data != false){
        if($value['compte_view'] === $compte_view){
         }else{
          try{
          $se = $db->prepare("INSERT INTO view_articles(id_article, compte_view) VALUES(:id_article, :compte_view)");
          $se->execute(['id_article' => $id_article, 'compte_view' => $compte_view]);
          }catch(Exception $e){
          echo " Erreur ! ".$e->getMessage();
          echo "Erreur sur la requete '$se'" ;
          }
        }
        break;
      }
    }


Il m'affiche ceci:



En sachant que normalement $data a plusieurs valeurs et que $value m'en affiche qu'une.
Merci pour vos idées d'avance.
0
jordane45 Messages postés 38486 Date d'inscription   Statut Modérateur Dernière intervention   4 752
 
Et.... Le break... Il fait quoi selon toi ?
0