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

  • gepatchte PHP Version 7.4 für Windows
  • Canvas Palette: Eine fertige Komponentenbibliothek für Drupal Canvas
  • Hilfe zu Updates oder Composer
  • Vergleich Drupal und Contao
  • [geloest] Blocks in Bootstrap nebeneinander darstellen und nicht untereinander
  • DrupalCamp Frankfurt 27-28 November 2026
  • Bitte mein Bentzerkonto löschen
  • Beim Aufruf einiger Inhalte erhalte ich folgende Fehlermeldung
  • Neuinstallation: vermutlich ein rewrite-Problem
  • Drupal CMS installieren
  • [erledigt]MP3 in Drupal 10 einbinden
  • (gelöst)Drupal 11 installieren
Weiter

Neue Kommentare

  • Muss ja nicht genau php 8.3 sein
    vor 5 Tagen 15 Stunden
  • Guten morgen und Danke
    vor 5 Tagen 21 Stunden
  • Evtl. versuchen auf PHP 8 zu wechseln
    vor 6 Tagen 4 Stunden
  • Danke Schmittrich. Die Frage
    vor 1 Woche 19 Stunden
  • Keine Antwort auf die Frage nach dem Woher
    vor 1 Woche 22 Stunden
  • Danke ich werde mir die
    vor 6 Wochen 5 Tagen
  • Vielen Dank für Ihren
    vor 7 Wochen 1 Tag
  • Composer ist sehr ratsam
    vor 7 Wochen 3 Tagen
  • Vielen Dank für den
    vor 7 Wochen 5 Tagen
  • Die alten CMS Vergleiche von contentmanager.de
    vor 7 Wochen 6 Tagen

Statistik

Beiträge im Forum: 250323
Registrierte User: 20572

Neue User:

  • alxshell
  • AnthonyhoF
  • Philiphelve

» Alle User anzeigen

User nach Punkten sortiert:
wla9466
stBorchert6003
quiptime4972
Tobias Bähr4019
bv3924
ronald3857
md3717
Thoor3678
Alexander Langer3416
Exterior2903
» User nach Punkten
Zur Zeit sind 0 User und 5 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