• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

if - Verzweigung wird ignoriert

Juare

Neues Mitglied
Hallo,

f487fccc26.png


Die $row[2] - Verzweigung wird immer ignoriert auch wenn der Wert 1 ist führt er einfach die nächste if - Verzweigung durch. Den Wert hole ich aus der DB also (1 v 0) bei 1 sind Wartungsarbeiten angesagt bei 0 sind sie aus.

Ich habe mir auch schon angesehen ob die Werte stimmen die ich aus der DB hole und das tuen sie.
Wenn ich den Vorgang manuell ausführe klappt es. Über die DB halt nicht.
 
Werbung:
Hast du einfach mal geschaut was $row[2] für einen Wert zurück gibt? Wenn der Vorgang Manuell doch klappt, dann kann es ja eigentlich nur daran liegen.
 
Hast du einfach mal geschaut was $row[2] für einen Wert zurück gibt? Wenn der Vorgang Manuell doch klappt, dann kann es ja eigentlich nur daran liegen.
Die $row[2] - Verzweigung wird immer ignoriert auch wenn der Wert 1 ist führt er einfach die nächste if - Verzweigung durch. Den Wert hole ich aus der DB also (1 v 0) bei 1 sind Wartungsarbeiten angesagt bei 0 sind sie aus.

Ich habe mir auch schon angesehen ob die Werte stimmen die ich aus der DB hole und das tuen sie.
Wenn ich den Vorgang manuell ausführe klappt es. Über die DB halt nicht.
 
Werbung:
Bei If in PHP gilt die Regel. Nehme immer === anstadt == und immer !== anstadt !=, es sei denn du weißt es besser. ;)

Edit: Warum müsst ihr eigentlich immer solche Gebilde bauen die immer weiter nach Rechts wachsen? Also soetwas:

PHP:
if () {
    if () {
        if () {

        }
    }
}

In den meisten Fällen könnte man doch genau so gut soetwas schreiben:

PHP:
if (!) {
   
}

if () {
    if () {

    }
}

Wenn euer Code aussieht als wenn ihr Pfeile malt macht ihr meistens auch irgendetwas falsch ^^ kann doch keiner leesen diese Gebilde.
 
$row ist an der Stelle false :D
Mit aktiviertem error_reporting könnte man das sogar selber feststellen. ;)

Richtig debuggen

1. Man bemerkt, dass ein Skript nicht das tut, was es soll.
2. Man schreibt an den Anfang des Scriptes die Zeile: error_reporting(-1);
3. Man verwendet ini_set('display_errors', true); damit die Fehler auch angezeigt werden.
4. Man versucht, die Stelle die daran Schuld sein kann, schonmal einzugrenzen. Falls dies nicht geht, wird zunächst das komplette Skript als fehlerhaft angesehen.
5. An markanten Stellen im Skript lässt man sich wichtige Variableninhalte ausgeben und ggf. auch in bedingten Anweisungen eine kurze Ausgabe machen, um zu überprüfen, welche Bedingung ausgeführt wurde. Wichtig bei MySQL Fehlern (...not a valid MySQL result resource...): mysqli_error() verwenden oder Abfrage ausgeben und zb mit phpmyadmin testen.
6. Schritt 5 wird so lange wiederholt, bis Unstimmigkeiten im Skript auffallen
7. Damit hat man das Problem (Unstimmigkeit) gefunden und kann versuchen diese zu beheben. Hierzu dienen dann die PHP-Dokumentation und andere Quellen als Ratgeber.
8. Lässt sich das konkrete Problem trotzdem nicht beheben, kann man in Foren um Rat fragen.
9. Das Programm läuft und man kann die Debug-Ausgaben wieder entfernen.
 
Bei If in PHP gilt die Regel. Nehme immer === anstadt == und immer !== anstadt !=, es sei denn du weißt es besser. ;)

Edit: Warum müsst ihr eigentlich immer solche Gebilde bauen die immer weiter nach Rechts wachsen? Also soetwas:

PHP:
if () {
    if () {
        if () {

        }
    }
}

In den meisten Fällen könnte man doch genau so gut soetwas schreiben:

PHP:
if (!) {
  
}

if () {
    if () {

    }
}

Wenn euer Code aussieht als wenn ihr Pfeile malt macht ihr meistens auch irgendetwas falsch ^^ kann doch keiner leesen diese Gebilde.


Habe jetzt das gemacht was du gesagt hast und jetzt wird keine mehr von beiden beachtet.
Wie gesagt ein echo gibt immer den eingetragenen Wert aus.
 
Werbung:
Wie gesagt ein echo gibt immer den eingetragenen Wert aus.
Stimmt, trotzdem ist, wenn die while-Schleife beendet wird, $row = false

Und noch 2 Hinweise: "Select *" ist bäh, macht man nicht, und die mysql_*-Funktionen sollten auch nicht mehr verwendet werden, steige um auf mysqli_*
 
Die Variable $row ist nach der 3. Zeile nicht mehr gesetzt, weil die while-Schleife dort beginnt und endet.
 
Werbung:
Nein, das kann niemand, denn dafür haben wir zu wenig Informationen. Aus dem kurzen Stück Quellcode kann man nicht entnehmen, was du da überhaupt vorhast.
 
ab172304d9.png


Also das hier ist die Datenbank.
Der Wert bei der Registrierung ist auf 1 gesetzt das heißt es ist möglich sich zu registrieren bei 0 ist die Registrierung deaktiviert.

Ich möchte das genau dieser Wert aus der Datenbank geholt wird und diesen möchte ich dann in eine if - Verzweigung integrieren.

if($register == 1) {
//Script
}
else {
echo "Registrierung deaktiviert";
}
 
Werbung:
Und woran machst du das pro Seite fest? Am Titel? Oder an der Id und ist die immer garantiert die 1? Oder gibt es nur diesen einen Eintrag?
Du musst schon etwas genauer werden!
 
PHP:
<?php

   $query = "Select
              `register`
              from
              `einstellungen`";
             
   $result = mysql_query($query)
      or die ("MySQL-Error: " . mysql_error());
     
   $register = mysql_result($result,0);
  
   echo $register;
?>
 
Werbung:
Habe es zum laufen bekommen der Wert der zurückkommt stimmt aber die if - Abfrage streikt wieder -__-

4478403111.png
 
Zuletzt bearbeitet:
Dein Skript ist total unsicher. Benutze bitte mysqli_real_escape_string oder mysqli prepared statements!
 
Werbung:
Baue einmal ein var_dump(register_status[0]) ein

Es wäre auch schon, wenn du hier kein Screenshots postest, sondern direkt den Quellcode
 
Zurück
Oben