WCM Forum

WCM Forum (http://www.wcm.at/forum/index.php)
-   Programmierung (http://www.wcm.at/forum/forumdisplay.php?f=17)
-   -   PHP Abfrage Problem! (if) (http://www.wcm.at/forum/showthread.php?t=113210)

reichr 24.10.2003 16:35

PHP Abfrage Problem! (if)
 
hy leute! folgende function:


PHP-Code:

 function news_connect()

        {

        
$result mysql_query("SELECT * FROM news_flash ORDER BY zeit DESC");





          if (
$num mysql_num_rows($result)) {

          
// Ausgabe der Datensätze, wenn vorhanden

          
for($i=0;$i $num$i++) {

          
$id mysql_result($result,$i,"nr");

          
$news_flash mysql_result($result,$i,"news_flash");

          
$news mysql_result($result,$i,"news");

          
$news_preview mysql_result($result,$i,"news_preview");

          echo (
"[b]<font color=000000>-</font> <a href=\"./news_view.php?site=news&nr=$id\">$news_flash</a>[/b]
"
);
          echo (
"$news_preview


"
);

 if (!
is_null($news)) {
echo (
"<a href=\"./news_view.php?site=news&nr=$id\"> --- weiter --- </a>


"
);
}



          }

          }

          } 

mein problem ist das der link "---weiter---" bei jedem datensatz angezeigt wird obwohl in der spalte "news" nicht immer was drinnen steht?? was kann das problem sein?

also .. 6 datensätze... in 2 steht in der spalte "news" was drinnen und in den restlichen 4 steht in "news" nicht (is null).... !?

aber warum wird mir der ---weiter--- link überall angezeigt???


bitte um eure hilfe!

käptn 24.10.2003 17:01

Du machst

PHP-Code:

if(!is_null($news)) 

was aber

PHP-Code:

if(!empty($news)) 

sein sollte.

~

reichr 24.10.2003 22:07

...
 
tja..
dankeschön ;-)

mit empty funktionierts, wie dass?

moorhahn 25.10.2003 09:49

naja, bin ned sicher, aber in DBs is es normalerweise so, dass jedes feld eines datensatzes einen wert haben muss, also nicht "null" sein darf. zumindest motzt ein MS-PWS wenn man mit einer asp-seite versucht, einen datensatz in einer DB zu erstellen, und man dabei einem der felder keinen wert zuweist, und es auch keinen standardwert hat. im falle einer zeichenkette enthält das feld dann halt einen leerstring, also "". damit ist es nicht mehr null, aber "empty", also "leer", wie der anglist unschwer erkennt :) . bitte um korrektur falls das ein blödsinn ist.

brigh 25.10.2003 13:33

Zitat:

Original geschrieben von moorhahn
naja, bin ned sicher, aber in DBs is es normalerweise so, dass jedes feld eines datensatzes einen wert haben muss, also nicht "null" sein darf. zumindest motzt ein MS-PWS wenn man mit einer asp-seite versucht, einen datensatz in einer DB zu erstellen, und man dabei einem der felder keinen wert zuweist, und es auch keinen standardwert hat. im falle einer zeichenkette enthält das feld dann halt einen leerstring, also "". damit ist es nicht mehr null, aber "empty", also "leer", wie der anglist unschwer erkennt :) . bitte um korrektur falls das ein blödsinn ist.
Ist kein Blödsinn - in Hex sind blank und Null einfach unterschiedliche Werte.Nur für uns sehen sie auf den ersten Blick gleich aus.

Gruß
brigh

wbendl 25.10.2003 13:52

Hi!

Ob ein Feld Null enhalten darf, ist in der Definition der Tabelle festgelegt. Ebenso ist festgelegt,ob "" (also ein leerer String), ein zulässiger Feldinhalt ist.

mfg

WB

reichr 25.11.2003 11:00

...
 
hy leute! nochmal ne frage zum thema...

wie sollte jetzt die abfrage lauten wenn keine daten in diesem feld stehn...?

kikakater 25.11.2003 13:46

Eine Variable wird als NULL interpretiert, wenn

*

ihr die Konstannte NULL als Wert zugewiesen wurde,
*

ihr bis jetzt kein Wert zugewiesen wurde,
*

sie mit unset() gelöscht wurde.

Laut Php.At Link

NULL bedeutet 0 für numerische Felder
und "" (Leerstring) bzw. NULL Wert für alphanumerische Felder

NULL heißt soviel wie undefiniert oder nicht angegeben oder nicht bekannt, kein wie immer gearteter typisierter Zugriff möglich.

kikakater 25.11.2003 13:56

Schreib ein echo von $news mit >> << umschlossen raus. Dann weißt Du mehr als jetzt.

kikakater 25.11.2003 14:13

Mit Verlaub: So ungeschickt wie Du es machst, programmiert man einfach nicht. Das ist der pure Resourcen Wahnsinn, was Du aufführst.

Code:

$result = mysql_query($sql, $db);
 $d = mysql_fetch_object($result);

 echo $d->feldname;

 bzw.

 if(!is_null($d->feldname))
 {
  echo ...
 }

mfg Kikakater

P.S.: Ich habe es extra bei mir noch einmal explizit mit is_null ausprobiert und ich kann Dir bestätigen, daß NULL Werte der entsprechenden feldnamen Objektmembervariablen erkannt werden.


Alle Zeitangaben in WEZ +2. Es ist jetzt 19:28 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
© 2009 FSL Verlag