PHP Variablen auslesen
Eingetragen von kloewer@drupal.org (79)
am 26.07.2007 - 10:51 Uhr in
am 26.07.2007 - 10:51 Uhr in
Wie kann ich den die Variablen von Feldern auslesen und per PHP wiedergeben?
Habe einen neuen Inhaltstypen ertsellt und dem neue Felder zugeordnet wie Adresse, Strasse, Land.
Jetzt möchte ich diese gerne per PHP abfragen:
<?php
echo "Du wohnst in der $Adresse, $Strasse, $Land";
?>
Oder besser noch:
<?php
echo "<a href=http://www.googlemap.com/adresse=$Strasse+$Land> KLICK </a>";
?>
Wie aber komme ich an diese Variablen?
- Anmelden oder Registrieren um Kommentare zu schreiben
Wo willst Du das anzeigen
am 26.07.2007 - 11:18 Uhr
Wo willst Du das anzeigen lassen?
--
sanduhrs - drupalcenter
--------------------------------
Stefan Auditor
http://erdfisch.de
--
sanduhrs · Stefan Auditor · Drupalcenter
http://drupal.org/user/28074 · http://association.drupal.org/user/646
<?php
am 26.07.2007 - 15:06 Uhr
<?php
node_load($nid);
$node->adresse;
//usw
?>
denke mal das geht
Mein Blog: www.exper-tec.de
Deutscher IRC-Channel: irc.freenode.net #drupal.de je mehr desto besser
... Jabber-me: dereine@jabber.ccc.de Warum Jabber?
Hmm, irgendwie nicht...
am 28.07.2007 - 09:40 Uhr
Klappt irgendwie nicht so recht...
Habe einen Inhaltstyp, und da gibt es ein feld mit dem Wert field_strasse
Jetzt habe ich einen neuen Block angelegt und dem dem einen PHP Code in den Body geschrieben
<?php
echo "Hallo Welt!";
?>
Klappt auch wunderbar:
Wenn ich allerdings:
<?php
$node_load($nid);
print $node->field_strasse;
?>
Schreibe bleibt die Seite weiß
bei
<?php
print $node->field_strasse;
?>
Sieht man nichts vom Block...
Was mach ich falsch?
Irgend eine Idee?
am 28.07.2007 - 10:45 Uhr
Hat irgendjemand ne Idee wo ich da nachschauen kann?
So vielleicht?
am 28.07.2007 - 11:57 Uhr
Hallo,
versuch's mal so:
print $node->field_strasse[0]['value'];
Gruß,
Boris
$nid
am 28.07.2007 - 13:13 Uhr
<?php
$node_load($nid);
print $node->field_strasse;
?>
So geht das auch nicht, da $nid NULL ist. Musst du dir erst über arg(1) holen. Um rauszufinden wie du auf die einzelnen Felder im zurückgelierfertem Array zugreifst probier mal:
<?php
var_dump($node)
?>
Im Quellcode der Seite ist die Ausgabe schön übersichtlich formatiert.
vg
--
md - DrupalCenter
mdwp* :: Drupal Services
vg
md - DrupalCenter.de
mdwp* Drupal Consulting & Services
Stimmt
am 28.07.2007 - 14:06 Uhr
Meinolf hat natürlich recht, in Blöcken steht $nid nicht zur Verfügung, bzw. nur als Zufallswert. Hatte ich übersehen.
Ansonsten zur Erklärung des oben genannten Print Befehls:
CCK erweitert das Objekt $node grundsätzlich mit mehrdimensionalen Arrays, zum einen weil ein Feld ja mehrere Werte haben könnte (deshalb $field_strasse[0]), und zum anderen um zwei unterschiedliche Repräsentationen des Feldinhalts bereitzustellen, nämlich "pur" und ggf. HTML-formatiert (wäre hier $field_strasse[0]['value'] bzw. $field_strasse[0]['view']).
Mit dem oben erwähnten var_dump kann man das schön sehen.
Gruß,
Boris
Workaround
am 28.07.2007 - 15:54 Uhr
Habs jetzt so gelöst das ich in der node.tpl.php die variablen abfrage und als Konstanten speichere, dei danach auch in den Blöcken zur Verfügungh stehen:
<?php
$strasse = $node->field_strasse[0]['view'];
define('STRASSE', $strasse);
?>
in den Blöcken sowie sonst auf der seite stehen sie dann über
<?php
echo STRASSE;
?>
zur Verfügung
Mehr dazu:
am 28.07.2007 - 16:24 Uhr
http://www.drupalcenter.de/node/4365
Sicher ?
am 28.07.2007 - 18:51 Uhr
Bist Du sicher, dass diese Methode Multi-User-fähig ist? Was passiert wenn zwei User gleichzeitig die Information abrufen? Ich würde da eher mit Session-Variablen arbeiten:
$_SESSION['STRASSE'] = $node->field_strasse[0]['view'];
bzw.
echo $_SESSION['STRASSE'];
Gruß,
Boris
Konstante
am 28.07.2007 - 19:21 Uhr
Ich glaub auch nicht, dass das so sinnvoll ist. Habs aber noch nicht ausprobiert. Eigentlich ist der Wert einer Konstanten unveränderlich. Vielleicht geht es ja auch mit global $strasse.
Ausserdem würd das auch mit einer View (output = block) gehen.
vg
--
md - DrupalCenter
mdwp* :: Drupal Services
vg
md - DrupalCenter.de
mdwp* Drupal Consulting & Services
Globale Variablen
am 28.07.2007 - 22:23 Uhr
Hallo,
globale Variablen gelten meines Wissens auch systemweit (für alle User), d.h. auch hier würden sie sich gegenseitig die Inhalte überschreiben...
Und was die Konstantenn angeht, laut PHP-Handbuch lassen sie sich nach der Definition weder ändern noch löschen.
Gruß,
Boris
global $user
am 28.07.2007 - 23:01 Uhr
Hallo,
globale Variablen gelten meines Wissens auch systemweit (für alle User), d.h. auch hier würden sie sich gegenseitig die Inhalte überschreiben...
Gruß,
Boris
Das denke ich nicht. Nehm als Beispiel global $user. Die Variable liefert mir immer das User Objekt des gerade eingelogten Besuchers einer Site.
Was die Konstanten betrifft bestätigst du meine Meinung.
vg
--
md - DrupalCenter
mdwp* :: Drupal Services
vg
md - DrupalCenter.de
mdwp* Drupal Consulting & Services
Es war spät :-)
am 29.07.2007 - 11:06 Uhr
Du hast natürlich recht, ich war gedanklich ganz woanders, nämlich bei den Drupal-eigenen Variablen, die man mit variable_set und variable_get ansprechen kann. DIE gelten systemweit. Die GLOBAL Variablen tun das nicht.
Keine Kommentare nach 23 Uhr...
Gruß,
Boris
Was immer und ueberall
am 01.08.2007 - 13:17 Uhr
Was immer und ueberall funktioniert (egal ob in einem Block, in irgend einem Template wie z.B. page.tpl.php oder auch in template.php) ist die folgende Methode:
<?php
if (arg(0) == 'node' && is_numeric(arg(1))) { // Fuehrt den folgenden Code nur aus, wenn wir uns auf einer node-Seite befinden
$node = node_load(arg(1)); // Laedt die momentan betrachtete Node.
print_r($node); // Gibt dir eine Uebersicht ueber alle zur Verfuegung stehenden Eigenschaften des $node-Objektes.
// Einzelne Variablen koennen jetzt mit
// print $node->foo;
// ausgegeben werden.
}
?>