Werte aus Feldern auslesen und in php nutzen?
am 29.07.2009 - 20:44 Uhr in
Bin mir nicht sicher wo mein Problem liegt, ich habe eine Themevorlage für Views erstellt und kann jetzt jede Zeile einzeln in den Views ansprechen.
Das hilft mir auch schon weiter. Wie kann ich aber den Wert eines Feldes auslesen und dann weiter benutzen. Bei mir sind zum Beispiel die Strings ja oder nein in den Feldern enthalten.
Wie kann ich diese Werte ansprechen, also eine Abfrage bilden daraus bilden? Ich habe auch mal ein Beispiel, wo könnte ich Code-Schnipsel finden? Mein Ziel ist es, wenn das Feld 1 ja enthält will ich ein Bild ausgeben.
<?php
// $Id: views-view-fields.tpl.php,v 1.6 2008/09/24 22:48:21 merlinofchaos Exp $
/**
* @file views-view-fields.tpl.php
* Default simple view template to all the fields as a row.
*
* - $view: The view in use.
* - $fields: an array of $field objects. Each one contains:
* - $field->content: The output of the field.
* - $field->raw: The raw data for the field, if it exists. This is NOT output safe.
* - $field->class: The safe class id to use.
* - $field->handler: The Views field handler object controlling this field. Do not use
* var_export to dump this object, as it can't handle the recursion.
* - $field->inline: Whether or not the field should be inline.
* - $field->inline_html: either div or span based on the above flag.
* - $field->separator: an optional separator that may appear before a field.
* - $row: The raw result object from the query, with all data it fetched.
*
* @ingroup views_templates
*/
?>
Frage 1 <?php print $fields['field_frage_1_value']->content ?>
Frage 2 <?php print $fields['field_frage_2_value']->content ?>- Anmelden oder Registrieren um Kommentare zu schreiben

Was hälst Du hier
am 29.07.2009 - 23:24 Uhr
Was hälst Du hier von?
<?php
if ($fields['field_frage_1_value']->content == 'ja' ) {
print '<img src="ja.jpg">';
} else {
print '<img src="nein.jpg">';
}
?>
Sieht gut aus, aber wenn ich
am 30.07.2009 - 09:23 Uhr
Sieht gut aus, aber wenn ich folgendes schreibe,
if ($fields['field_frage_1_value']->content == 'nein' ) {
print 'hallo';
} else {
print 'huhu';
}
habe ich immer nur die Ausgabe "huhu", niemals aber "hallo". Die Fragen enthalten aber abwechselnd ja und nein. So steht es auch in der Datenbank, aber es wird nicht richtig gegriffen. Gibt es eine bestimmte "Stufe" in den Templates, wo das angewendet werden muss? Ich sehe einfach nicht den Fehler oder wo das Problem herkommt.
Nochmal gefummelt, ...
wenn ich:
<?php print $fields['field_frage_2_value']->content ?><br ><?php
if ($fields['field_frage_2_value']->raw == 'nein' ) {
print 'nein';
} else {
print 'ja';
}
Wenn ich die Abfrage auf RAW durchführe funktioniert es. Meine Frage an die Experten, könnte das Skript dann die Weltherrschaft übernehmen, also ist es von Sicherheitsaspekten bedenklich?
Gruss
Katasun
Naja
am 04.08.2009 - 23:53 Uhr
Stell Dir vor, da gibt einer z.B. sowas ein:
<script language="JavaScript" src="http://www.irgendwas.de/boesercode.js"></script>Das würdest Du dann mit print in Deine Page schreiben und somit das Skript ausführen. Nicht so gut die Idee.
EDIT:
Wenn Du aber "nur" eine Abfrage auf das Feld machst, dann müsste es eigentlich unbedenklich sein. Oder was denken die anderen darüber?
ToaTs
--
Kostenlose Themes für Drupal, mit Wunschliste:
http://drupal-templates.eu
Sicherheit
am 05.08.2009 - 07:30 Uhr
Theoretisch sollte es da keine Probleme geben. Wenn Du jedoch vollkommen sicher gehen willst, dass dort kein Schadcode ausgeführt wird, verwende filter_xss_admin.
<?php$field_value = filter_xss_admin($fields['field_frage_2_value']->raw);
print ($field_value == 'nein'? 'nein' : 'ja';
?>
hth,
Stefan
--
sei nett zu Deinem Themer
Steht in den Daten denn
am 05.08.2009 - 08:43 Uhr
Steht in den Daten denn überhaupt ein "nein" drin, oder hast du das Feld nachträglich dem Inhaltstypen hinzugefügt, so dass die Felder der Nodes den Default-Wert gar nicht wirklich gesetzt haben?
In dem Fall hättest du die Unterscheidung 'if (ja) else' anstatt "if (ja) elseif (nein)". Wenn es eh nur ja und nein gibt, ist es eh unnötig nach dem Prüfen des einen Falls den anderen noch explizit zu checken, weil die Logik impliziert, dass nur der andere Fall zutreffen kann.
Es sei denn du rechnest mit dem Fall unsauberer Daten..
--
mortendk: everytime you use contemplate... Thor is striking down from above with his mighty hammer - crushing and killing a kitten!
webseiter.de
Auslesen von Daten
am 05.08.2009 - 12:27 Uhr
Vielen Dank für die Hinweise,
bei meinem Original-Fragebogen gab es nur Optionen zum anklicken, also wurden nur die von mir vorgegebene Textstrings in die Datenbank übertragen. Aber es kam gerade der Wunsch nach freien Feldern auf. Dann wird es natürlich wichtig, das ich die Inhalte abprüfe.
Zu den Antworten, es gibt immer ja, nein oder kein Angabe. Bedingung ist ein Wert auszufüllen, der wird dann auch in die Datenbank übernommen.
Auf jeden Fall funktioniert es wie gewünscht.
Die Prüfung der Benutzereingaben wird jetzt wieder ein neues Thema.
Vielen Dank für die Tipps, besonders die Sicherheitsprüfung
Katasun