Seite 1 von 1

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

Verfasst: Di 20. Dez 2005, 20:01
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.

Verfasst: Mi 21. Dez 2005, 09:30
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...

Verfasst: Mi 21. Dez 2005, 16:39
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?

Verfasst: Fr 23. Dez 2005, 13:48
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.

Verfasst: Fr 23. Dez 2005, 23:13
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

Verfasst: So 25. Dez 2005, 22:37
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...

Verfasst: So 25. Dez 2005, 22:55
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

Verfasst: Do 5. Jan 2006, 09:44
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: