Dynamisch aus der DB lesen?

Pain-maker

Mitglied
Hi @ all!
Ich wollt mal fragen ob es Möglichkeiten gibt, dynamischer aus einer MySQL-DB auszuelesen/einzutragen, ohne dabei immer alle Felder mit Werten nennen zu müssen.
Ich hatte mir mal was geschrieben um das Auslesen dynmaischer zu gestallten, allerdings glaube ich das das der komplizierteste/zeitaufwendigste Weg ist:
PHP:
<?php

protected function getConfigInformations() {
	global $mysql_db,$db,$mysql_prefix;
	$configfields="";
	$field=array();
	$fields = mysql_list_fields("$mysql_db", $mysql_prefix."_config");
	$columns = mysql_num_fields($fields);
	for($i=0; $i<$columns; $i++) {
		$configfields .= mysql_field_name($fields, $i);
		$field[$i] = mysql_field_name($fields, $i);
		if($i < $columns-1) $configfields.=",";
	}
	$query = $db->query("SELECT ".$configfields." FROM ".$mysql_prefix."_config",1);
	for($i=0; $i<$columns; $i++) {
		$vari = $field[$i];
		$this->$vari = $query[$i];
	}
	return true;
}

/** Aufruf der Config-Variable "Test" **/
echo $config->test;

?>
Dabei wurde dann immer eine Variable in meiner Klasse erstellt die dann den Namen des MySQL-Felds hatte.
Mir geht es dabei allerdings speziell um Benutzerinformationen oder Style-Werte in einer DB. Das wbb und das vbb haben da glaub ne tolle Lösung, allerdings konnt ich da bisher nicht durchsteigen.

Ich danke allen, die mir helfen können! :)
LG Pain-maker
 
Um Alle Felder einer Tabelle abzufragen, kannst du einfach folgendes verwenden:
SQL:
SELECT * FROM tabelle
Der Stern steht hier für alle Felder.
 
Na, das meint ich nicht^^
Wie man Alles ausliest ist mir schon klar, nur mir geht es speziell darum, wie ich alle Felder auslese ud ihnen Namen gebe ohne sie dabei zu definieren!
Es soll alles ausgelesen werden und gleichzeitig in einer Variable gespeichert werden ohne das ich diese definieren muss.
In meinem Besipielcode ist das so, aber ich wollte nun wissen was es für weitere Möglichkeiten gibt MySQL-Abfragen dynamischer zu gestallten.

Ich hoffe mein Problem ist jetzt klarer geworden!

Danke für jede Hilfe!
MFG Pain-maker
 
Wenns jetzt wieder falsch ist, was ich schreibe, hab ichs nicht kappiert was du meinst ;)

Nehmen wir mal an, die Tabelle "tabelle" hat die Spalten: S1, S2, S3, S4

PHP:
$sql = "SELECT * FROM tabelle";
$reasult = mysql_query($sql) or die(mysql_error());

while($row = mysql_fetch_assoc($result))
{
      print_r($row);
      echo "<hr>";
}

Die Ausgabe sähe dann in etwa so aus (Wenn es jetzt z.B. 3 Zeilen gibt)

Code:
Array
(
    [S1] => EIN WERT
    [S2] => EIN WERT
    [S3] => EIN WERT
    [S4] => EIN WERT
)
<hr>Array
(
    [S1] => EIN WERT
    [S2] => EIN WERT
    [S3] => EIN WERT
    [S4] => EIN WERT
)
<hr>Array
(
    [S1] => EIN WERT
    [S2] => EIN WERT
    [S3] => EIN WERT
    [S4] => EIN WERT
)
<hr>

Du kannst so auch direkt mit den "Spaltennamen" Arbeiten
Z.B. mit dieser while-Schleife
PHP:
while($row = mysql_fetch_assoc($result))
{
      echo "Wert S1: ".$row["S1"]."<br>";
      echo "Wert S2: ".$row["S2"]."<br>";
      echo "Wert S3: ".$row["S3"]."<br>";
      echo "Wert S4: ".$row["S4"]."<br>";
      echo "<hr>";
}

Wenns also wieder die falsche Antwort ist, dann bin ich entweder zu blöd für die Frage ^^ , oder du musst sie einfach mal etwas genauer (noch genauer als jetzt) beschreiben.
 
Mhh... okay ja das ist was ich wollte :)
Ich will halt das ganze so dynamisch wie möglich gestallten!

Ist jetzt vielleicht ne etwas unkonkrete Frage, aber was gibt es noch für Möglichkeiten dynamischer in PHP zu arbeiten?
Weil prog jetzt etwa 3 Jahre in PHP und hab meistens immer sehr viel Code der bei der kleinsten Veränderung angepasst werden muss...

Danke schon mal! :)
(Sorry für die unkonkrete Frage, vielleicht kannst mir/könnt ihr mir ja trotzdem helfen!)
 
Jetzt so allgemein, oder wie?

Eines wäre sicherlich bei Code, der sich immer wieder wiederholt, viel mit Funktionen/Klassen zu arbeiten.
Ansonsten musst du halt einfach nur schauen, wie man dieses und jenes am kürzesten hinbekommen kann. Das hier ist ja ein gutes Beispiel. Einfach schauen, ob PHP dafür schon fertige Funktionen liefert, anstatt umständlich eigene zu schreiben, die zwar das gleiche können, aber die Codelänge meist unnötig in die Höhe treiben.
 
...Und die Ladezeit ;)

Apropo Ladzeit: (Tut mr Leid ich hör nie auf xD)
Kann ich die Include/require -Ladzeiten beschleunigen?
Weil ich die ehrlich gesagt echt imens hoch finde :-/
 
Nun, die Frage die sich mir stellt, was sind "kleine Veränderungen" und was ist "viel Code"?
Das ist alles relativ zu sehen und man sollte von Seite zu Seite, von Projekt zu Projekt nicht nur darauf achten, das es dynamisch ist, sondern das es schnell, sicher und praktisch ist.
Alles dynamisch zu machen birgt die Gefahr, das man Fehler nicht so schnell findet, Fehler leicht einbaut oder sich Sicherheitslücken einfängt.
Bei deiner Funktion automatisch alle Spalten auszulesen würde ich schonmal auf die Geschwindigkeit hinweisen. Erstmal ne SQL Verbindung aufbauen um alle Spalten auszulesen, dann die entsprechenden Befehle um das ganze in Var's zu speichern. Dann wieder ne SQL, wo du alle Spalten aufgreifst. Ein "SELECT * FROM" ist Geschwindigkeits-technisch schon ein Foul. (wenn ich das mal so sagen darf)

Ok, nun mal was konstruktives:
PHP ist eine dynamische Sprache, aber man muss es nicht übertreiben. Klassen und deren Funktionen ist für mich ein guter Anfang. Vor Monaten eine "FileSystem" Klasse geschrieben, in der ich alle sinnvollen Filefunctions abhandle und diese Klasse kann ich immer wieder anwenden und ist in der Nutzung bei einer Änderung gut zu handlen.
Natürlich muss man vor dem scripten einer solchen Sachen sich überlegen, was ist möglich und kann ich das bei einer anderen Sachen mal nutzen. Also auch wenn ich bei diesem Projekt keine Funktion brauche, die mir komplette Verzeichnisse verschiebt oder beim Löschen eines Verzeichnis auch eine rekursive Löschmöglichkeit bietet, bau ich sowas sofort mit ein..."man kann es ja mal gebrauchen" (hört sich an wie son Trödelmarkthändler).
Dann was sich gut macht sind LanguagePacks und mit Templates arbeiten. Diese machen zwar nicht die Scriptsprache oder das Programmieren mit PHP dynamischer, aber die Seite für den User.

ich habe mir letztens mal den Source eines GPL BlogHost Scriptes angeschaut. Zig includes auf Klassen und nachdem ich mir die 40. oder50. Datei angeschaut habe, die untereinander "included" werden, hab ich doch tatsächlich mal einen SQL Befehl gesehen. Das Design des Scriptes war von Java Controller abgeschaut und portiert auf PHP. Die Geschwindigkeit ist ok von dem Script, aber sollte da mal ein Fehler sein...uiuiui. Script nennt sich "plog", wenn ich mich recht entsinne. Hier ist auch ne Menge dynamisch, aber ich bin zum Beispiel von dem Script kein Freund.

Tja, ich bin etwas ratlos, was man auf die Frage noch antworten könnte. Mal andersrum gefragt, was ist dir bei PHP zu statisch?

Gruss
 
Pain-maker hat gesagt.:
...Und die Ladezeit ;)

Apropo Ladzeit: (Tut mr Leid ich hör nie auf xD)
Kann ich die Include/require -Ladzeiten beschleunigen?
Weil ich die ehrlich gesagt echt imens hoch finde :-/

Ich hab noch nie mit ner Stoppuhr das gemessen, weil das für den Menschen wohl eh zu schnell geht und die Stoppuhr sowas nicht anzeigt. Ich würde mal behaupten, das ein include bei ca 0,1s liegt, wenn ich mir das Bildlich vorstelle, ein Zugriff auf der hDD des Servers und ab in den Speicher. Kann man das beschleunigen? Oder sind deine eingebundenen Dateien mehre MB gross?

Gruss

// Edit: meinte natürlich 0,1s, habe das mal geändert
 
Zurück