While- Schleife und Variablen

Alles, was MariaDB und MySQL betrifft, kann hier besprochen werden.

While- Schleife und Variablen

Postby Code_Red » 23. April 2005 03:56

Hi,

Also folgendes:

Ich will mir durch eine while- Schleife meine Daten aus der Datenbank holen.

Bei früheren Scripten, die meist nur mit html, php und sql gelaufen sind, war ich es gewohnt, das php automatisch alle Variablen der while- Schleife verarbeitet, die auch wirklich da sind und nicht nur den ersten oder letzten Eintrag in der Tabelle.


Hier also aber einmal der Teil des Scripts um den es geht, zum besseren Verständnis:

Code: Select all
<?php

$connect = mysql_connect("XXXXXX", "XXXXXX", "XXXXXX")
   or die("Keine Verbindung möglich: " . mysql_error());
mysql_select_db("dns_admin");


$sql_GET_A = "SELECT * FROM `A` WHERE `user` = '$benutzer' AND `domain` = '$domain'";

$query_GET_A = mysql_query ("$sql_GET_A")
or die("FEHLER: " . mysql_error());

while ($sql_GET_A = mysql_fetch_assoc($query_GET_A)) {

$FROM_A_HOST      =    $sql_GET_A["host"];
$FROM_A_IP      =    $sql_GET_A["ip"];
$FROM_A_TTL      =    $sql_GET_A["ttl"];


copy ("LEER.DATEI", "/srv/www/htdocs/web1/html/dns/2/$domain");


$filename = '/srv/www/htdocs/web1/html/dns/2/'.$domain.'';
$somecontent = "$FROM_A_HOST";


if (is_writable($filename)) {


   if (!$handle = fopen($filename, "a")) {
         print "Kann die Datei $filename nicht öffnen";
         exit;
   }


   if (!fwrite($handle, $somecontent)) {
       print "Kann in die Datei $filename nicht schreiben";
       exit;
   }

      fclose($handle);

} else {
   print "Die Datei $filename ist nicht schreibbar";
}



}

?>


Also:

Trotz das "$FROM_A_HOST" mehr als einmal existiert, wird er nur einmal in die File geschrieben.

Wie kann ich es machen, das alle "$FROM_A_HOST" Auszüge beachtet werden?


Bei html per echo ist das ja automatisch so.
Ist wirklich wichtig, mir ist bis jetzt keine andere Lösung eingefallen.



MfG
Denis
Code_Red
 
Posts: 3
Joined: 23. April 2005 03:53

Postby Wiedmann » 23. April 2005 04:22

Verkürzt:
Code: Select all
while ($sql_GET_A = mysql_fetch_assoc($query_GET_A)) {
    ...
    $FROM_A_HOST      =    $sql_GET_A["host"];
    ...
    copy ("LEER.DATEI", "/srv/www/htdocs/web1/html/dns/2/$domain");
    ...
    $somecontent = "$FROM_A_HOST";
    ...
    $handle = fopen('/srv/www/htdocs/web1/html/dns/2/'.$domain.'', "a")
    fwrite($handle, $somecontent)
}

Wenn du jedes mal vor dem Schreiben in eine Datei, diese durch eine leere Version ersetzt, kann am Schluss nur das vom letzten Durchgang der While-Schleife drinstehen. (Was immer das copy da überhaupt bewirken soll?)
Wiedmann
AF Moderator
 
Posts: 17102
Joined: 01. February 2004 12:38
Location: Stuttgart / Germany

Postby Code_Red » 23. April 2005 04:28

Wiedmann wrote:Verkürzt:
Code: Select all
while ($sql_GET_A = mysql_fetch_assoc($query_GET_A)) {
    ...
    $FROM_A_HOST      =    $sql_GET_A["host"];
    ...
    copy ("LEER.DATEI", "/srv/www/htdocs/web1/html/dns/2/$domain");
    ...
    $somecontent = "$FROM_A_HOST";
    ...
    $handle = fopen('/srv/www/htdocs/web1/html/dns/2/'.$domain.'', "a")
    fwrite($handle, $somecontent)
}

Wenn du jedes mal vor dem Schreiben in eine Datei, diese durch eine leere Version ersetzt, kann am Schluss nur das vom letzten Durchgang der While-Schleife drinstehen. (Was immer das copy da überhaupt bewirken soll?)


Um das copy gehts doch auch überhaupt nicht -.-
Lass das copy einfach mal aussen vor. Das hat damit gar nichts zu tun *G*

Es geht um dass das die Variable $FROM_A_HOST schon von der Tabelle her mehrere Einträge hat. Und diese sollen in der Datei landen.

Das mit der leeren Datei hat schon seinen Sinn, und mit dem null zu tun ...



$FROM_A_HOST hat in dem Fall 2 SQL Tabellen Einträge.
Einmal sagen wir einfach mal www.domain.tld und einmal domain.tld..

Mach ich jetzt echo $FROM_A_HOST; werden automatisch beide aufgelistet.

Aber nicht wenn ich die Variable in die Datei einfügen will - wieso weiß wohl nur Gott.. Deshalb brauch ich wohl oder übel eine andere Lösung.
Code_Red
 
Posts: 3
Joined: 23. April 2005 03:53

Postby Wiedmann » 23. April 2005 10:36

Um das copy gehts doch auch überhaupt nicht -.-
Lass das copy einfach mal aussen vor. Das hat damit gar nichts zu tun *G*

Wie du meinst.

Es geht um dass das die Variable $FROM_A_HOST schon von der Tabelle her mehrere Einträge hat. Und diese sollen in der Datei landen.

$FROM_A_HOST hat bei jedem Schleifendurchlauf genau einen Wert --> Den Wert, den die Spalte `host` aus der Tabelle `A` in der aktuellen Reihe des Resultsets hat. Beim nächsten Schleifendurchlauf wird der nächste `host`dieser Variablen zugewiesen.

Bei jedem Schleifendurchlauf hängst du also einen `host`an die Datei $domain dran. Da du diese Datei in jedem Schleifendurchlauf neu erstellst, wird also nur ein `host`in dieser Datei stehen.

BTW: was meinst du mit "von der Tabelle her"? Was setth denn z.B. genau in so einem Feld?

Das mit der leeren Datei hat schon seinen Sinn, und mit dem null zu tun ...

Aha? Was für ein "dem null"?
Wiedmann
AF Moderator
 
Posts: 17102
Joined: 01. February 2004 12:38
Location: Stuttgart / Germany

Postby Code_Red » 23. April 2005 14:42

äääh..

O.K. sorry *G* .. hatte wohl eine kleine denkblockade..
jetzt ist mir das klar..

merci!
Code_Red
 
Posts: 3
Joined: 23. April 2005 03:53


Return to MariaDB - MySQL

Who is online

Users browsing this forum: No registered users and 33 guests