Zuerst Variable deklarieren und später berechnen?
Obelix
- php
0 Fabian Transchel0 TomIRL0 benji0 Thomas Luethi0 Tom
0 Tom0 Florian Auer0 Tom
Tach,
Ich möchte ziemlich am Anfang meiner DB eine Variable deklarieren.
Also Beispiel:
print $text;
Dieses $text wird durch eine ziemlich aufwändige MySQL Abfrage aber erst später gefüllt.
In diesem Fall ist es UNMÖGLICH diese Datenbankabfragen auch ganz oben durchzuführen.
Ist sowas also überhaupt realisierbar?
Gruß Obelix
Hallo,
Ich möchte ziemlich am Anfang meiner DB eine Variable deklarieren.
Also Beispiel:print $text;
Das ist keine Variablendeklaration, sondern ein Funktionsaufruf.
Dieses $text wird durch eine ziemlich aufwändige MySQL Abfrage aber erst später gefüllt.
In diesem Fall ist es UNMÖGLICH diese Datenbankabfragen auch ganz oben durchzuführen.
Ist sowas also überhaupt realisierbar?
Ja. Gib $text erst ganz unten aus.
Grüße aus Barsinghausen,
Fabian
Tach,
Ich möchte ziemlich am Anfang meiner DB eine Variable deklarieren.
Also Beispiel:
Also was willst Du deklarieren eine Variable?
Oder vielleicht initialisieren?
Und was willst Du damit erreichen?
TomIRL
Hallo Obelix (und asterix ?) !
Ich möchte ziemlich am Anfang meiner DB eine Variable deklarieren.
ehmm, "db" bedeutet für mich Datenbank. Und in der deklarierst du bestimmt keine
Variable.
aber ok, ich denke, ich weiß was du meinst ...
print $text;
Dieses $text wird durch eine ziemlich aufwändige MySQL Abfrage aber erst später gefüllt.
In diesem Fall ist es UNMÖGLICH diese Datenbankabfragen auch ganz oben durchzuführen.
Ist sowas also überhaupt realisierbar?
schon mal was von "Funktionen zur Ausgabesteuerung" gehört ? Suche mal in deinem PHP-Manual danach, und du wirst bestimmt fündig (stichwort "flush") !
benji
Hallo,
schon mal was von "Funktionen zur Ausgabesteuerung" gehört ? Suche mal in deinem PHP-Manual danach, und du wirst bestimmt fündig (stichwort "flush") !
Genau.
http://www.php.net/manual/de/ref.outcontrol.php
Mit ob_start() kann man die Ausgabe "zurueckhalten" (puffern).
Dann kann man schon alles moegliche vorbereiten, auch mit print/echo.
Wenn es dann "erlaubt" ist, kann man mit ob_end_flush() den
Inhalt des Puffers ausgeben.
Das schiesst aber wahrscheinlich uebers Ziel von Obelix hinaus...
Ein "Deklarieren" ist bei PHP nicht notwendig, und wenn schon,
nimmt man dazu nicht print, sondern man uebergibt der Variablen
einfach einen Wert des gewuenschten Typs, und/oder man verwendet
settype():
http://www.php.net/manual/de/function.settype.php
Gruesse,
Thomas
Hallo zusammen,
ich habe noch ein bisschen gespielt, um klar zu machen, wo da die fallen stecken können:
--------------------------------------
<?php ####settype.php####
echo "Datentyp einer neuen Variable wird festgelegt:<br />";
$feld=""; # $feld muss vorher vorhanden sein
settype($feld,"array"); # sonst Fehlermeldung
echo "$feld wurde als ".gettype($feld)." festgelegt.<br />";
$text = "Datentyp TEXT";
echo "$text wurde mit '$text' initialisiert und <br />".
"hat jeztzt den Datentyp '".gettype($text)."'.<br />";
echo "$text erhät jetzt den Datentyp 'string'.<br />";
settype($text,"string");
echo "$text hat jetzt den Datentyp '".gettype($text)."'.<br />";
echo "$text hat den Wert:'$text'.<br />";
echo "$text erhät jetzt den Datentyp 'array'.<br />";
settype($text,"array");
echo "$text hat den Wert:'$text'.<br />";
echo "<pre>";
print_r($text); # siehe da, Inhalt bleibt erhalten, Au backe!
echo "</pre>";
?>
----------------------------------------------------
Man sollte also die gewünschte Variable besser mit dem "neutralen Element" des jeweils gewünschten Datentyps initialisieren. Dann weiß man, welchen Wert sie hat. Nicht, dass nachher in einem Array (letzter Teilversuch) noch der alte String drinsteht...
Grüße
Tom
Hallo Obelix,
PHP verwendet implizite Deklaration von Variablen.
Allerdings habe ich immer wieder Fälle erlebt über die Versionen, wo es sinnvoller war, die Deklaration explizit durchzuführen, damit alles richtig funktioniert.
Einzelheiten bei Bedarf...
Wenn Du sicher gehen willst, dass $text als String zur verfügung steht, dann weise der Variablen einfach einen Leerstring zu
$text = "";
Damit ist die Scriptvariable als String angelegt.
Wenn Du jetzt
echo gettype($text);
schreibst, wird Dir "String" zurückgegeben.
Besonders bei komplexen Arrays sollte man vor der Benutzung
$multi = array();
diese "Initialisierung" durchführen.
Grüße
Tom
Hi,
so wie ich das verstanden habe, möchtest du eine Variable ausgeben, sie aber erst hinterher füllen. Ist ziemlich unlogisch. Wenn die Variable zum Zeitpunkt der Ausgabe leer ist, dann wird auch die Ausgabe leer sein. Die einzige Möglichkeit, die du hast, ist, die Variable vor der Ausgabe zu füllen.
Wenn das tatsächlich nicht klappet, wie du geschrieben hast, dann poste einfach das Problem hier. Geht nicht, gibt's zumindest in PHP nicht.
Grüße,
Florian Auer
Hallo,
mir dämmert da was. Sei bitte nicht böse, wenn ich daneben tippe.
Könnte es vielleicht sein, dass der Begriff der Funktion noch nicht ganz klar ist?
Ich bestimme in meinem Hauptprogramm zwar, dass an dieser Stelle eine Ausgabe stattfinden wird, was aber ausgegeben werden soll, wird erst bestimmt, wenn das Programm später läuft.
Ist es das, was Du suchst?
Grüße
Tom