Précédent   Forum des professionnels en informatique > PHP > PHP & SGBD > PHP & MySQL
PHP & MySQL Forum d'entraide sur les fonctions MySQL avec PHP. Avant de poster -> FAQ MySQL, Cours MySQL et Sources MySQL. Pour les questions concernant le moteur MySQL plutôt que les fonctions PHP, merci d'utiliser le forum MySQL.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 06/02/2012, 17h41   #1
Futur Membre du Club
 
Homme
Étudiant
Inscription : juin 2011
Messages : 135
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France, Calvados (Basse Normandie)

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : juin 2011
Messages : 135
Points : 17
Points : 17
Par défaut Double foreach imbriqué

Bonjour,

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

Code :
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
MRJBGO est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/02/2012, 22h32   #2
Membre éclairé
 
Avatar de humitake
 
Homme Olivier
Étudiant
Inscription : novembre 2010
Messages : 303
Détails du profil
Informations personnelles :
Nom : Homme Olivier
Âge : 20
Localisation : France

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : novembre 2010
Messages : 303
Points : 384
Points : 384
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 ...
humitake est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/02/2012, 19h36   #3
Futur Membre du Club
 
Homme
Étudiant
Inscription : juin 2011
Messages : 135
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France, Calvados (Basse Normandie)

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : juin 2011
Messages : 135
Points : 17
Points : 17
Une erreur de ma part qui ne résolu pas le problème ^^
MRJBGO est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/02/2012, 13h21   #4
Membre à l'essai
 
Inscription : décembre 2004
Messages : 36
Détails du profil
Informations forums :
Inscription : décembre 2004
Messages : 36
Points : 24
Points : 24
Bonjour,

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

Citation:
....$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
Citation:
$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 :
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" 
					);
Citation:
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 :
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...
cellestion est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 01h41.


 
 
 
 
Partenaires

Hébergement Web