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 :

ecriture de tous les lignes sql dans un fichier texte [MySQL]


Sujet :

PHP & Base de données

  1. #1
    Futur Membre du Club
    Inscrit en
    Février 2011
    Messages
    15
    Détails du profil
    Informations forums :
    Inscription : Février 2011
    Messages : 15
    Points : 6
    Points
    6
    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 : 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
     
    $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

  2. #2
    Futur Membre du Club
    Inscrit en
    Février 2011
    Messages
    15
    Détails du profil
    Informations forums :
    Inscription : Février 2011
    Messages : 15
    Points : 6
    Points
    6
    Par défaut
    j'ai change ma requete sql et maintenant il me marque que la dernière ligne de ma table . voici la modification :
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    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';

  3. #3
    Membre expert Avatar de RunCodePhp
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    2 962
    Détails du profil
    Informations personnelles :
    Localisation : Réunion

    Informations forums :
    Inscription : Janvier 2010
    Messages : 2 962
    Points : 3 947
    Points
    3 947
    Par défaut
    Salut

    A mon avis, ce n'est pas la requête SQL qui ne va pas, mais au niveau de la boucle while.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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]

  4. #4
    Futur Membre du Club
    Inscrit en
    Février 2011
    Messages
    15
    Détails du profil
    Informations forums :
    Inscription : Février 2011
    Messages : 15
    Points : 6
    Points
    6
    Par défaut
    je te remercie pour ta réponse rapide et précise ,ça fonctionne ,j'ai toute mes données dans mon fichier .

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

Discussions similaires

  1. [KSH] ajouter des saut de lignes tous les 200 caractères dans un fichier
    Par twixi dans le forum Shell et commandes GNU
    Réponses: 6
    Dernier message: 09/10/2012, 15h58
  2. [LV2009] Supprimer les lignes vides dans un fichier texte
    Par Super2006 dans le forum LabVIEW
    Réponses: 3
    Dernier message: 11/11/2011, 14h32
  3. Réponses: 2
    Dernier message: 28/11/2010, 15h15
  4. Réponses: 2
    Dernier message: 30/08/2007, 10h49
  5. Réponses: 2
    Dernier message: 16/08/2006, 14h47

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