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 :

Foreach imbriqués script


Sujet :

Langage PHP

  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Etudiant
    Inscrit en
    Février 2016
    Messages
    47
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Etudiant

    Informations forums :
    Inscription : Février 2016
    Messages : 47
    Points : 25
    Points
    25
    Par défaut Foreach imbriqués script
    Bonjour,

    J'ai fait le lien avec mes deux bases de données mais je ne comprends pas pourquoi ce code ne marche pas :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    $requete2 = $bdd2->prepare("SELECT * FROM node");  
    $requete3 = $bdd3->prepare("SELECT * FROM node");  
     
    $res2 = $requete2->fetchAll();
    $res3 = $requete3->fetchAll();
     
    foreach($res3 as $row3){
    $ajouter="oui";
    	foreach($res2 as $row2){
    					if($row2==$row3)
    					{
    					  $ajouter = "non";
    					  }
    				}
    En gros je regarde si une ligne de la bdd3 est dans la bdd2, si elle y est je passe mon attribut "ajouter" à non, sinon il reste à oui pour la suite du code.Et quand je l'execute avec lle reste de mon script cela n'affiche aucune erreur, mais je crois bien que l'erreur vient des foreach car le reste du code me parrait juste.


    Une idée ?

    Merci

  2. #2
    Modératrice
    Avatar de Celira
    Femme Profil pro
    Développeuse PHP/Java
    Inscrit en
    Avril 2007
    Messages
    8 633
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Développeuse PHP/Java
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2007
    Messages : 8 633
    Points : 16 372
    Points
    16 372
    Par défaut
    Techniquement, ça a l'air correct. Peux-tu préciser le "ce code ne marche pas" ? Il plante ? Il ne fait rien ? Il ne fait pas ce que tu attends ?
    Modératrice PHP
    Aucun navigateur ne propose d'extension boule-de-cristal : postez votre code et vos messages d'erreurs. (Rappel : "ça ne marche pas" n'est pas un message d'erreur)
    Cherchez un peu avant poser votre question : Cours et Tutoriels PHP - FAQ PHP - PDO une soupe et au lit !.

    Affichez votre code en couleurs : [CODE=php][/CODE] (bouton # de l'éditeur) et [C=php][/C]

  3. #3
    Nouveau membre du Club
    Homme Profil pro
    Etudiant
    Inscrit en
    Février 2016
    Messages
    47
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Etudiant

    Informations forums :
    Inscription : Février 2016
    Messages : 47
    Points : 25
    Points
    25
    Par défaut Re
    Et bien il ne se passe rien, voici le reste du 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
    if($ajouter=="oui")
    {
     
    					$autoloader = require_once 'autoload.php';
     
    					  $kernel = new DrupalKernel('prod', $autoloader);
     
    					  $request = Request::createFromGlobals();
    					  $response = $kernel->handle($request);
    					  $response->send();
     
    					$caracteristiques = $bdd3->prepare("SELECT node.type, node__body.langcode, title, body_value, body_format FROM node, node__body, node_field_data WHERE node.nid=node__body.entity_id");
    					$carac = $caracteristiques->fetch();
     
    					  $node = Node::create([
    					  'type' => $carac['node.type'],
    					  'langcode' => $carac['node__bodylangcode'],
    					  'created' => REQUEST_TIME,
    					  'changed' => REQUEST_TIME,
    					  'uid' => 1,
    					  'title' => $carac['title'],
    					  'body' => [
    					    'summary' => '',
    					    'value' => $carac['body_value'],
    					    'format' => $carac['body_format'],
    					  ],
    								]);
    					  $node->save();
    }
    }
    Si le ajouter a pour valeur "oui", en gros je crée une nouvelle page sur un autre site drupal (j'envoie les données dans l'autre bdd et j'utilise l'API avec le create Node ... etc), mais quand j'execute le script, aucune erreur, et les pages de mon site A ne sont pas dupliquées dans mon site B.

    Peut être que l'erreur vient d'autre part, je n'en sais rien


    PS : la requête SQL préparée fonctionne, je l'ai testé dans mon phpmyadmin

  4. #4
    Modératrice
    Avatar de Celira
    Femme Profil pro
    Développeuse PHP/Java
    Inscrit en
    Avril 2007
    Messages
    8 633
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Développeuse PHP/Java
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2007
    Messages : 8 633
    Points : 16 372
    Points
    16 372
    Par défaut
    Tu peux essayer de debugguer à coup de var_dump, par exemple à afficher : var_dump($row2, $row3);.
    Modératrice PHP
    Aucun navigateur ne propose d'extension boule-de-cristal : postez votre code et vos messages d'erreurs. (Rappel : "ça ne marche pas" n'est pas un message d'erreur)
    Cherchez un peu avant poser votre question : Cours et Tutoriels PHP - FAQ PHP - PDO une soupe et au lit !.

    Affichez votre code en couleurs : [CODE=php][/CODE] (bouton # de l'éditeur) et [C=php][/C]

  5. #5
    Nouveau membre du Club
    Homme Profil pro
    Etudiant
    Inscrit en
    Février 2016
    Messages
    47
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Etudiant

    Informations forums :
    Inscription : Février 2016
    Messages : 47
    Points : 25
    Points
    25
    Par défaut Re
    D'accord, merci bien je vais essayer

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

    tu multiplies inutilement le nombre de boucles.

    Code php : 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
    <?php
    // base DANS laquelle on va copier les lignes
    $requete2 = $bdd2->prepare("SELECT id FROM node"); // on récupère les id (déjà copiés)
    $res2 = $requete2->fetchAll();
     
    $list_ids = array();
    foreach($res2 as $row2){
     $list_ids[] = $row2['id'];
    }
    $list_ids = ( !empty($list_ids) )? implode( ',', $list_ids) : ''; //  les id (déjà copiés), séparés par des virgules
     
    // base de départ : on ne prend que les lignes non-existantes
    $requete3 = $bdd3->prepare("SELECT * FROM node WHERE id NOT IN (".$list_ids.") ");   // (PAS dans les id déjà copiés)
    $res3 = $requete3->fetchAll();
     
    foreach($res3 as $row3){
    	$ajouter = "oui"; // FORCEMENT
    	// on ajoute .......
     
    }
    (si c'est le contraire, remplacer 3 par 2 et visser vers ça )
    Dernière modification par Invité ; 30/08/2016 à 10h39.

  7. #7
    Nouveau membre du Club
    Homme Profil pro
    Etudiant
    Inscrit en
    Février 2016
    Messages
    47
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Etudiant

    Informations forums :
    Inscription : Février 2016
    Messages : 47
    Points : 25
    Points
    25
    Par défaut Re
    Bonjour*

    Bien vu, merci beaucoup ! C'est plus propre, et du coup je n'ai plus besoin de cette variable $ajouter

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 2
    Dernier message: 19/04/2016, 18h50
  2. [MySQL] Menu dynamique avec foreach imbriqués
    Par Sergio_zero dans le forum PHP & Base de données
    Réponses: 0
    Dernier message: 15/07/2015, 14h50
  3. la fonction foreach sur un script mysql2xml
    Par rezareza dans le forum Langage
    Réponses: 1
    Dernier message: 09/02/2009, 10h21
  4. [JSTL] Lier des tags c:forEach imbriqués aux class de la servlet
    Par Joratois dans le forum Taglibs
    Réponses: 8
    Dernier message: 19/01/2009, 10h42
  5. [MySQL] Aide pour un script utilisant foreach
    Par nicoreims dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 09/08/2006, 16h36

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