lost144
Goto Top

PHP MySQL Abfrage aus Datenbank

Hallo,

Ich habe in einer Datenbank daten über VM's stehen. Angaben wie hostname,adresse, serverat usw.

Wie kann ich in PHP ne Abfrage der Daten aus der Datenbank so machen, dass der nach und nach alle Daten ausliest.
Ich möchte gerne nach und nach per Script aus der Datenbank rauslesen, welche VM's an sind und die herausfiltern und diese Daten in eine CMD senden.
Wenn ich angeben würde, das die VM xy herausgefiltert werden soll kann ich in die sql Abfrage dies einbauen aber das kann ich in diesem Fall nicht anwenden.

Vielen Dank für Tipps

Content-ID: 242502

Url: https://administrator.de/contentid/242502

Ausgedruckt am: 22.11.2024 um 22:11 Uhr

SlainteMhath
SlainteMhath 02.07.2014 um 16:28:29 Uhr
Goto Top
Moin,

hm, ziemlich verworren dein Beitrag... schon mal Google gefragt? Der kennt 1000te seiten, wie z.b. das hier: http://www.homeandlearn.co.uk/php/php13p2.html

lg,
Slainte
Xaero1982
Xaero1982 02.07.2014 um 21:21:01 Uhr
Goto Top
Hi,

nicht nur verworren, sondern irgendwie total unverständlich. Versuchs bitte noch mal... von mir aus auch mit 5 Worten mehr und Satzzeichen an den richtigen Stellen.

Gruß
Lost144
Lost144 03.07.2014 um 08:49:18 Uhr
Goto Top
Er gibt aus der DB Abfrage mir aus dem ersten Feld die Daten aus aber nicht die anderen zugehörigen Daten die zu dem Feld gehört.
SlainteMhath
SlainteMhath 03.07.2014 um 08:57:28 Uhr
Goto Top
was bitte?

Ok, bitte zeig uns doch mal ein SQL Statement, das Schema der zugehörigen Tabellen und was dudir eigentlich als Ergebniss vorstellst (notfalls als Screenshot von Excel oder so).
Lost144
Lost144 03.07.2014 um 11:14:03 Uhr
Goto Top
habe diesen Code und er schreibt mir in die Datei nur das erste Ergebnis aus der Schleife.
Aber wenn ich den Code ohne die function für das einfügen in die Datei verwende, gibt mir die Schleife alle Ergebnise aus der DB aus.
Und so fügt der in die Datei nur den ersten Treffer aus

for ($i=0;$i<$num;$i++)
{
$hostname = mysql_result($res, $i, "hostname");
$serverart = mysql_result($res, $i, "serverart");
$serveradresse = mysql_result($res, $i, "serveradresse");
$datastore = mysql_result($res, $i, "datastore");


function write_data($data, $fname) {

$fp = fopen($fname, "w");

foreach ($data as $key => $value) {

fwrite($fp, "$key $value \n");
}

fclose($fp);
}

$test["1"]= $hostname;
$test["2"]= $serverart;
$test["3"]= $serveradresse;
$test["4"]= $datastore;

write_data($test, "daten.txt");
SlainteMhath
SlainteMhath 03.07.2014 um 11:44:51 Uhr
Goto Top
Sorry, aber der code ist genauso verwirrt wie dein Beitrag.

Möchtest du evtl. das hier machen:
$fp = fopen($fname, "w");  
for ($i=0;$i<$num;$i++)
{
	$hostname = mysql_result($res, $i, "hostname");  
	$serverart = mysql_result($res, $i, "serverart");  
	$serveradresse = mysql_result($res, $i, "serveradresse");  
	$datastore = mysql_result($res, $i, "datastore");  
	
	fwrite($fp, "1 $hostname\n");  
	fwrite($fp, "2 $serverart\n");  
	fwrite($fp, "3 $serveradresse\n");  
	fwrite($fp, "4 $datastore\n");  
			
	}
fclose($fp);
?
Lost144
Lost144 03.07.2014 um 15:27:11 Uhr
Goto Top
Ich weil einfach die Variablen aus der Schleife in eine txt Datei speichern.
Wie ich oben benannt habe. Und nein dein Code hilft mir nicht weiter.
SlainteMhath
SlainteMhath 03.07.2014 aktualisiert um 15:55:26 Uhr
Goto Top
Also der Code schreibt aus der Schleife
for ($i=0;$i<$num;$i++)
die Variablen
	$hostname = mysql_result($res, $i, "hostname");   
	$serverart = mysql_result($res, $i, "serverart");   
	$serveradresse = mysql_result($res, $i, "serveradresse");   
	$datastore = mysql_result($res, $i, "datastore");   
in eine Textdatei
$fp = fopen($fname, "w");   
...
fwrite($fp, "1 $hostname\n");   
	fwrite($fp, "2 $serverart\n");   
	fwrite($fp, "3 $serveradresse\n");   
	fwrite($fp, "4 $datastore\n");   
...
fclose($fp);

Du musst also schon konkreter werden. Oder du postest, wie schon oben angemerkt, mal den komplette code inkl. dem SQL Statement und den Tabellen Schemas
Lost144
Lost144 04.07.2014 aktualisiert um 11:17:53 Uhr
Goto Top
Hier mein kompletter Code.
Er schreibt mir nun die Daten oben aus der SQL Abfrage in eine Text Datei aber ich habe das Problem das er jedes mal beim ausführen die Daten an die vorhanden Daten in der Text datei ergänzt. Aber wenn ich oben im Code den Paramater W verwende, schreibt er mir nur einen Datensatz rein


 
<?php 


  
   $db     = mysql_connect(".....")  
   $db_sel = mysql_select_db("ks");  
$timestamp = time();
$heute = date("Y-m-d",$timestamp);	  
   $sql_ab  = "SELECT * ";  
   $sql_ab .= "FROM GEHIM ";  
   $sql_ab .= "WHERE status = '1' AND Datum < $heute";  
   
   $res = mysql_query($sql_ab);
   $num = mysql_num_rows($res);   
   
  
   if ($num == 0)
   {
   echo "Fehler";  
   }
   else
   {
     
	// $hostname= ''; 
     for ($i=0;$i<$num;$i++)
     {
        // $hostname     =    $hostname."\r\n".mysql_result($res, $i, "hostname"); 
		$hostname    =    mysql_result($res, $i, "hostname");  
  	    $serverart    =    mysql_result($res, $i, "serverart");  
		$serveradresse    =    mysql_result($res, $i, "serveradresse");  
		$datastore    =    mysql_result($res, $i, "datastore");  
		$Datum    =    mysql_result($res, $i, "Datum");  
		
	



$filename = 'test.txt';  




		if (is_writable($filename)) {

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

 
				if (!fwrite($handle, $hostname.','.$serveradresse.','.$serverart.','.$datastore.',')) {  
				print "Kann in die Datei $filename nicht schreiben";  
				exit;
    }

    print "Fertig, in Datei $filename wurde  geschrieben";  

    fclose($handle);

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


     }
     mysql_close($db);
     
        
 

}
   
?>
Biber
Biber 04.07.2014 um 11:39:31 Uhr
Goto Top
Moin Lost144,

... das is' ja mal ein witziges Schleifenkonstukt...

Musst du wirklich innerhalb der FETCHerei bei jedem Datensatz die Ausgabedatei test.txt öfnen, einen Satz schreiben und wieder schliessen?

Falls das keine ABM-Massnahme für deinen Prozessor ist und/oder du ihm künftig den gesetzlich empfohlenen Mindestlohn zahlen musst
-> dann würde ich es überdenken.

Ich liebe Freitage
Biber
SlainteMhath
SlainteMhath 04.07.2014 um 11:58:42 Uhr
Goto Top
Aber wenn ich oben im Code den Paramater W verwende
Ja das liegt genau an dem was dir Biber geschrieben hat. Du führst bei jedem Datensatz ein fopen aus

Aus der PHP Doku zu fopen mit parameter "w"
Nur zum Schreiben geöffnet; platziere Dateizeiger auf Dateianfang und kürze die Datei auf eine Länge von 0. Existiert die Datei nicht, versuche, diese zu erzeugen.

also Code umstellen, fopen einmal am VOR der Schleife, fclose einmal NACH der Schleife und dann gehts.
Lost144
Lost144 04.07.2014 um 13:40:02 Uhr
Goto Top
Vielen Dank das du mir Geholfen hast anstatt mir eine Predigt zu halten face-smile

Problem ist gelöst