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-Key: 242502

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

Printed on: April 25, 2024 at 06:04 o'clock

Member: SlainteMhath
SlainteMhath Jul 02, 2014 at 14:28:29 (UTC)
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
Member: Xaero1982
Xaero1982 Jul 02, 2014 at 19:21:01 (UTC)
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ß
Member: Lost144
Lost144 Jul 03, 2014 at 06:49:18 (UTC)
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.
Member: SlainteMhath
SlainteMhath Jul 03, 2014 at 06:57:28 (UTC)
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).
Member: Lost144
Lost144 Jul 03, 2014 at 09:14:03 (UTC)
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");
Member: SlainteMhath
SlainteMhath Jul 03, 2014 at 09:44:51 (UTC)
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);
?
Member: Lost144
Lost144 Jul 03, 2014 at 13:27:11 (UTC)
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.
Member: SlainteMhath
SlainteMhath Jul 03, 2014 updated at 13:55:26 (UTC)
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
Member: Lost144
Lost144 Jul 04, 2014 updated at 09:17:53 (UTC)
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);
     
        
 

}
   
?>
Member: Biber
Biber Jul 04, 2014 at 09:39:31 (UTC)
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
Member: SlainteMhath
SlainteMhath Jul 04, 2014 at 09:58:42 (UTC)
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.
Member: Lost144
Lost144 Jul 04, 2014 at 11:40:02 (UTC)
Goto Top
Vielen Dank das du mir Geholfen hast anstatt mir eine Predigt zu halten face-smile

Problem ist gelöst