empty-Überprüfung bringt kein Ergebnis

keiplan

Mitglied
Ich will aus meiner Datenbank auslesen, ob sich jmd neu angemeldet hat, und wenn die nicht so ist, eine entsprechene Meldung ausgeben.
So wie folgend, zeigt mir der Browser aber keine Meldung an.
Woran kann das liegen? Falsche Syntax?

PHP:
<?
         	include ("../config/db.php");
                 // gesperrte User ausgeben
	     	$query = "SELECT id, name FROM zugriff WHERE level=0";
	     	$result = mysql_query($query) or die ("Anfrage $query scheitert.<br>\n");

                 while ($line = mysql_fetch_array($result)) {
                        if(empty($line[id])) {
                                     echo "keine neuen User Vorhanden"; }
                        else {
?>
				<tr>
         				<td>ID: <?=$line[id]?> -</td>
         				<td><a href="memberverwaltung.php"><?=$line['name']?></a></td>
         		</tr>
<?
                          }
		}
				mysql_free_result($result);
				mysql_close();
 ?>

Vielen Dank im Vorraus!
Greetz, plan0r
 
Hallo,
probiers mal so:
PHP:
<?php
    include ("../config/db.php");

    $query = "SELECT id, name FROM zugriff WHERE level=0";
    $result = mysql_query($query) or die ("Anfrage $query scheitert.<br>\n");

    while ($line = mysql_fetch_assoc($result)) {
        if(empty($line['id'])) {
            echo 'keine neuen User Vorhanden';
        } else {
?>
    <tr>
        <td>ID: <?php echo $line['id']; ?> -</td>
        <td><a href="memberverwaltung.php"><?php echo $line['name']; ?></a></td>
    </tr>
<?php
        }
    }
    mysql_free_result($result);
    mysql_close();
 ?>
[phpf]mysql_fetch_array[/phpf] gibt in deinem Fall nämlich nur ein Array mit numerischen Keys aus.

mfg
forsterm
 
Zuletzt bearbeitet:
Hallo,
ok, dann probier mal das hier:
PHP:
<?php
    include ("../config/db.php");

    $query = "SELECT id, name FROM zugriff WHERE level=0";
    $result = mysql_query($query) or die ("Anfrage $query scheitert.<br>\n");

    while ($line = mysql_fetch_assoc($result)) {
        if(mysql_num_rows($result) == 0) {
            echo 'keine neuen User Vorhanden';
        } else {
?>
    <tr>
        <td>ID: <?php echo $line['id']; ?> -</td>
        <td><a href="memberverwaltung.php"><?php echo $line['name']; ?></a></td>
    </tr>
<?php
        }
    }
    mysql_free_result($result);
    mysql_close();
 ?>

mfg
forsterm
 
Zuletzt bearbeitet:
Hallo,
ok, ich hab den Fehler gefunden, glaube ich zumindest, hab meine Code oben entsprechend angepasst.

mfg
forsterm
 
Immer noch keine Fehlermeldung, aber auch keine Ausgabe der gewünschten Meldung.
Das Programm arbeitet, als würde es einfach das if überspringen und jedesmal gleich beim else weitermachen.

(auch nach deinem Update keine Änderung...)
 
Zuletzt bearbeitet:
Ich habe es mal so versucht, klappt aber auch nicht.
Er gibt einfach nichts aus :/

PHP:
<?php
    			include ("../config/db.php");

    			$query = "SELECT id, name FROM zugriff WHERE level=0";
    			$result = mysql_query($query) or die ("Anfrage $query scheitert.<br>\n");

                         $rows = mysql_num_rows($result);

    			while ($line = mysql_fetch_assoc($result)) {
        			  if($rows == 0) {
            			echo 'keine neuen User Vorhanden';
        			  }
                           else {
			?>
    			<tr>
        				<td>ID: <?php echo $line['id']; ?> -</td>
        				<td><a href="memberverwaltung.php"><?php echo $line['name']; ?></a></td>
    			</tr>
			<?php
        				}
    			  }
    			mysql_free_result($result);
    			mysql_close();
 			?>
 
Hallo,

wenn die Ergebnismenge der Abfrage leer ist, wird der Körper der while-Schleife überhaupt nicht ausgeführt. Nicht vergessen: while prüft vor jedem Schleifendurchlauf die Bedingung. Auch und vor allem bei vor dem ersten Durchlauf!

Also die Überprüfung auf eine leere Ergebnismenge einfach vor die Schleife ziehen, dann sollte die gewünschte Ausgabe erfolgen.

Grüße,
Matthias
 
Zurück