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 :

Double foreach imbriqué


Sujet :

PHP & Base de données

  1. #1
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2011
    Messages
    148
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2011
    Messages : 148
    Points : 54
    Points
    54
    Par défaut Double foreach imbriqué
    Bonjour,

    J'aurais besoin d'un peu d'aide, je m'embrouille

    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
    <?php
    ini_set("memory_limit", "12000M"); // augmentation memoire
    include("../includes/database_site.php");
     
    $query_monde=$_GET['monde'];
    $select = "SELECT numero, name FROM infos WHERE name='$query_monde'";
    $result = mysql_query($select,$link_stats) or die ('Erreur : '.mysql_error() );
    $total = mysql_num_rows($result);
     
    if($total) {
        while($row = mysql_fetch_array($result)) {
    $monde=$row["name"];
    $numero_monde=$row["numero"];
        }
     
    }
    mysql_free_result($result);
     
    $nom_url_fichiers = array(  
    					array(  'Index' => "fichier1", 
    							'table' => "$monde_players",
    							'columns' => "(id, name, alliance_id, points, rank, towns) VALUES('$id', '$name', '$alliance_id', '$points', '$rank', '$towns')",
    							'file_name' => "../mondes/$query_monde/data/players.txt", 
                                                            'list' => "$id, $name, $alliance_id, $points, $rank, $towns" 
     
    					),
    					);
     
     
    foreach( $nom_url_fichiers as $fichiers ) {	
    		echo $table = $fichiers['table'];
    		$columns = $fichiers['columns'];
    		$file_name = $fichiers['file_name'];
    		$datafile = file("../mondes/$query_monde/data/players.txt");
                    $list = $fichiers['list'];
     
    foreach($datafile as $datum){
    		$req = mysql_query("TRUNCATE TABLE $table");
    		list($list) = explode(',', $datum);
    		$sql = "INSERT INTO $table $columns";
    		mysql_query($sql,$link_stats) or die("La table $table n'a pas été mise à jour ! </br>".mysql_error());
     
     
    }echo "La table $table a été mise à jour !";
    }
    ?>
    Comment faire pour faire marcher les 2 foreach ? Merci d'avance !

    ps : (la fonction LOAD DATA LOCAL INFILE ou LOAD DATA INFILE) ne marche pas sur mon serveur

  2. #2
    Membre confirmé Avatar de humitake
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2010
    Messages
    399
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2010
    Messages : 399
    Points : 578
    Points
    578
    Par défaut
    Bonsoir,

    Le sujet de ton post est :
    Citation Envoyé par MRJBGO
    Double foreach imbriqué
    Or dans ton code le second foreach s'exécute après le premier ...

  3. #3
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2011
    Messages
    148
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2011
    Messages : 148
    Points : 54
    Points
    54
    Par défaut
    Une erreur de ma part qui ne résolu pas le problème ^^

  4. #4
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    41
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 41
    Points : 38
    Points
    38
    Par défaut
    Bonjour,

    Déjà, quelque chose me perturbe dans ton code :

    ....$query_monde=$_GET['monde'];
    $select = "SELECT numero, name FROM infos WHERE name='$query_monde'";
    $result = mysql_query($select,$link_stats) or die ('Erreur : '.mysql_error() );
    $total = mysql_num_rows($result);

    if($total) { ...
    if($total) ??? ce n'est pas un booleen la fonction mysql_num_rows renvoie forcement un entier.

    ensuite
    $nom_url_fichiers = array(
    array( 'Index' => "fichier1",
    'table' => "$monde_players",
    'columns' => "(id, name, alliance_id, points, rank, towns) VALUES('$id', '$name', '$alliance_id', '$points', '$rank', '$towns')",
    'file_name' => "../mondes/$query_monde/data/players.txt",
    'list' => "$id, $name, $alliance_id, $points, $rank, $towns"

    ),
    );
    Pour quoi faire 2 array imbriqués ? tu n'as pas besoin dans ton cas de faire un tableau a 2 dimensions.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    $nom_url_fichiers = array(  'Index' => "fichier1", 
    					      'table' => "$monde_players",
    					      'columns' => "(id, name, alliance_id, points, rank, towns) VALUES('$id', '$name', '$alliance_id', '$points', '$rank', '$towns')",
    					      'file_name' => "../mondes/$query_monde/data/players.txt", 
                                                  'list' => "$id, $name, $alliance_id, $points, $rank, $towns" 
    					);
    foreach( $nom_url_fichiers as $fichiers ) {
    echo $table = $fichiers['table'];
    $columns = $fichiers['columns'];
    $file_name = $fichiers['file_name'];
    $datafile = file("../mondes/$query_monde/data/players.txt");
    $list = $fichiers['list'];

    foreach($datafile as $datum){
    $req = mysql_query("TRUNCATE TABLE $table");
    list($list) = explode(',', $datum);
    $sql = "INSERT INTO $table $columns";
    mysql_query($sql,$link_stats) or die("La table $table n'a pas été mise à jour ! </br>".mysql_error());


    }echo "La table $table a été mise à jour !";
    }
    Essaye ca plutôt :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    $table = $nom_url_fichiers['table'];
    $columns= $nom_url_fichiers['columns'];
    $file_name= $nom_url_fichiers['file_name'];
    $datafile = file($file_name);
     
    foreach($datafile as $datum){
    		$req = mysql_query("TRUNCATE TABLE $table");
    		list($list) = explode(',', $datum);
    		$sql = "INSERT INTO $table $columns";
    		mysql_query($sql,$link_stats) or die("La table $table n'a pas été mise à jour ! </br>".mysql_error());
     
     
    }echo "La table $table a été mise à jour !";
    Voila, je sais pas si sa t'apporte des éléments de réponse car j'ai pas trop compris ton problème...

Discussions similaires

  1. Boucles foreach imbriquées: affichage non désiré
    Par renaud26 dans le forum Langage
    Réponses: 2
    Dernier message: 16/04/2009, 08h36
  2. Double boucle imbriquée pas assez rapide.
    Par Bruno13 dans le forum Algorithmes et structures de données
    Réponses: 3
    Dernier message: 16/06/2008, 21h01
  3. boucles foreach imbriquées!
    Par jalam dans le forum C#
    Réponses: 12
    Dernier message: 16/07/2007, 18h08
  4. [Tableaux] Probleme de Foreach imbriqué
    Par ainotenshi dans le forum Langage
    Réponses: 5
    Dernier message: 05/06/2007, 11h50
  5. [Dates] foreach imbrique ?
    Par pascale86 dans le forum Langage
    Réponses: 4
    Dernier message: 17/10/2005, 12h04

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