Dateiverwaltung - Beschreibung wird nicht mehr leer

Gesperrt
derSteffen
Beiträge: 847
Registriert: Mi 14. Dez 2005, 16:15
Wohnort: Königs Wusterhausen bei Berlin
Kontaktdaten:

Dateiverwaltung - Beschreibung wird nicht mehr leer

Beitrag von derSteffen » Mo 25. Nov 2013, 08:54

Hallo liebe Gemeinde,

mit einem Bildergalerie-Modul (http://forum.contenido.org/viewtopic.php?f=60&t=32388) rufe ich die Beschreibung und den Medienname ab und lasse diesen Ausgeben. Wenn keiner hinterlegt ist, soll er entweder die Artikelüberschrift nehmen oder den Text eines bestimmten Text_HTML-Modules.
Das klappt auch alles ganz gut! Gebe ich eine Beschreibung und Medienname ein, wird dieser ausgegeben, ist nichts hinterlegt erscheint die Artiekl-Überschrift.

ABER: Wenn ich eine Beschreibung und Medienname in der Dateiverwaltung eingebe und speichere und diese dann wieder irgendwann herauslösche, wird mir gar nichts angezeigt, weil wahrscheinlich dooch nor irgendwas dann in diesen Felder gespeichert ist.

Deswegen meine Frage, was wird denn hinterlegt, wenn ich in einer Dateiverwaltung in der Beschreibung/Medienname etwas wier leer lösche? Ich habe es mit folgenden Sachen probiert aber das greift alles nicht, z.B.:

if ($fd == "")
if ($fd == " ")
if ($fd == " ")
if ($fd != "")

-> Es greift nur !="" also muss da ja irgendwas drin sein!

Das ist der Code meiner SQL-Abfrage für Medienname und Beschreibung.

Code: Alles auswählen

$sql = mysql_fetch_array(mysql_query("SELECT u.dirname FROM con_content AS c
LEFT JOIN con_upl AS u
ON u.idupl = c.value
WHERE c.idartlang = '". $idartlang ."'
AND c.idtype = 4 AND c.typeid = 137
")); 
$alle = mysql_query("SELECT * FROM con_upl WHERE dirname = '". $sql["dirname"] ."' ORDER BY filename"); 
// $alle = mysql_query("SELECT * FROM con_upl WHERE dirname = '". $sql["dirname"] ."' ORDER BY RAND()"); 
$z = 1; 
while($row = mysql_fetch_array($alle)){
// File-Description
$fd = mysql_fetch_array(mysql_query("SELECT description FROM con_upl_meta WHERE idupl = '". $row["idupl"] ."' LIMIT 0,1"));
// Medianame
$fm = mysql_fetch_array(mysql_query("SELECT medianame FROM con_upl_meta WHERE idupl = '". $row["idupl"] ."' LIMIT 0,1")); 
Vielen Dank für Eure Hinweise.

MfG Steffen

xmurrix
Beiträge: 3143
Registriert: Do 21. Okt 2004, 11:08
Wohnort: Augsburg
Kontaktdaten:

Re: Dateiverwaltung - Beschreibung wird nicht mehr leer

Beitrag von xmurrix » Mo 25. Nov 2013, 12:56

Hallo Steffen,

die Variable $fd hat bekommt immer eine Liste, die Liste kann leer sein oder es kann Einträge enthalten.

Hast du zur einer Datei noch keine Beschreibung angegeben, so gibt es keinen Eintrag in der con_upl_meta. Folgende Codezeile liefert dann eine leere Liste zurück:

Code: Alles auswählen

$fd = mysql_fetch_array(mysql_query("SELECT description FROM con_upl_meta WHERE idupl = '". $row["idupl"] ."' LIMIT 0,1"));

Code: Alles auswählen

Leere Liste: array();
Gibst du da was an, dann wird auch ein Eintrag in der Tabelle con_upl_meta gemacht und der Code von oben liefert eine Liste mit Einträgen zurück.

Code: Alles auswählen

Keine leere Liste: array(
  0 => 'Foobar',
  'description' => 'Foobar'
);
Ist der Wert in der Spalte 'description' leer, so bekommt du dennoch eine Liste die Einträge hat, auch wenn diese leer sind, ist die Liste nicht leer!

Code: Alles auswählen

Keine leere Liste: array(
  0 => '',
  'description' => ''
);
Die Bedingung

Code: Alles auswählen

if ($fd == "")
wird als false interpretiert, auch eine leere Liste, was bei deinem Code der Wert ist den $fd bekommt, wird als false interpretiert.
Es is besser, wenn du mit

Code: Alles auswählen

if (empty($fd))
arbeitest.

Gruß
xmurrix
CONTENIDO Downloads: CONTENIDO 4.10.1
CONTENIDO Links: Dokumentationsportal, FAQ, API-Dokumentation
CONTENIDO @ Github: CONTENIDO 4.10 - Mit einem Entwicklungszweig (develop-branch), das viele Verbesserungen/Optimierungen erhalten hat und auf Stabilität und Kompatibilität mit PHP 8.0 bis 8.2 getrimmt wurde.

Faar
Beiträge: 1915
Registriert: Sa 8. Sep 2007, 16:23
Wohnort: Brandenburg
Kontaktdaten:

Re: Dateiverwaltung - Beschreibung wird nicht mehr leer

Beitrag von Faar » Mo 25. Nov 2013, 13:26

Das ist eigentlich Standard beim Programmieren, sofern man weiß, dass eine Variable ein Array ist.
Im Zweifel macht man immer

Code: Alles auswählen

if(empty($fd) || $fd='')...
Aber Contenido hatte da doch mal Vereinbarungen für Variablennamen, so dass ein Array z.B. $aFd heißen würde und ein Integer $iFd und ein String dann $sFd.
Da weiß man, was man hat.
Kann man diese Vorgaben für Contenido Codes irgendwo nachlesen?
Fliegt der Bauer übers Dach, ist der Wind weißgott nicht schwach.

Oldperl
Beiträge: 4250
Registriert: Do 30. Jun 2005, 22:56
Wohnort: Eltmann, Unterfranken, Bayern
Kontaktdaten:

Re: Dateiverwaltung - Beschreibung wird nicht mehr leer

Beitrag von Oldperl » Mo 25. Nov 2013, 16:00

Faar hat geschrieben:Kann man diese Vorgaben für Contenido Codes irgendwo nachlesen?
Für die 4.8er Reihe gab es mal eine inoffizielle Coding Convention für Contenido-Entwickler bei 4fb. Ob diese inzwischen irgendwo offiziell zu erhalten ist entzieht sich meiner Kenntnis.

Gruß aus Franken

Ortwin
ConLite 2.1, alternatives und stabiles Update von Contenido 4.8.x unter PHP 7.x - Download und Repo auf Gitport.de
phpBO Search Advanced - das Suchwort-Plugin für CONTENIDO 4.9
Mein Entwickler-Blog

derSteffen
Beiträge: 847
Registriert: Mi 14. Dez 2005, 16:15
Wohnort: Königs Wusterhausen bei Berlin
Kontaktdaten:

Re: Dateiverwaltung - Beschreibung wird nicht mehr leer

Beitrag von derSteffen » Mo 25. Nov 2013, 17:30

Hallo,

vielen lieben Dank für eure Hilfe. Darauf wäre ich ja nie gekommen, aber leider funktioniert es trotzdem nicht!

Code: Alles auswählen

// Entscheidung welche Description
if (empty($fd)) {
if ("CMS_HTML[138]" != "") {$desc = strip_tags("CMS_HTML[138]");}
// ACHTUNG ist CMS_HTMLHEAD wirklich 1 ?!
else {$desc = strip_tags($oArticle->getContent('CMS_HTMLHEAD', 1));}
} else {$desc = urldecode($fd["description"]);}
Sobald was in der Beschreibung steht, wird es angezeigt, lösche ich den Inhalt in der Beschreibung wird bei diesem Foto nichts angezeigt, wobei es aber aus dem Text-Feld 138 den Inhalt anzeigen soll (bzw. die Artieküberschrift), dass machen die anderen Bilder ja auch, da wird der Inhalt aus dem Textfeld 138 angezeigt (dort hatte ich aber bis dahin auch nichts in der Dateiverwaltung reingeschrieben).

Was mache ich denn falsch? Habe es auch schon mit isset versucht und !empty .. aber keine Erfolge.

Vielen Dank

MfG Steffen

xmurrix
Beiträge: 3143
Registriert: Do 21. Okt 2004, 11:08
Wohnort: Augsburg
Kontaktdaten:

Re: Dateiverwaltung - Beschreibung wird nicht mehr leer

Beitrag von xmurrix » Mo 25. Nov 2013, 17:38

derSteffen hat geschrieben:...Was mache ich denn falsch? Habe es auch schon mit isset versucht und !empty .. aber keine Erfolge....
Du machst nichts falsch, ich habe es dir nicht 100% erklärt.

Code: Alles auswählen

if (!empty($fd))
Die Liste (Variable) ist ja nicht immer leer, es hat Einträge und die können einen leeren String haben.


Was du brauchst ist

Code: Alles auswählen

if (!empty($fd) && !empty($fd['description']))
@all:
Was die Coding-Conventions oder Best Practices betrifft, da halte ich mich jetzt hier mal raus. Man sollte den Modulcode anders programmieren, aber das ist nicht das Thema gewesen...

Gruß
xmurrix
CONTENIDO Downloads: CONTENIDO 4.10.1
CONTENIDO Links: Dokumentationsportal, FAQ, API-Dokumentation
CONTENIDO @ Github: CONTENIDO 4.10 - Mit einem Entwicklungszweig (develop-branch), das viele Verbesserungen/Optimierungen erhalten hat und auf Stabilität und Kompatibilität mit PHP 8.0 bis 8.2 getrimmt wurde.

derSteffen
Beiträge: 847
Registriert: Mi 14. Dez 2005, 16:15
Wohnort: Königs Wusterhausen bei Berlin
Kontaktdaten:

Re: Dateiverwaltung - Beschreibung wird nicht mehr leer

Beitrag von derSteffen » Mo 25. Nov 2013, 18:05

Hallo xmurrix,

das heißt doch:

Code: Alles auswählen

if (!empty($fd) && !empty($fd['description'])) {
wenn Description nicht leer ist, oder?

Und das heißt:

Code: Alles auswählen

if (empty($fd) && empty($fd['description'])) {
wenn Description leer ist, oder?

Nur mal doof nachgefragt :-)

Danke Dir!

MfG Steffen

xmurrix
Beiträge: 3143
Registriert: Do 21. Okt 2004, 11:08
Wohnort: Augsburg
Kontaktdaten:

Re: Dateiverwaltung - Beschreibung wird nicht mehr leer

Beitrag von xmurrix » Mo 25. Nov 2013, 18:18

...

Code: Alles auswählen

if (!empty($fd) && !empty($fd['description'])) {
...
Wenn $fd nicht leer und $fd['description'] nicht leer.
...

Code: Alles auswählen

if (empty($fd) && empty($fd['description'])) {
...
Wenn $fd leer und $fd['description'] leer. Das ist aber so nicht ganz ideal. Wenn $fd leer ist, solltest du nicht unbendingt nochmal auf $fd['description'] prüfen, das dies ja schon vorher durch empty($fd) geklärt wurde.

Gruß
xmurrix
CONTENIDO Downloads: CONTENIDO 4.10.1
CONTENIDO Links: Dokumentationsportal, FAQ, API-Dokumentation
CONTENIDO @ Github: CONTENIDO 4.10 - Mit einem Entwicklungszweig (develop-branch), das viele Verbesserungen/Optimierungen erhalten hat und auf Stabilität und Kompatibilität mit PHP 8.0 bis 8.2 getrimmt wurde.

derSteffen
Beiträge: 847
Registriert: Mi 14. Dez 2005, 16:15
Wohnort: Königs Wusterhausen bei Berlin
Kontaktdaten:

Re: Dateiverwaltung - Beschreibung wird nicht mehr leer

Beitrag von derSteffen » Di 26. Nov 2013, 07:52

Vieln Dank ... ohne Euch hätte ich das nicht hinbekommen,

allerdings sieht meine Lösung jetzt ein bisschen anders aus:

Code: Alles auswählen

// Entscheidung welche DESCRIPTION
// Beschreibung ist leer und wurde nie was reingeschrieben
if (empty($fd) && empty($fd['description'])) 
{
// Ist das Textfeld 138 nicht leer dann zeige den Inhalt daraus an, ansonsten die Artikelueberschrift
if ("CMS_HTML[138]" != "") {$desc = strip_tags("CMS_HTML[138]");}
// ACHTUNG ist CMS_HTMLHEAD wirklich 1 ?!
else {$desc = strip_tags($oArticle->getContent('CMS_HTMLHEAD', 1));}
} 

// Beschreibung vorhanden -> dann gebe Sie aus
else if (!empty($fd) && !empty($fd['description'])) 
{$desc = urldecode($fd["description"]);}

// Beschreibung ist leer und wurde schon mal was reingeschrieben
else if (!empty($fd) && empty($fd['description'])) 
{
// Ist das Textfeld 138 nicht leer dann zeige den Inhalt daraus an, ansonsten die Artikelueberschrift
if ("CMS_HTML[138]" != "") {$desc = strip_tags("CMS_HTML[138]");}
// ACHTUNG ist CMS_HTMLHEAD wirklich 1 ?!
else {$desc = strip_tags($oArticle->getContent('CMS_HTMLHEAD', 1));}
}
Merci nochmal!

MfG Steffen

Faar
Beiträge: 1915
Registriert: Sa 8. Sep 2007, 16:23
Wohnort: Brandenburg
Kontaktdaten:

Re: Dateiverwaltung - Beschreibung wird nicht mehr leer

Beitrag von Faar » Di 26. Nov 2013, 10:34

@oldperl und @xmurrix
Die Coding Conventions sollten nochmal aufgetrieben oder neu dokumentiert werden.
Auch wenn es hier beinahe offtopic ist, aber manche Probleme entstünden erst gar nicht, wenn man immer im Bilde wäre, was der Code enthält oder aussagt.
Zumindest hier hätte es schon gleich geholfen, eine Variable mit einem Array als Inhalt zu erkennen... auch wenn es noch nicht ganz das Problem löst.
Habt ihr nicht noch einen Link zu den Vorgaben?
Fliegt der Bauer übers Dach, ist der Wind weißgott nicht schwach.

Faar
Beiträge: 1915
Registriert: Sa 8. Sep 2007, 16:23
Wohnort: Brandenburg
Kontaktdaten:

Re: Dateiverwaltung - Beschreibung wird nicht mehr leer

Beitrag von Faar » Di 26. Nov 2013, 10:45

xmurrix hat geschrieben:

Code: Alles auswählen

if (empty($fd) && empty($fd['description'])) {
Wenn $fd leer und $fd['description'] leer. Das ist aber so nicht ganz ideal. Wenn $fd leer ist, solltest du nicht unbendingt nochmal auf $fd['description'] prüfen, das dies ja schon vorher durch empty($fd) geklärt wurde.
Moin, du könnstest (und solltest) an dieser Stelle auch mit "oder" Programmieren.

Code: Alles auswählen

if (empty($fd) || empty($fd['description'])) {
Denn wenn $fd bereits leer ist, ist es true.
Andersherum mit "und" (&&) wird ein Schuh daraus, denn wenn ich mit "und" beide Bedinungen erfüllt haben muss, also dass die gesamte Liste in $fd leer sein muss und dann auch noch $fd['description'], dann weiß ich nie, ob nicht auch mal $fd irgendwo irgendeinen Wert enthalten kann aber $fd['description'] wäre dennoch leer, was das eigentliche Ziel ist.
Darum ist hier "oder" meiner Meinung nach besser.
Natürlich kann man gleich nach $fd['description'] prüfen, wenn es nur darauf ankommt. Aber dann konsequenterweise so:

Code: Alles auswählen

if (empty($fd['description']) || $fd['description']=="") {
Denn wie du sagst, könnte ein leerer String bereits ein Inhalt sein.
Fliegt der Bauer übers Dach, ist der Wind weißgott nicht schwach.

xmurrix
Beiträge: 3143
Registriert: Do 21. Okt 2004, 11:08
Wohnort: Augsburg
Kontaktdaten:

Re: Dateiverwaltung - Beschreibung wird nicht mehr leer

Beitrag von xmurrix » Di 26. Nov 2013, 11:33

Faar hat geschrieben:...Die Coding Conventions sollten nochmal aufgetrieben oder neu dokumentiert werden...
Es gibt zwar eine, aber die ist vermutlich nicht online verfügbar.

Würde auch nichts bringen, da jeder sowieso seinen eigenen Stil hat und hier kein Modulrepository ist, in der Modulcodes vor der Veröffentlichung auf die Einhaltung der Coding Conventions hin geprüft werden.

Auch bei der 4.9, in der das Thema verstärkt angegangen wurde, sieht man dass nicht alle veröffentlichten Module sich daran halten...
CONTENIDO Downloads: CONTENIDO 4.10.1
CONTENIDO Links: Dokumentationsportal, FAQ, API-Dokumentation
CONTENIDO @ Github: CONTENIDO 4.10 - Mit einem Entwicklungszweig (develop-branch), das viele Verbesserungen/Optimierungen erhalten hat und auf Stabilität und Kompatibilität mit PHP 8.0 bis 8.2 getrimmt wurde.

derSteffen
Beiträge: 847
Registriert: Mi 14. Dez 2005, 16:15
Wohnort: Königs Wusterhausen bei Berlin
Kontaktdaten:

Re: Dateiverwaltung - Beschreibung wird nicht mehr leer

Beitrag von derSteffen » Di 26. Nov 2013, 14:35

Nochmals Danke an Xmurrix und Faar.

Oldperl
Beiträge: 4250
Registriert: Do 30. Jun 2005, 22:56
Wohnort: Eltmann, Unterfranken, Bayern
Kontaktdaten:

Re: Dateiverwaltung - Beschreibung wird nicht mehr leer

Beitrag von Oldperl » Di 26. Nov 2013, 15:33

Faar hat geschrieben:@oldperl und @xmurrix
Die Coding Conventions sollten nochmal aufgetrieben oder neu dokumentiert werden.
.....
Habt ihr nicht noch einen Link zu den Vorgaben?
Die CC waren damals als "nur für den internen Gebrauch" deklariert, daher auch meines Wissens nie irgendwo öffentlich zum DL angeboten. Soweit ich mich erinnere gab es mal in der FAQ irgendwo zumindest ein paar wenige Infos, bzw. im einen oder anderen Posting hier im Forum. Sehr aktiv in diesem Bereich war HerrB, der auch in seinen Projekten sehr nah an den CC programmiert hat.

Gruß aus Franken

Ortwin
ConLite 2.1, alternatives und stabiles Update von Contenido 4.8.x unter PHP 7.x - Download und Repo auf Gitport.de
phpBO Search Advanced - das Suchwort-Plugin für CONTENIDO 4.9
Mein Entwickler-Blog

rethus
Beiträge: 1851
Registriert: Di 28. Mär 2006, 11:55
Wohnort: Mönchengladbach
Kontaktdaten:

Re: Dateiverwaltung - Beschreibung wird nicht mehr leer

Beitrag von rethus » Mi 10. Sep 2014, 10:44

Die liegen im docs ↦ techref Verzeichnis.
Was genau man damit jedoch anfangen soll seh ich noch nicht. Hat da jemand Tipps?
Could I help you... you can help me... buy me a coffee . (vielen ❤ Dank an: Seelauer, Peanut, fauxxami )

xstable.com: - HighSpeed Hosting, Domains, DomainReselling, Linux-Administration
suther.de: - App-Programierung, High-Performance-Webpages, MicroServices, API-Anbindungen & Erstellung

Software... ein Blick wert: GoogleCalender Eventlist, xst_dynamic_contentType

Gesperrt