wie einfache if-Abfrage gestalten, Variable fehlt...

Gesperrt
nicnac
Beiträge: 326
Registriert: Do 6. Jan 2005, 15:21
Wohnort: Bln
Kontaktdaten:

wie einfache if-Abfrage gestalten, Variable fehlt...

Beitrag von nicnac »

Hallo,

ich will eigentlich was ganz einfaches, aber ich weiß nicht, welche Variable ich hier abfragen kann

Code: Alles auswählen

 echo '>
           <td colspan="2"><b>Ansprechperson:/Details:</b> '.urldecode($db->f("value")).'</td>
         </tr>';
ich will einfach nur, dass wenn kein Inhalt vorhanden ist, Ansprechperson:/Details weggelassen wird.
das kann ich ja, indem ich frage if (! tja, welche Variable nehm ich denn von dem f("value") ){mach was}
oder?

Keiner eine Idee?
Danke schon mal.
Gruß nicnac
---------------
arbeite seit Contenido Version 4.4.5 mit dem System, ca. 30 Websites mit Contenido umgesetzt auf domainfactory, Strato und 1und1.
simu
Beiträge: 48
Registriert: Di 4. Okt 2005, 08:44
Wohnort: Schweiz
Kontaktdaten:

Beitrag von simu »

so sollte das funktionieren:

Code: Alles auswählen

echo '>
           <td colspan="2">' . ( $db->f("value") ? "<b>Ansprechperson:/Details:</b>" : "" ) . ' '.urldecode($db->f("value")).'</td>
         </tr>';
die Abfrage die ich verwendet habe ist eine Kurzform einer if-else Abfrage, vor dem '?' kommt die Bedingung, in diesem Fall: 'ist die variabel $db->f("value") true?', wenn die Bedingung true zurückgibt wird der String vor dem ':' zurückgegeben ansonsten der danach...
nicnac
Beiträge: 326
Registriert: Do 6. Jan 2005, 15:21
Wohnort: Bln
Kontaktdaten:

Beitrag von nicnac »

probier ich mal heute abend aus.
also ist das "$db->f("value")" eine Variable?

Ich bin leider noch nicht so fit in PHP als dass ich die verkürzte Form der if/else verstehe und selber anwenden kann. Aber mit Deiner Unterstützung...
Irgendwann raff ich das auch noch :wink:

so. probiert. da tut sich gar nichts, also muß wohl nicht abgefragt werden, ob sie existiert (das macht man doch wenn man mit der Rückgabe von true arbeitet oder?) sondern ob der Inhalt == "" ist oder?
ich habe das einfach hinter

Code: Alles auswählen

<td colspan="2">' . ( $db->f("value") 
eingefügt.
also ( $db->f("value") ==""
hm, nur jetzt zeigt er mir weder bei einem Inhalt noch bei keinem was an.
dann habe ich mit ! abgefragt ob nicht leer... (so war das doch oder?) - nix - und dann die Werte um : ausgetauscht, nun zeigt er es immer an...
Also Fehlermeldung gab es keine im Modul. Da schein ich ja an der Stelle wenigstens den PHP-Code korrekt eingegeben zu haben.

Nur leider kann ich jetzt diese 'Bezeichnung' immer noch nicht weglassen, wenn dieses Feld keinen Inhalt hat. Schade.

Jemand noch eine Idee?
Gruß nicnac
---------------
arbeite seit Contenido Version 4.4.5 mit dem System, ca. 30 Websites mit Contenido umgesetzt auf domainfactory, Strato und 1und1.
nicnac
Beiträge: 326
Registriert: Do 6. Jan 2005, 15:21
Wohnort: Bln
Kontaktdaten:

Beitrag von nicnac »

keiner eine Idee?

mag keiner mal rüberschauen? Ist doch bestimmt nicht schwer, ich komm nur einfach nicht drauf...

ooch, soo kurz vor Weihnachten, wird sich doch bestimmt jemand erbarmen.
Gruß nicnac
---------------
arbeite seit Contenido Version 4.4.5 mit dem System, ca. 30 Websites mit Contenido umgesetzt auf domainfactory, Strato und 1und1.
HerrB
Beiträge: 6935
Registriert: Do 22. Mai 2003, 12:44
Wohnort: Berlin
Kontaktdaten:

Beitrag von HerrB »

Code: Alles auswählen

echo '>
           <td colspan="2">';
if ($db->f("value") == "") {
echo '&nbsp;';
} else {
echo '<b>Ansprechperson:/Details:</b> '.urldecode($db->f("value"));
}
echo '</td>
         </tr>';
Sollte gehen, ungetestet. Ansonsten etwas seltsamer Code, da zwar am Anfang ein td, jedoch am Ende auch ein /tr ausgegeben wird. Nun ja.

Ach ja: Den Code sollte man noch ordentlich einrücken ... :wink:

Gruß
HerrB
Bitte keine unaufgeforderten PMs oder E-Mails -> use da Forum!

Newsletter: V4.4.x | V4.6.0-15 (Module, Backend) | V4.6.22+
Standardartikelliste: V4.4.x | V4.6.x
http://www.contenido.org/forum/search.php | http://faq.contenido.org | http://www.communido.net
nicnac
Beiträge: 326
Registriert: Do 6. Jan 2005, 15:21
Wohnort: Bln
Kontaktdaten:

Beitrag von nicnac »

Hallo HerrB,

habs probiert, kommt leider das gleiche raus, wie bei meinen Versuchen, er bringt Ansprechperson ob nun in dem Feld Inhalt steht oder nicht.

Her mal das komplette Modul, besser die Ausgabe. Dazu gibt es noch Termineingabe Modul, dies ist das Terminübersicht Modul. Von wem es ist, weiß ich leider nicht mehr.

Code: Alles auswählen

<?php
$gefunden=0; // um zu überprüfen, ob überhaupt Termine vorliegen
$date = date("Y-m-d");
echo "CMS_HTMLHEAD[1]";
//echo '<table border=0 cellspacing=0 cellpadding=0 width="480px">';

$sql = "SELECT ARTLANG.idart, CONTENT.value, CONTENT.typeid
 FROM ".$cfg["tab"]["cat_art"]." AS CATART, ".$cfg["tab"]["art_lang"]." AS ARTLANG, ".$cfg["tab"]["cat"]." AS CAT, ".$cfg["tab"]["content"]." AS CONTENT
 WHERE ARTLANG.idart = CATART.idart AND CATART.idcat = CAT.idcat AND ARTLANG.idartlang = CONTENT.idartlang
  AND ARTLANG.idlang = '".$lang."' AND CAT.idcat = '".$idcat."' AND CAT.idclient = '".$client."'
  AND ARTLANG.online = '1' AND CATART.is_start='0'
 ORDER BY ARTLANG.idart, CONTENT.typeid ASC"; // Alle Artikel der Kategorie einlesen, die nicht Startartikel (= Terminübersicht) sind
$db->query($sql);
$j=0; $anz=0;
if ($db->num_rows() != 0)
{
 $termin = array(array()); // Array erzeugen, in dem die Termine abgelegt werden;
 while ($j < $db->num_rows()) // alle Datensätze durchlaufen
 {
  $db->next_record();
  if ($db->f("idart") > $termin["idart"][$anz])
  {
   $anz++;
  }
  switch ($db->f("typeid")) {
   case 0: // Anfangstermin
    $termin["datum1"][$anz] = $db->f("value");
    $termin["idart"][$anz] = $db->f("idart");
   break;
   case 1: // Anfangsuhrzeit
    $termin["zeit1"][$anz] = $db->f("value");
    $termin["datum1"][$anz] = $termin["datum1"][$anz]." ".$termin["zeit1"][$anz];
   break;
   case 2: // Endtermin
    $termin["datum2"][$anz] = $db->f("value");
   break;
   case 3: // Enduhrzeit
    $termin["zeit2"][$anz] = $db->f("value");
    $termin["datum2"][$anz] = $termin["datum2"][$anz]." ".$termin["zeit2"][$anz];
   break;
   case 4: // Ort
    $termin["ort"][$anz] = $db->f("value");
   break;
   case 5: // Ortdetail
    $termin["ortdetail"][$anz] = $db->f("value");
   break;
   case 6: // Titel
    $termin["titel"][$anz] = $db->f("value");
   break;
  }
  $j++;
 }
 array_multisort ( $termin["datum1"], SORT_ASC, SORT_STRING, $termin["datum2"], SORT_ASC, SORT_STRING,
  $termin["ort"], $termin["ortdetail"],
  $termin["zeit1"], $termin["zeit2"], $termin["idart"], $termin["titel"] ); // nach Datum sortieren
 for ($i=0; $i<=$anz; $i++)
 {
  if ( $termin["datum1"][$i] >= $date || $termin["datum2"][$i] >= $date ) // nur Termine, die noch aktuell sind, aufnehmen
  {
   if ( substr($termin["datum1"][$i],5,2) !== substr($termin["datum1"][$i-1],5,2) || $gefunden == 0 ) // überprüfen, ob Monatsnahme einzufügen ist
   {
    $farbe=0;
    if ( $gefunden == 1 )
    {
 //    echo '      </table>';
    }
    echo '<table class="termine">
        <tr>
          <td colspan="2" style="padding: 3px 10px 3px 5px; background-color: #FDEDB4"><b>';
    switch (substr($termin["datum1"][$i],5,2)) {
     case 1: echo "Januar"; break;
     case 2: echo "Februar"; break;
     case 3: echo "März"; break;
     case 4: echo "April"; break;
     case 5: echo "Mai"; break;
     case 6: echo "Juni"; break;
     case 7: echo "Juli"; break;
     case 8: echo "August"; break;
     case 9: echo "September"; break;
     case 10: echo "Oktober"; break;
     case 11: echo "November"; break;
     case 12: echo "Dezember"; break; }
    echo ' '.substr($termin["datum1"][$i],0,4).'</b></td>
        </tr>';
   }
   $gefunden=1;
   echo ' <tr><td style="height: 10px;" colspan=2></td></tr>
       <tr';
   if ( $farbe == 1 )
   {
    echo ' bgcolor="#fcf3d3"';
   }
   echo '>
          <td valign="top" style="width:250px;text-align:left"><b>Datum:</b> '.substr($termin["datum1"][$i],8,2).'.'.substr($termin["datum1"][$i],5,2).'.'.substr($termin["datum1"][$i],0,4);
   if ( strlen($termin["zeit1"][$i]) >1 )
   {
    echo ', '.$termin["zeit1"][$i].'&nbsp;Uhr';
   }
   if ( strlen(substr($termin["datum2"][$i],8,2)) > 1 || strlen($termin["zeit2"][$i]) >1 )
   {
    echo ' – ';
    if ( strlen(substr($termin["datum2"][$i],8,2)) > 1 )
    {
     echo substr($termin["datum2"][$i],8,2).'.'.substr($termin["datum2"][$i],5,2).'.'.substr($termin["datum2"][$i],0,4);
     if ( strlen($termin["zeit2"][$i]) >1 )
     {
      echo ', ';
     }
    }
    if ( strlen($termin["zeit2"][$i]) >1 )
    {
     echo $termin["zeit2"][$i].'&nbsp;Uhr';
    }
   }
   echo '</td>
         <td colspan="2"><b>Ort:</b> '.urldecode($termin["ort"][$i]).'</td>
         </tr>';
   if ( strlen($termin["ort"][$i]) > 1 )
   {
    echo '        <tr';
    if ( $farbe == 1 )
    {
     echo ' bgcolor="#fcf3d3"';
    }
    echo '>
           <td  style="width:250px;text-align:left" valign="top" colspan=2>'.urldecode($termin["titel"][$i]).'</td>
        </tr';
   }
   $sql2 = "SELECT CONTENT.value
    FROM ".$cfg["tab"]["art_lang"]." AS ARTLANG, ".$cfg["tab"]["cat"]." AS CAT, ".$cfg["tab"]["content"]." AS CONTENT
    WHERE ARTLANG.idart = ".$termin["idart"][$i]." AND ARTLANG.idartlang = CONTENT.idartlang AND CONTENT.typeid = '7'";
   $db->query($sql2);
   if ($db->num_rows() != 0)
   {
    echo '        <tr';
    if ( $farbe == 1 )
    {
     echo ' bgcolor="#d5e6f5"';
    }
    $db->next_record();
   echo '>
           <td colspan="2">';
if ($db->f("value") == "") {
echo '&nbsp;';
} else {
echo '<b>Ansprechperson:/Details:</b> '.urldecode($db->f("value"));
}
echo '</td>
         </tr>';
   }
   if ( $farbe == 0 ) { $farbe=1; } else { $farbe=0; }
  }
 }
}
if ( $gefunden == 0 ) // falls kein aktueller Termin vorliegt
{
 echo ' <tr>
  <td colspan=2><b>Es liegen aktuell keine Termine vor!</b></td>
 </tr>';
}
?>
      </table>
achja, das mit tr, hab's nur blöd rauskopiert...
Gruß nicnac
---------------
arbeite seit Contenido Version 4.4.5 mit dem System, ca. 30 Websites mit Contenido umgesetzt auf domainfactory, Strato und 1und1.
HerrB
Beiträge: 6935
Registriert: Do 22. Mai 2003, 12:44
Wohnort: Berlin
Kontaktdaten:

Beitrag von HerrB »

I.A. enthält ein leerer Content ein &nbsp;. Wirf mal einen Blick in den fertigen HTML-Code (hinter Ansprechpartner/Code).

Was da steht, muss mit in die Abfrage, e.g.

Code: Alles auswählen

if ($db->f("value") == "" || $db->f("value") == "<Der Wert>") { 
Es kann noch notwendig werden, ein urldecode vor das zweite $db->f("value") zu setzen, aber probiere es erst mal so aus.

Gruß
HerrB
Bitte keine unaufgeforderten PMs oder E-Mails -> use da Forum!

Newsletter: V4.4.x | V4.6.0-15 (Module, Backend) | V4.6.22+
Standardartikelliste: V4.4.x | V4.6.x
http://www.contenido.org/forum/search.php | http://faq.contenido.org | http://www.communido.net
nicnac
Beiträge: 326
Registriert: Do 6. Jan 2005, 15:21
Wohnort: Bln
Kontaktdaten:

Beitrag von nicnac »

Schande.

Ich gestehe, dass ich aus Gründen der Darstellung Absätze drin hatte. Dadurch war die Abfrage natürlich nicht leer...

Ich gelobe Besserung.
:wink:
Gruß nicnac
---------------
arbeite seit Contenido Version 4.4.5 mit dem System, ca. 30 Websites mit Contenido umgesetzt auf domainfactory, Strato und 1und1.
Gesperrt