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 16/03/2011, 11h22   #1
Invité de passage
 
Inscription : février 2011
Messages : 15
Détails du profil
Informations forums :
Inscription : février 2011
Messages : 15
Points : 1
Points : 1
Par défaut ecriture de tous les lignes sql dans un fichier texte

bonjour,
je voudrais écrire dans un fichier texte une commande iptable ,avec les information tiré de ma base de données,le problème es qu'il ne m'affiche qu'une seule ligne avec des données prise aléatoirement.je désirerais que ma commande iptable se répète en prenant tous les lignes de ma table sql a la suite. j'espere que vous pourrez m'aider ,voici le code que j'utilise:
Code php :
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
 
$chemin="/var/www";
$texte="test.txt";
$fp= fopen('$texte',"w+");  //On ouvre le fichier 
 
 
 connexion_bdd();
   // on écrit la requête sql
$sql='select mac,port1,port2 from liste_user_tbl,listeparefeu_tbl,services_tbl order by listeparefeu_tbl.id_user';
$req = mysql_query($sql);
 
// différents tests du déroulement de la requête
	if (!$req) 
	{
	echo "Impossible d'exécuter la requête ($sql) dans la base : " . mysql_error();
  	 exit;
	}
 
if (mysql_num_rows($req) == 0) 
{
   echo "Aucune ligne trouvée, rien à afficher.";
   exit;
}
while ($rang=mysql_fetch_array($req))
					{
						$mac=$rang ['mac'];
						$port1=$rang ['port1'];
						$port2=$rang ['port2'];
						}
 
	fwrite($fp,"iptables -A INPUT -i --dport".$port1." -m  mac --mac-source ".$mac."  -j ACCEPT\iptables -A INPUT -i --dport".$port2." -m  mac --mac-source ".$mac."  -j ACCEPT");
	exec("sudo sh ".$chemin.$texte);
 
 
 
 
fclose($fp); //On ferme le fichier
noche29 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/03/2011, 14h27   #2
Invité de passage
 
Inscription : février 2011
Messages : 15
Détails du profil
Informations forums :
Inscription : février 2011
Messages : 15
Points : 1
Points : 1
j'ai change ma requete sql et maintenant il me marque que la dernière ligne de ma table . voici la modification :
Code php :
1
2
3
4
$sql='SELECT mac,port1,port2 FROM listeparefeu_tbl,liste_user_tbl,services_tbl
where listeparefeu_tbl.id_user=liste_user_tbl.id_user
and listeparefeu_tbl.id_services=services_tbl.id_services
order by listeparefeu_tbl.id_user';
noche29 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/03/2011, 14h48   #3
Expert Confirmé
 
Avatar de RunCodePhp
 
Inscription : janvier 2010
Messages : 2 708
Détails du profil
Informations personnelles :
Localisation : Réunion

Informations forums :
Inscription : janvier 2010
Messages : 2 708
Points : 3 278
Points : 3 278
Salut

A mon avis, ce n'est pas la requête SQL qui ne va pas, mais au niveau de la boucle while.
Code :
1
2
3
4
5
6
7
 
while ($rang=mysql_fetch_array($req))
{
$mac=$rang ['mac'];
$port1=$rang ['port1'];
$port2=$rang ['port2'];
}
Ici, à chaque tour de boucle $mac, $port1, $port2 sont "écrasés", et au bout, on aura qu'1 seul groupe de ces 3 variables contenant que la valeur de la dernière ligne.

Il faudrait à mon sens faire quelque chose comme :
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
 
$contenu = '';
while ($rang = mysql_fetch_array($req)) {
    $contenu .= 'bla'.$rang['mac'].'bla'.$rang['port1'].'bla'.$rang['port2'].'...blablabla...';
}
 
 
if (!empty($contenu)) {
    $fp= fopen('$texte',"w+"); //On ouvre le fichier 
    fwrite($fp, $contenu);
    fclose($fp); //On ferme le fichier
    //
    exec(... blablabla ...);
}
Prends soin aussi d'ouvrir le fichier, écrire, fermer le fichier, exécuter une commande QUE s'il y a eu du contenu, c'est plus zen.


Autre petite parenthèse aussi, prends soin quand tu post dans un forum, de mettre les parties de code dans un codeBox (BBCode), comme j'ai fais.
Ca améliore la compréhension, et ça incite les autres à te répondre.
__________________
Win XP | WampServer 2.2d | Apache 2.2.21 | Php 5.3.10 | MySQL 5.5.20
Si debugger, c'est supprimer des bugs, alors programmer ne peut être que les ajouter [Edsger Dijkstra]
RunCodePhp est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 16/03/2011, 15h29   #4
Invité de passage
 
Inscription : février 2011
Messages : 15
Détails du profil
Informations forums :
Inscription : février 2011
Messages : 15
Points : 1
Points : 1
je te remercie pour ta réponse rapide et précise ,ça fonctionne ,j'ai toute mes données dans mon fichier .
noche29 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 18h59.


 
 
 
 
Partenaires

Hébergement Web