Seite 1 von 1

Prüfen ob bestimmtes Feld leer

Verfasst: 16.10.2014 11:34
von Walter91
Mit folgenden Code zeige ich einen einzelnen Datensatz aus einer Tabelle an.

Code: Alles auswählen

$sql = 'SELECT *
    FROM ' . TEST_TABLE . '
    ORDER BY name';
    
    $result = $db->sql_query($sql);
    $row = $db->sql_fetchrow($result);
        
        $name    = $row['name'];
        $vorname = $row['vorname'];
        $telefon = $row['telefon'];
         
    $template->assign_vars(array(
        'NAME'        => $name,
        'VORNAME'     => $vorname, 
        'TELEFON'     => $telefon,                                     
    )); 
Ich suche jetzt nach einer Möglichkeit wie ich das erweitern kann.
Wenn ein einzelnes Feld leer (z.B. TELEFON) möchte ich gern eine Fehlermeldung.
Wenn alle vollständig, dann einfach den Datensatz anzeigen.

Soweit mir bekannt ist, kann man das mit dem Befehl ISSET prüfen. Nur weis ich nicht wo ich das einbauen muss.
Wäre schön wenn jemand helfen könnte. Danke.

Re: Prüfen ob bestimmtes Feld leer

Verfasst: 16.10.2014 14:07
von tas2580
Mit isset() prüfst du ob eine Variable gesetzt ist oder nicht. Wenn du die Daten aus der Datenbank holst sind alle Variablen immer gesetzt. Was du brauchst ist empty().
Das zuweisen an Variablen kannst du dir auch sparen und direkt das Array verwenden.

Code: Alles auswählen

$sql = 'SELECT *
    FROM ' . TEST_TABLE . '
    ORDER BY name';
    
    $result = $db->sql_query($sql);
    $row = $db->sql_fetchrow($result);
  
if(empty($row['telefon']))
{
    die('Fehler');
}
else
{
    $template->assign_vars(array(
        'NAME'        => $row['name'],
        'VORNAME'     => $row['vorname'], 
        'TELEFON'     => $row['telefon'],                                     
    ));
} 
Gruß Tobi

Re: Prüfen ob bestimmtes Feld leer

Verfasst: 16.10.2014 17:29
von Walter91
Danke Tobi.
Da hatte ich einen Denkfehler, sorry bin leider kein php-Profi.
Die Fehlermeldung habe ich noch mit "trigger_error" etwas gestylt.
Jedenfalls geht das jetzt so wie mir das vorgestellt hatte.
Nochmal danke.