Funktion für While-Schleife

  • Themenstarter Themenstarter MaxivB
  • Beginndatum Beginndatum
M

MaxivB

Hallo,

ich möchte für Leute, denen keine MySQL-Datenbank eine Datenbank im Dateisystem basteln. Jetzt muss aber wie bei der MySQL-Funktion mysql_fetch_object das ganze mit einer While-Schleife funktionieren:
PHP:
<?php
$query = mysql_query("SELECT * FROM hallo");
while ($row = mysql_fetch_object($query)) {
   echo $row->test;
   }
?>
Ich habe dann hier mein Array, in dem Meine Ergebnise sind:
PHP:
<?php
function my_query($query) {
   [...]
   $results = array("hallo" => "test" [...]);
   return $results;
   }
function my_fetch_object($query) {
   return $query;
   }
$query = my_query("SELECT * FROM hallo");
while ($row = my_fetch_object($query)) {
   echo $row->test;
   }

Leider habe ich noch garkeinen Ansatz gefunden....

Danke im Voraus für eure Hilfe!
 
Es gibt auch Datenbanksysteme ohne eigenen Datenbankserver so wie etwa SQLite. Du musst das Rad also nicht neu erfinden.
 
Moin,

du kannst einen Array-Zeiger per next() nach vorn bewegen.

Da du aber eh im Dateisystem arbeitest, würde sich da generell etwas anderes anbieten, wie bspw. fgetcsv(), oder das von Gumbo erwähnte bereits erfundene Rad.
 
Im prinzip geht es mit PHP auch ganz einfach.


- Man schreibt mit serialize() ein Array oder object in eine datei
- läde diese datei wieder mit file_get_contents()
- verwandelt den string mit unserialize() zurück in eine Array oder Object
- anschliessend durchläuft man das Array/Object mit foreach() (nix mit next():rolleyes:))

diese Technik kann man auch mit Datenbanken verbinden :)
 
Hi!

Ja, ich will es aber nicht mit foreach() durchlaufen, es muss mit while sein, sonst kann ich den ganzen Skript nochmal neu schreiben, von wile-Schleifen auf foreach(). SQLite hat fast die selbe Struktur wie MySQL.
 
Ich habe jetzt schnell den Nachteil von SQLite gefunden, es speichert alles in einer Datei, das macht alles viel langsamer, kann man das auch anders einstellen?

Oder wie geht das jetzt mit der while()-Schleife? Wenn ich in der Funktion mit next() weiter gehe ist aber beim nächsten Aufruf allse wieder beim Anfang...

Wäre Nett wenn ihr mir mal ein Beispiel dafür geben könntet.


//EDIT:
Ich habe eine Lösung, geht das auch noch einfacher?
PHP:
$array = array("test", "hallo");
function test($arr) {
	static $c = 1;
	$c ++;
	if ($c - 1 == count($arr) + 1) {
		return false;
		}
	else {
		return $arr[($c - 2)];
		}
	}
while($string = test($array)){
	echo $string;
	}
 
Zuletzt bearbeitet von einem Moderator:
Zurück