Startseite
  • » Home
  • » Handbuch & FAQ
  • » Forum
  • » Übersetzungsserver
  • » Suche
Startseite › Forum › Drupalcenter.de › Module › Views ›

[gelöst] Allowed Values einer Text-Liste mit PHP generieren

Eingetragen von dasmoermel (30)
am 11.10.2011 - 15:33 Uhr in
  • Views
  • Drupal 7.x

Hallöchen!

Habe folgendes als Allowed Values PHP Code zu stehen:

<?php
$result
= db_query("SELECT field_data_field_commerce_date.`field_commerce_date_value` FROM field_data_field_commerce_date WHERE field_data_field_commerce_date.`entity_id` =8";
$items = array();
foreach (
$result as $row) {
  
$items[] = $row;
}
?>

Die SQL- Abfrage selbst funzt, aber die zu befüllende Liste wird leider nicht befüllt.
Muss zu meiner Verteidigung sagen dass ich noch nicth sonderlich viel mit PHP gearbeitet habe :(

Wäre schon wenn Ihr sachdienliche hinweise für mich hättet.

Beste Grüße, Marc

‹ Views - Pager erstellt zu viele Seiten [Gelöst]Views Slideshow JQuery Cycle implementierung ›
  • Anmelden oder Registrieren um Kommentare zu schreiben

Probier's mal damit: <?php

Eingetragen von Exterior (2903)
am 11.10.2011 - 15:56 Uhr

Probier's mal damit:

<?php
$result
= db_query("SELECT f.`field_commerce_date_value` AS valueField FROM {field_data_field_commerce_date} f WHERE f.`entity_id` =8";
$items = array();
while (
$row = db_fetch_object($result)) {
  
$items[] = $row->valueField;
}
?>

  • Anmelden oder Registrieren um Kommentare zu schreiben

Hej! Danke für deine

Eingetragen von dasmoermel (30)
am 11.10.2011 - 17:18 Uhr

Hej!

Danke für deine Antwort.
Leider funktioniert das auch nicht. :(

  • Anmelden oder Registrieren um Kommentare zu schreiben

Mit folgendem Code:<?php

Eingetragen von dasmoermel (30)
am 11.10.2011 - 19:05 Uhr

Mit folgendem Code:

<?php

$sql
= "SELECT f.`field_commerce_date_value` AS valueField FROM {field_data_field_commerce_date} f WHERE f.`entity_id` =9";
$res = db_query($sql);
$items = array();
foreach (
$res as $row) {
  
$items[] = $row->valueField;
}
return
$items;
?>

Sieht es jetzt schon mal so aus:

Also Werte sind anscheinend vorhanden, aber sie werden nicht angezeigt.
Was mache ich falsch?

AnhangGröße
screenshot.PNG 213.39 KB
  • Anmelden oder Registrieren um Kommentare zu schreiben

Hoppla, hatte D6-Syntax

Eingetragen von Exterior (2903)
am 11.10.2011 - 19:19 Uhr

Hoppla, hatte D6-Syntax geschrieben, sorry.

Lass dir doch mal $row ausgeben:

<?php

$sql
= "SELECT f.`field_commerce_date_value` AS valueField FROM {field_data_field_commerce_date} f WHERE f.`entity_id` =9";
$res = db_query($sql);
$items = array();
foreach (
$res as $row) {
  
drupal_set_message('<pre>' . print_r($row, 1) . '</pre>');
}
return
$items;
?>

Dann dürftest du sehen, was für Eigenschaften $row jeweils hat.

  • Anmelden oder Registrieren um Kommentare zu schreiben

<?php$sql = "SELECT

Eingetragen von dasmoermel (30)
am 11.10.2011 - 19:49 Uhr

<?php
$sql
= "SELECT f.`field_commerce_date_value` AS valuefield FROM {field_data_field_commerce_date} f WHERE f.`entity_id` =9";
$res = db_query($sql);
$items = array();
foreach (
$res as $row) {
  
$items[] = $row->valuefield;
}
return
$items;


?>

Jo... funzt... danke dir!
Der Fehler war, wie so oft, die Gross und Kleinschreibung ;)

Jetzt würde ich nur noch ganz gerne:
- das Datumsformat ändern
- alle Datumsangaben, die in der Vergangenheit liegen, ausfiltern
- die entity_id auf das Prodkt dynamisch auslesen

Irgendeine Idee?
In vb.NET könnte ich das, nur leider nicht in PHP :(

  • Anmelden oder Registrieren um Kommentare zu schreiben

Wie sieht denn z. B. ein

Eingetragen von Exterior (2903)
am 11.10.2011 - 20:31 Uhr

Wie sieht denn z. B. ein solcher Datums-Wert aus? Und welches Format willst du haben?

Zitat:

die entity_id auf das Prodkt dynamisch auslesen

Was genau meinst du damit?

  • Anmelden oder Registrieren um Kommentare zu schreiben

Zitat:Wie sieht denn z. B.

Eingetragen von dasmoermel (30)
am 11.10.2011 - 20:48 Uhr
Zitat:

Wie sieht denn z. B. ein solcher Datums-Wert aus? Und welches Format willst du haben?

Datumswert habe ich jetzt fast schon selbst hinbekommen, ist mySQL - Format yyyy-mm-dd hh:mm:ss und ich möchte dd.mm.yyyy - hh:mm.
Spiele da gerade ein bissel mit der Explod- Funktion rum.
Geht aber evtl. auch besser?

Zitat:

die entity_id auf das Prodkt dynamisch auslesen

Ich habe momentan ja folgenden SQL-String
SELECT f.`field_commerce_date_value` AS valuefield FROM {field_data_field_commerce_date} f WHERE f.`entity_id` =9

Die entity_id in der WHERE- Klausel ist momentan zu Testzwecken noch auf einen festen Wert gesetzt.
Gibt es eine greifbare Variable in Drupal mit der ich die Entity_ID für das gerade angesehene Produkt herausbekomme?
Also quasi für das Produkt, wo gerade die Allowed Values PHP durchlaufen wird?

  • Anmelden oder Registrieren um Kommentare zu schreiben

Zitat: Geht aber evtl. auch

Eingetragen von Exterior (2903)
am 11.10.2011 - 21:12 Uhr
Zitat:

Geht aber evtl. auch besser?

Auf jeden Fall, dafür gibt's date():

<?php
$sql
= "SELECT f.`field_commerce_date_value` AS valuefield FROM {field_data_field_commerce_date} f WHERE f.`entity_id` =9";
$res = db_query($sql);
$items = array();
foreach (
$res as $row) {
  
$datumAlt = $row->valuefield;
  
$datumNeu = date("d.m.Y H:i", strtotime($datumAlt) );
  
$items[] = $datumNeu;
}
return
$items;
?>

Zitat:

Die entity_id in der WHERE- Klausel ist momentan zu Testzwecken noch auf einen festen Wert gesetzt.
Gibt es eine greifbare Variable in Drupal mit der ich die Entity_ID für das gerade angesehene Produkt herausbekomme?
Also quasi für das Produkt, wo gerade die Allowed Values PHP durchlaufen wird?

Also dynamisch geht's auf jeden Fall. Mal angenommen, du hast eine Variable $eid, in der die ID steht, dann könnte die Abfrage so aussehen:

<?php
$sql
= "SELECT f.`field_commerce_date_value` AS valuefield FROM {field_data_field_commerce_date} f WHERE f.`entity_id` = :entityId";
$res = db_query($sql, array(':entityId' => $eid) );
?>

Aber dazu benötigst du natürlich erstmal die ID... Hast du bei den Einstellungen für die Allowed Values irgendwas stehen, welche Variablen du in PHP zur Verfügung hast?

  • Anmelden oder Registrieren um Kommentare zu schreiben

Zitat: Hast du bei den

Eingetragen von dasmoermel (30)
am 11.10.2011 - 21:25 Uhr
Zitat:

Hast du bei den Einstellungen für die Allowed Values irgendwas stehen, welche Variablen du in PHP zur Verfügung hast

Nein, leider nich.
Aber irgendwie muss da ja ein Rankommen sein.

Das mit dem Datum funktioniert bestens! Danke!

  • Anmelden oder Registrieren um Kommentare zu schreiben

Probier mal, ob das

Eingetragen von Exterior (2903)
am 11.10.2011 - 21:56 Uhr

Probier mal, ob das geht:

<?php
$sql
= "SELECT f.`field_commerce_date_value` AS valuefield FROM {field_data_field_commerce_date} f WHERE f.`entity_id` = :entityId";
$res = db_query($sql, array(':entityId' => $node->nid) );
$items = array();
foreach (
$res as $row) {
  
$datumAlt = $row->valuefield;
  
$datumNeu = date("d.m.Y H:i", strtotime($datumAlt) );
  
$items[] = $datumNeu;
}
return
$items;
?>

  • Anmelden oder Registrieren um Kommentare zu schreiben

funktioniert leider nicht

Eingetragen von dasmoermel (30)
am 11.10.2011 - 22:20 Uhr

funktioniert leider nicht :(

Es kommen folgende Fehlermeldungen:

Notice: Undefined variable: node in eval() (Zeile 2 von .../sites/all/modules/cck/cck.module(304) : eval()'d code).

Notice: Trying to get property of non-object in eval() (Zeile 2 von .../sites/all/modules/cck/cck.module(304) : eval()'d code).

  • Anmelden oder Registrieren um Kommentare zu schreiben

<?php global $nid;$sql =

Eingetragen von dasmoermel (30)
am 12.10.2011 - 01:35 Uhr

<?php

global $nid;
$sql = "SELECT f.`field_commerce_date_value` AS valuefield FROM {field_data_field_commerce_date} f WHERE f.`entity_id` = :entityid";
$res = db_query($sql, array(':entityid' => $nid) );
$items = array();
foreach (
$res as $row) {
  
$timestamp = time();
  
$datumsql = $row->valuefield;
  
$datumunix = date("U", strtotime($datumsql ) );
   If (
$datumunix > $timestamp)
   {
    
$datumger = date("d.m.Y H:i", strtotime($datumsql ) );
    
$items[] = $datumger;
   }
}
return
$items;
?>

Das ist mein jetziger Ansatz, aber irgendwie bekomme ich die NodeID einfach nicht.
Habe mir $nid schon mal ausgeben lassen, aber der Wert war leer.

Wo liegt das Problem?

  • Anmelden oder Registrieren um Kommentare zu schreiben

Wuuuuuhuuu

Eingetragen von dasmoermel (30)
am 12.10.2011 - 11:54 Uhr

Jawoll, hab es endlich!
Hier mal meine AllowedValuesPHP, falls es jemanden interessiert:

<?php
//node ID setzen und ProductID des Commerce Produktes finden
$nid = arg(1);
drupal_set_message('<pre>' . print_r($nid, 1) . '</pre>');
$sql = "SELECT t.`field_commerce_ref_product_id` AS eid FROM {field_data_field_commerce_ref} t WHERE t.`entity_id` = :nodeid";
$res = db_query($sql, array(':nodeid' => $nid) );
foreach (
$res as $row)
  {
  
$pid = $row->eid;
  
drupal_set_message('<pre>' . print_r($pid, 1) . '</pre>');
  }
// Auslesen des Datumsfeldes
$sql = "SELECT f.`field_commerce_date_value` AS valuefield  FROM {field_data_field_commerce_date} f WHERE f.`entity_id`= :productid";
$res = db_query($sql, array(':productid' => $pid) );

//Tabelle durchlaufen
$items = array();
foreach (
$res as $row)
  {
 
drupal_set_message('<pre>' . print_r($row->valuefield, 1) . '</pre>');
 
//Aktuelles Datum/Zeit ermitteln
 
$timestamp = time();
 
$datumsql = $row->valuefield;
 
// Ausgelesenes Datum auf UNIX- Timestamp setzen
 
$datumunix = date("U", strtotime($datumsql ) );
 
// Alle bereits vergangenen Daten ausfiltern
 
If ($datumunix > $timestamp)
  {
   
// Datumsformat auf deutsches Format
   
$datumger = date("d.m.Y H:i", strtotime($datumsql ) );
   
// Array befüllen
   
$items[] = $datumger;
  }
}
return
$items;
?>

Vielen Dank nochmal an dich, Exterior!
Hast mir echt weitergeholfen!

  • Anmelden oder Registrieren um Kommentare zu schreiben

Super :) Dann editiere doch

Eingetragen von Exterior (2903)
am 12.10.2011 - 12:30 Uhr

Super :)

Dann editiere doch bitte noch deinen ersten Beitrag oben und schreibe "[gelöst]" vor den Titel.

  • Anmelden oder Registrieren um Kommentare zu schreiben

Benutzeranmeldung

  • Registrieren
  • Neues Passwort anfordern

Aktive Forenthemen

  • Rolle erstellen nicht zu finden
  • Medien und andere Daten mit Feeds von Drupal 7 auf Drupal 10 migrieren
  • für drupal11 ein Slider Modul
  • [gelöst] W3CSS Paragraphs Views
  • Drupal 11 neu aufsetzen und Bereiche aus 10 importieren
  • Wie erlaubt man neuen Benutzern auf die Resetseite zugreifen zu dürfen.
  • [gelöst] Anzeigeformat Text mit Bild in einem Artikel, Drupal 11
  • Social Media Buttons um Insteragram erweitern
  • Nach Installation der neuesten D10-Version kein Zugriff auf Website
  • Composer nach Umzug
  • [gelöst] Taxonomie Begriffe zeigt nicht alle Nodes an
  • Drupal 11 + Experience Builder (Canvas) + Layout Builder
Weiter

Neue Kommentare

  • Rollen
    vor 19 Stunden 31 Minuten
  • Inzwischen sind wir bei
    vor 1 Woche 4 Tagen
  • Migrieren von D7 auf D8/ D10/ D11
    vor 1 Woche 5 Tagen
  • melde mich mal wieder, da ich
    vor 9 Wochen 2 Tagen
  • Hey danke
    vor 9 Wochen 3 Tagen
  • Update: jetzt gibt's ein
    vor 9 Wochen 3 Tagen
  • Hallo, im Prinzip habe ich
    vor 10 Wochen 1 Tag
  • Da scheint die Terminologie
    vor 10 Wochen 1 Tag
  • Kannst doch auch alles direkt
    vor 10 Wochen 5 Tagen
  • In der entsprechenden View
    vor 10 Wochen 5 Tagen

Statistik

Beiträge im Forum: 250237
Registrierte User: 20464

Neue User:

  • ocvk2810
  • marouane.blel
  • capilclinic

» Alle User anzeigen

User nach Punkten sortiert:
wla9461
stBorchert6003
quiptime4972
Tobias Bähr4019
bv3924
ronald3857
md3717
Thoor3678
Alexander Langer3416
Exterior2903
» User nach Punkten
Zur Zeit sind 0 User und 31 Gäste online.

Hauptmenü

  • » Home
  • » Handbuch & FAQ
  • » Forum
  • » Übersetzungsserver
  • » Suche

Quicklinks I

  • Infos
  • Drupal Showcase
  • Installation
  • Update
  • Forum
  • Team
  • Verhaltensregeln

Quicklinks II

  • Drupal Jobs
  • FAQ
  • Drupal-Kochbuch
  • Best Practice - Drupal Sites - Guidelines
  • Drupal How To's

Quicklinks III

  • Tipps & Tricks
  • Drupal Theme System
  • Theme Handbuch
  • Leitfaden zur Entwicklung von Modulen

RSS & Twitter

  • Drupal Planet deutsch
  • RSS Feed News
  • RSS Feed Planet
  • Twitter Drupalcenter
Drupalcenter Team | Impressum & Datenschutz | Kontakt
Angetrieben von Drupal | Drupal is a registered trademark of Dries Buytaert.
Drupal Initiative - Drupal Association