php columncount / überprüfung

06/24/2016 20:27 Cc_Cc_Cc#1
Guten Tag.

hab ein kleines Problem. un zwar möchte ich Datensätze anzeigen lassen. Falls keiner gefunden wurde soll er mit einem exit erstmal sagen das keine gefunden wurde. Nur klappt es nicht.


Problem: Egal ob es den Datensatz gibt oder nicht er zeigt mir immer an: Es wurde kein Datensatz gefunden.
06/24/2016 21:29 #Metho#2
1. Hast du hier einen kleinen Überlegungsfehler:

PHP Code:
if(empty(trim($data))) { 
    
$error 'Das Feld darf nicht leer sein.'

elseif(
strlen($data) < 2) { 
    
$error 'Das Feld darf nicht kürzer als 2 Zeichen sein.'

elseif(
strlen($data) > 20) { 
    
$error 'Das Feld darf länger als 20 Zeichen sein.'

Sollte eigentlich...

PHP Code:
function str_trim($s) {
    
$l $i 0$n '';
    
    while (
$c $s[$i++])
 
    if (
        
$c !== ' ' &&
        
$c !== '\r' &&
        
$c !== '\n' &&
        
$c !== '\t' &&
        
$c !== '\f') { $n .= $c$l++ }
      
    return [
'string' => $n'length' => $l];
}

$data str_trim($data);

if (
$data['length'] === 0)
{
    
$error 'Das Feld darf nicht leer sein.'
}

elseif(
$data['length'] < 2

    
$error 'Das Feld darf nicht kürzer als 2 Zeichen sein.'
}

elseif(
$data['length'] > 20

    
$error 'Das Feld darf länger als 20 Zeichen sein.'
}

elseif(!
ctype_alpha($data['string']))

    
$error 'Bitte nur deutsche Buchstaben verwenden.'
}

//.. ect. 
sein, da ja ein Name im Name keine Leerzeichen enthalten darf und du so ebenfalls schneller prüfst, wobei beide nicht multi_byte safe sind

Und was du brauchst ist

PHP Code:
count($row) === 0
06/24/2016 21:33 False#3
Schau nochmal über dein Script, den du prüfst z.b. ob die Anzahl (count) GRÖßER ist (sprich wenn Einträge vorhanden sind) und machst dann ein exit mit "Es wurden keine Datensätze gefunden".Das macht schon einmal kein Sinn, dann würde ich mal behaupten ein exit dort zu benutzen ist naja.. nicht schön(hast doch schon eine error Variable ?).

Kleiner Tipp bzg. dem Bindvalue, mach im SQL kein ? sonder :firstname und beim bindvalue selber statt 1 dann 'firstname'.
Das ganze ist deutlich übersichtlicher wenn du nachher größere SQLs hast.

Quote:
Originally Posted by #Metho View Post
1. Hast du hier einen kleinen Überlegungsfehler:

PHP Code:
if(empty(trim($data))) { 
    
$error 'Das Feld darf nicht leer sein.'

elseif(
strlen($data) < 2) { 
    
$error 'Das Feld darf nicht kürzer als 2 Zeichen sein.'

elseif(
strlen($data) > 20) { 
    
$error 'Das Feld darf länger als 20 Zeichen sein.'

Sollte eigentlich...

PHP Code:
function str_trim($s) {
    
$l $i 0$n '';
    
    while (
$c $s[$i++])
 
    if (
        
$c !== ' ' &&
        
$c !== '\r' &&
        
$c !== '\n' &&
        
$c !== '\t' &&
        
$c !== '\f') { $n .= $c$l++ }
      
    return [
'string' => $n'length' => $l];
}

$data str_trim($data);

if (
$data['length'] === 0)
{
    
$error 'Das Feld darf nicht leer sein.'
}

elseif(
$data['length'] < 2

    
$error 'Das Feld darf nicht kürzer als 2 Zeichen sein.'
}

elseif(
$data['length'] > 20

    
$error 'Das Feld darf länger als 20 Zeichen sein.'
}

elseif(!
ctype_alpha($data['string']))

    
$error 'Bitte nur deutsche Buchstaben verwenden.'
}

//.. ect. 
sein, da ja ein Name im Name keine Leerzeichen enthalten darf und du so ebenfalls schneller prüfst, wobei beide nicht multi_byte safe sind

Und was du brauchst ist

PHP Code:
count($row) === 0
Leider bist du an einer falschen stelle, ließ sein Beitrag nochmal er redet vom COUNT und das ausgeben wird das keine Einträge vorhanden sind.
(was nicht heißt das dein Beitrag dennoch richtig sein kann)
06/24/2016 21:47 #Metho#4
Quote:
Originally Posted by .ƒaℓsє. View Post
Leider bist du an einer falschen stelle, ließ sein Beitrag nochmal er redet vom COUNT und das ausgeben wird das keine Einträge vorhanden sind.
(was nicht heißt das dein Beitrag dennoch richtig sein kann)
Ist schon richtig wie ich's gesagt habe, count() macht ja ebenfalls das, was er möchte

sonst kann er um noch schneller zu sein auf Falschheit prüfen

PHP Code:
if (!$row) { /* wenn keine Datensätze gefunden wurden  */ 
06/24/2016 22:32 False#5
Quote:
Originally Posted by #Metho View Post
Ist schon richtig wie ich's gesagt habe, count() macht ja ebenfalls das, was er möchte

sonst kann er um noch schneller zu sein auf Falschheit prüfen

PHP Code:
if (!$row) { /* wenn keine Datensätze gefunden wurden  */ 
Okay das ganz unten habe ich wohl übersehen:confused:
06/26/2016 19:21 Cc_Cc_Cc#6
Danke für die Funktion. So, problem besteht aber weiterhin. Obwohl ein Datensatz existiert sagt er mir das es keine gibt.

06/26/2016 19:35 False#7
Quote:
Originally Posted by Cc_Cc_Cc View Post
Danke für die Funktion. So, problem besteht aber weiterhin. Obwohl ein Datensatz existiert sagt er mir das es keine gibt.

Nutzt du eigentlich eine vernünftige IDE oder nur Notepad o.ä. ?Eine normale Entwicklungsumgebung hätte dir den Fehler schon angezeigt...
PHP Code:
if(count($row) === 0) { exit("Keine Datensätze gefunden."); }
[...]
$row $stmt->fetch(PDO::FETCH_ASSOC); 

Die Variable $row gibt es erst viel später? ^^