Probleme bei umsetzung einer befehles mit if

  • Hallo Leutz

    bekome wieder was nicht gebacken ...

    versuche die db auszulesen um festzustellen ob in der tabele
    ein gewisser status ist. wenn ja soll was angezeigt werden
    ansonsten nicht.

    der code:

    PHP
    <?
    $admin=mysql_fetch_object(mysql_query("SELECT admin FROM profil WHERE id=$user_id"));
    if ($admin==1)
            { 
            echo "<td class=\"Klasse3\">&nbsp;<a class=\"St1\">Anministration</a></td>";
            }
    ?>

    wenn ich die variable asmin in der db auf 2 stat 1 ändere bekomme ich
    es immer noch angezeigt.


    mfg
    danke im vorraud

  • Huh? Du schaust ob mysql_fetch_object 1 ist?
    MySQL Fetch Object

    Ich würde dir den verständlicheren mysql_fetch_array() anraten.

    PHP
    <?
    $query = mysql_query("SELECT admin FROM profil WHERE id=".mysql_real_escape_string($user_id);
    if(mysql_num_rows($query) != 0) {
            $admin=mysql_fetch_array();
            if ($admin['id']==1) { 
                    echo "<td class=\"Klasse3\">&nbsp;<a class=\"St1\">Anministration</a></td>";
            }
    }
    ?>

    übrigens solltest du immer den Wert von Variablen angeben, da meine Kristallkugel verstubt ist.
    ich muss mal annehmen dass der auch auf 2 ändert da du ihn nicht im Code-Schnipsel definiert hast :P

    [EDIT] Habe mal den Code gesetzt wie er in einem Internet-Script aussehen sollte.

  • @bandit600

    hat es ein grund das ein teil davon unter einander geschrieben
    ist und nicht in einer reihe?

    und noch ne frage....

    jetzt wollt ich den bereich:

    PHP
    if ($admin == 1) 
             echo "<td class='Klasse3'>
                      <a class='St1'>Anministration</a>
                   </td>";

    zwischen echo" und "; ersetzen durch:

    PHP
    <td class="<? if ($i==0) { echo "Klasse2";} else { echo "Klasse3";}?>" align="center">&nbsp;
            <a style="color:#000000" href="show_foren_thema.php?del=<? echo $row->id; ?>">
            <img src="images/del.png" border="0" width="20" alt="wirklich löschen?"></a></td>

    da aber dort weitere php anweisungen sing geligt mir das net so
    eifach und herr google hat mir auch nicht wirklich helfen wollen.
    meist bekamm ich nur ein weißen schirm und fehler von wegen was mit
    t_string oder so

    mfg

  • @bandit600

    hat es ein grund das ein teil davon unter einander geschrieben
    ist und nicht in einer reihe?


    dient nur der Übersichtlichkeit bzw der besseren Lesbarkeit. Ob untereinander oder in einer Reihe spielt ansonsten keine Rolle.


    und noch ne frage....

    jetzt wollt ich den bereich:

    PHP
    if ($admin == 1) 
             echo "<td class='Klasse3'>
                      <a class='St1'>Anministration</a>
                   </td>";

    zwischen echo" und "; ersetzen durch:

    PHP
    <td class="<? if ($i==0) { echo "Klasse2";} else { echo "Klasse3";}?>" align="center">&nbsp;
            <a style="color:#000000" href="show_foren_thema.php?del=<? echo $row->id; ?>">
            <img src="images/del.png" border="0" width="20" alt="wirklich löschen?"></a></td>

    da aber dort weitere php anweisungen sing geligt mir das net so
    eifach und herr google hat mir auch nicht wirklich helfen wollen.
    meist bekamm ich nur ein weißen schirm und fehler von wegen was mit
    t_string oder so

    mfg


    Also erstmal, du solltest bei einer Frage zu einer Fehlermeldung auch die exakte Fehlermeldung hier posten.
    hier kann ich dir aber wohl sagen woran es liegt:

    PHP
    if ($admin == 1) 
             echo "<td class="<? if ($i==0) { echo "Klasse2";} else { echo "Klasse3";}?>" align="center">&nbsp;
            <a style="color:#000000" href="show_foren_thema.php?del=<? echo $row->id; ?>">
            <img src="images/del.png" border="0" width="20" alt="wirklich löschen?"></a></td>";

    So sieht dein Code aus? Du bist schon im <?php ?> bereich, also sind deine <? ?> da doppelt gemoppelt.
    Mach das mal so:

    PHP
    <?php
    if ($admin == 1) {
        if (!$i) $class = "Klasse2"; 
        else $class = "Klasse3";
        echo "<td class='".$class."' align='center'>&nbsp;
            <a style='color:#000000' href='show_foren_thema.php?del=".$row->id."'>
            <img src='images/del.png' border='0' width='20' alt='wirklich löschen?'></a></td>";
    }
    ?>
  • die fehlermeldung hatte isch nicht mehr aber was mit t_string oder so!

    <? ?> daran lag es aber nicht hatte natürlich rausgelöscht gehabt

    ....aba dein vorschlag hatfunktioniert!
    aba was mir jetzt aufgefallen ist, seit dem ganzen umbau bekomme ich eine
    fehlermeldung wenn ich die seite ausgelogt betrette ... ne meldung mit der ich nichts
    anfangen kann.

    PHP
    MySQL-Error: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 5


    wo soll ich den fehler dann suchen?

  • Ein echo $query; würde weiterhelfen.

    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(E_ALL); und ini_set("display_errors", true);
    3. Man versucht, die Stelle die daran Schuld sein kann, schonmal einzugrenzen. Falls dies nicht geht, wird zunächst das komplette Skript als fehlerhaft angesehen.
    4. 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 (oder auch nicht).
    5. Schritt 3 wird so lange wiederholt, bis Unstimmigkeiten im Skript auffallen
    6. Damit hat man das Problem (Unstimmigkeit) gefunden und kann versuchen diese zu beheben. Hierzu dienen dann die PHP-Dokumentation und andere Quellen als Ratgeber.
    7. Lässt sich das konkrete Problem trotzdem nicht beheben, kann man in Foren um Rat fragen.
    8. Das Programm läuft und man kann die Debug-Ausgaben wieder entfernen.

  • Sollte, tut es aber nicht. Jetzt komm' aber nicht auf die Idee, uns zu fragen, woran das liegt. Das können wir nämlich nicht wissen, da wir keine Ahnung haben, woher $user_id kommt.