if-Anweisung reagiert nach Test nicht mehr

lenaMQ

Mitglied
Hallochen

Hab folgendes Script:
PHP:
<?php
include 'config.inc.php';
clearstatcache();
mysql_connect($host, $user, $pass) or die ("Keine Verbindung zu der Datenbank möglich.");
mysql_select_db($db);
$sql = " SELECT count(EMAIL) as total from verlosung";
$query = mysql_query($sql);
$ergebnis = mysql_fetch_array($query);
echo 'Einträge: ';
echo  $ergebnis['total'];
echo '<br><br>';
if ($ergebnis < 10)
      {
         include("eintrag.php");
         }
   else
         {
         echo '<body bgcolor="#000000" text="#FFFFFF" style="font-family:Arial,Tahoma; font-size:10pt;">
         Leider sind alle Freikarten schon verlost.</body>';
         }
 
?>

Der erste Test ist super durchgelaufen. Als ich aber die Datenbank geleert hab, um erneut zu testen, reagierte die if-Anweisung nicht mehr und es wurde gleich else ausgegeben.. Obwohl $ergebnis < 10 ist/war.

Woran kann das liegen`? Browsercache hab ich geleert.


LG Lena
 
Die $ergebnis-Variable ist ein Array und Arrays lassen sich eigentlich nicht mit Integerwerten vergleichen.
 
@ konobi

Wir mir scheint wird in dieser Zeile
Code:
echo  $ergebnis['total'];

die Anzahl der Freikarten ausgegeben die schon verlost bzw. vergeben sind.
 
@ Konobi

Hast du mein Post nicht gelesen...da steht ein ganz normaler Zahlenwert drin. Das kann ja nur ein Wert von 0 bis 10 sein (Arrays fangen ja bei 0 an zu zählen).

@ Gumbo
Da hast du Recht aber wenn sie sagt das der erste Test funktioniert hat..

@ lenaMQ

Du hast doch gesagt du hast die Datenbank wieder geleert. Wie viele Einträge waren denn vorher in der Datenbank.
Mir kommt es irgendwie so vor das die Bedingung
Code:
if ($ergebnis < 10)
nicht erfüllt ist wenn keine Einträge in der Datenbank vorhanden sind und das Skript daher direkt zu else springt. Ich weiß nur noch nicht warum...


// Edit: Lies doch einfach mal die Anzahl der Einträge in der Datenbank aus und schreibe sie in eine Variable und nicht in ein Array und mach dann mit dieser Variable die IF-Abfrage.
 
Zuletzt bearbeitet:
So ich nochmal.. Ich hab grad erfahren, dass man das mit arrays so nicht machen kann, da in dem array schon variablen zwischengespeichert werden oder so ähnlich...

hab das jetzt geändert in:


PHP:
<?php
include 'config.inc.php';
clearstatcache();
mysql_connect($host, $user, $pass) or die ("Keine Verbindung zu der Datenbank möglich.");
mysql_select_db($db);
$sql = " SELECT * from verlosung";
$query = mysql_query($sql);
$ergebnis = mysql_num_rows($query);
echo 'Einträge: ';
echo  $ergebnis;
echo '<br><br>';
if ($ergebnis < 10)
      {
         include("eintrag.php");
         }
   else
         {
         echo '<body bgcolor="#000000" text="#FFFFFF" style="font-family:Arial,Tahoma; font-size:10pt;">
         Leider sind alle Freikarten schon verlost.</body>';
         }

?>


So nun gehts wieder. Nun ergibt sich aber ein weiteres Problem für mich.
in der eintrag.php steht folgendes:

PHP:
<?php
include 'config.inc.php';
mysql_connect($host, $user, $pass) or die ("Keine Verbindung zu der Datenbank möglich.");
mysql_select_db($db);
if ($_POST['submit'])
{
 $sql = 'INSERT INTO verlosung(NAME, VORNAME, EMAIL) VALUES("'.$_POST['NAME'].'","'.$_POST['VORNAME'].'","'.$_POST['EMAIL'].'")';
mysql_query($sql);
  echo '<body bgcolor="#000000" text="#FFFFFF" style="font-family:Arial,Tahoma; font-size:10pt;"> Der Eintrag war erfolgreich!</body>';
}
else
{
echo '
<body bgcolor="#000000" text="#FFFFFF" style="font-family:Arial,Tahoma; font-size:10pt;"><form action="" method="post">
<table width="350" border="0" cellspacing="5">
  <tr>
    <td style="font-family:Arial,Tahoma; font-size:10pt;" colspan="2">Herzlichen Glückwunsch!<br> Trage hier deine Daten ein,<br>
    damit wir dich kontaktieren können.</td>
  </tr>
  <tr>
    <td style="font-family:Arial,Tahoma; font-size:10pt;" align="right">Nachname</td>
    <td align="right"><input type="text" name="NAME" size="30" /></td>
  </tr>
  <tr>
    <td style="font-family:Arial,Tahoma; font-size:10pt;" align="right">Vorname</td>
    <td align="right"><input type="text" name="VORNAME" size="30" /></td>
  </tr>
<tr>
    <td style="font-family:Arial,Tahoma; font-size:10pt;" align="right">Email</td>
    <td align="right"><input type="text" name="EMAIL" size="30" /></td>
  </tr>
    <tr>
      <td align="right"><input style="font-family:Arial,Tahoma; font-size:8pt; border: 1pt solid #FFFFFF; background-color:#000000; color:#FFFFFF;" type="reset" name="Reset" value="LÖSCHEN" /></td>
    <td align="right"><input style="font-family:Arial,Tahoma; font-size:8pt; border: 1pt solid #FFFFFF; background-color:#000000; color:#FFFFFF; font-weight:bold;" type="submit" name="submit" value="EINTRAGEN" /></td>
  </tr>
</table>
</form>
</body>';
}
mysql_close($db);
?>

Email ist in der Datenbank als Unique gesetzt, d.h. eine Emailadresse darf auch nur einmal vorkommen.
Wie kann ich es ermöglichen mit mysql_error() , dass dann angezeigt wird:

"Ups du hast dich hier schoneinmal eingetragen"

Mysql gibt ja eine Fehlermeldung zurück, dass diese Email schon existiert, aber wie kann ich das dann oben in eintrag.php realisieren, dass ein angepasstest echo ausgegeben wird?


(((( Bis jetzt wird auch bei nicht gespeicherten Einträgen "Der Eintrag war erfolgreich!" angezeigt. )))
 
So, wie gesagt das ist mir schon klar!

Code:
mysql_connect($host, $user, $pass) or die ("Keine Verbindung zu der Datenbank möglich.");
mysql_select_db($db);
$sql = " SELECT count(EMAIL) as total from verlosung";
$query = mysql_query($sql);
$ergebnis = mysql_fetch_array($query);
echo 'Einträge: ';
echo  $ergebnis['total'];

Sie liest sich doch die Werte aus der Datenbank aus Speichert den Count in "total", da es sich um ein Assosiative Array handelt, kann man den Wert auch mit Namen auslesen, also in diesen Fall "echo $ergebnis['total']" oder halt mit den Index Wert "echo $ergebnis[1]"!

In beiden fällen wird der Count Wert aus der Datenbank ausgelesen! Also kann da auch was anderes drin stehen als 0 bis 10 z.B., wenn es 12 Datensätze sind steht da auch ne 12 drin.

Ich meinte nur welcher Wert da halt aus der Datenbank ausgelesen wird, der sollte ja in "$ergebnis['total']" drinstehen, es scheit kein Wert zu sein der der < 10 ist, da die If-Anweisung ja genau das Abfragt.

mfg
 
So, wie gesagt das ist mir schon klar!

Code:
mysql_connect($host, $user, $pass) or die ("Keine Verbindung zu der Datenbank möglich.");
mysql_select_db($db);
$sql = " SELECT count(EMAIL) as total from verlosung";
$query = mysql_query($sql);
$ergebnis = mysql_fetch_array($query);
echo 'Einträge: ';
echo  $ergebnis['total'];

Sie liest sich doch die Werte aus der Datenbank aus Speichert den Count in "total", da es sich um ein Assosiative Array handelt, kann man den Wert auch mit Namen auslesen, also in diesen Fall "echo $ergebnis['total']" oder halt mit den Index Wert "echo $ergebnis[1]"!

In beiden fällen wird der Count Wert aus der Datenbank ausgelesen! Also kann da auch was anderes drin stehen als 0 bis 10 z.B., wenn es 12 Datensätze sind steht da auch ne 12 drin.

Ich meinte nur welcher Wert da halt aus der Datenbank ausgelesen wird, der sollte ja in "$ergebnis['total']" drinstehen, es scheit kein Wert zu sein der der < 10 ist, da die If-Anweisung ja genau das Abfragt.

mfg


Da stehen einfach nur die Anzahl der vorhandenen Datensätze drin.siehe Beitrag über dir.. Wurde geändert, da im array anscheinend der alte maximalwert gespeichert wurde.
 
Zurück