CMS_VALUE auf Existenz prüfen

Gesperrt
Tom Quenten
Beiträge: 125
Registriert: Do 10. Jun 2004, 13:55
Wohnort: Gallinchen
Kontaktdaten:

CMS_VALUE auf Existenz prüfen

Beitrag von Tom Quenten »

Hallo,

da ich seit einiger Zeit PHP 5.3.x einsetze und das error_reporting auf E_ALL gesetzt habe um alle Meldungen mal zu sehen und auszubesser bin ich jetzt auch an meinen Contenido Modulen dran. Ich habe Fehlermeldungen wie

Code: Alles auswählen

Notice: Undefined variable: C570 in 
die ich bereits gefunden haben aber nicht ausbessern kann. Ich finde einfach keine Lösung. Es handelt sich um CMS_VALUE Werte die vom Input Bereich des Moduls übergeben werden. Lt. PHP ist die Variable nicht definiert. Zur Veranschaulichung mal der Input Bereich

Code: Alles auswählen

/************************************************************
* CONTENIDO MODUL - INPUT
*
* Modulname : vvl customer data update (new systems)
* Variablen : 100 - 199
* Author    : Andre Domaschke
* Copyright : Andre Domaschke / bigsystems.de
* Created   : 2008-04-12
* Modified  : 
************************************************************/

echo "<table cellspacing=\"0\" cellpadding=\"0\" border=\"0\">";

echo "<tr>";
echo "<td width=\"230\"><b>Modul aktiviert?</b></td>";
echo "<td width=\"300\"><input type=\"checkbox\" name=\"CMS_VAR[100]\" value=\"1\""; if("CMS_VALUE[100]" == 1){echo "checked=checked"; }; echo "></td>";
echo "</tr>";

echo "</table>";
Eigentlich ganz simpel. Ich habe mehrere Module auf eine Template platziert, die ich bei den unterschiedlichen Seiten einfach ein und ausschalten kann. Nun muss ich im Output Bereich prüfen ob die Variable CMS_VALUE[100] gesetzt wurde. Das habe ich mit verschiedenen Möglichkeiten bereits getestet. Ist diese gesetzt, wird das Modul geladen, sonst nicht.

Code: Alles auswählen

if(!empty(CMS_VALUE[100]) && (CMS_VALUE[100] !==0))

Code: Alles auswählen

if(!empty("CMS_VALUE[100]") && ("CMS_VALUE[100]" !==0))

Code: Alles auswählen

if(!empty("CMS_VALUE[100]") && (("CMS_VALUE[100]") !==0))

Code: Alles auswählen

if(isset(CMS_VALUE[100]))

Code: Alles auswählen

if(isset("CMS_VALUE[100]"))
ALLES schlug fehl. Teilweise sagt mir das Backend in der Parse Prüfung es sei okay, im Frontend bekomme ich trotzdem ein Parse Error. Die Variable kann ich durchaus mit einem

Code: Alles auswählen

echo "CMS_VALUE[100]";
ausgeben, das funktioniert, nur mit dem prüfen.....da geht gar nichts. Wie verflixt nochmal lassen sich CMS_VALUE Variablen prüfen. Dieses Problem macht mir schon seit Jahren Kopfzerbrechen, habe dies aber bisher mit einem niedrigeren error_reporting einfach unterdrückt. Nun will ich endlich mal perfekten Code produzieren.

Hat Contenido sogar eigene Funktionen dafür???



Danke + Gruss
Tom Quenten
Wer fragt, ist ein Narr für fünf Minuten.
Wer nicht fragt, bleibt es für immer.

Handy doof? Tarif doof? Rechnung zu hoch?
Unter www.cottbushandy.de wird dir sicher geholfen!
OliverL
Beiträge: 870
Registriert: Do 28. Jun 2007, 09:28
Kontaktdaten:

Re: CMS_VALUE auf Existenz prüfen

Beitrag von OliverL »

Hi,

du solltest erst mal das hier im Wiki zur behandlung von "CMS_VALUE[x]" lesen:
http://www.contenido-wiki.org/wiki/inde ... grammierer
Daraus resultiert das die ID von CMS_VALUE ein Key eines Array ist. Der Array-Name beinhaltet die ID des Containers.

Hier mal ein Code der das Problem von CMS_VALUE-ID 0 bis 100 lösen sollte.
Jedoch sind Notes nicht relevant für PHP.

Code: Alles auswählen

<?php
$cc = $cCurrentContainer;
if( !is_array(${ "C".$cc."CMS_VALUE" }) )    ${ "C".$cc."CMS_VALUE" } = array();
for($i=0;$i<=100;$i++){    if(!array_key_exists($i,${ "C".$cc."CMS_VALUE" }))    ${ "C".$cc."CMS_VALUE" }[$i] = '';    }
?>
mfg OliverL
Tom Quenten
Beiträge: 125
Registriert: Do 10. Jun 2004, 13:55
Wohnort: Gallinchen
Kontaktdaten:

Re: CMS_VALUE auf Existenz prüfen

Beitrag von Tom Quenten »

Hallo OliverL,

vielen Dank für die Info. Das Wiki dazu hatte ich bereits gelesen gehabt, jedoch noch nicht ganz verstanden. Ich werde es mir nun noch mal durchlesen. Dann werde ich mal ein wenig experimentieren.

Das die Notice von PHP nicht relevant sind, ist mir klar, aber wie es mit Perfektionisten nun mal so ist.....ich will gern einen perfekten Code produzieren.

Deine Info brachte mich nun schon ein Stück weiter.

Gruss
Tom Quenten
Wer fragt, ist ein Narr für fünf Minuten.
Wer nicht fragt, bleibt es für immer.

Handy doof? Tarif doof? Rechnung zu hoch?
Unter www.cottbushandy.de wird dir sicher geholfen!
Gesperrt