Box darstellen oder nicht, abhängig vom Inhalt eines DB - Feldes

godfather_al

Mitglied
Hallo zusammen,

ich versuche jetzt schon seit einigen Tagen eine Margin Box anzeigen zu lassen, wenn es in der Datenbank im Feld margin1content einen Inhalt gibt, und wenn dort kein Inhalt steht, soll die Box erst gar nicht auf der Website erscheinen. Habe es mit empty, isset, $num_rows versucht, aber bekomme es leider nicht hin, hier zwei meiner Ansätze mit der Bitte um Unterstützung:

PHP:
    <?php
    include 'config.inc.php';
    $sql = "SELECT margin1content FROM seiten WHERE pageid = \"{$_GET["id"]}\" ";
    $res = mysql_query($sql) or die (mysql_error());
    $num_rows = mysql_num_rows($result);
    if ($num_rows != 0) {
    echo "<div id='margin1content'>";
    while ($row = mysql_fetch_assoc($res)) echo "
    <p>{$row["margin1content"]}</p></div>";
    mysql_free_result($res);    
    }

    {
    mysql_free_result($res);
    };
    
    ?>


PHP:
    <?php
    include 'config.inc.php';
    $sql = "SELECT margin1content FROM seiten WHERE pageid = \"{$_GET["id"]}\" ";
    $res = mysql_query($sql) or die (mysql_error());
    
    if (empty($res))    {
    mysql_free_result($res);
    }
    
    {
    echo "<div id='margin1box'>";
    while ($row = mysql_fetch_assoc($res)) echo "
    <p>{$row["margin1content"]}</p></div>";
    mysql_free_result($res);    
    }
    ;
    
    ?>

Hier erscheint dann der Fehler: Warning: mysql_num_rows() expects parameter 1 to be resource, null given in C:\xampp\htdocs\cmstest\lehrerliste.php on line 79

Danke vorab für Eure Unterstützung,
Alex
 
Hast du da nicht einen Schreibfehler bei den Variablen $res und $result drin

PHP:
<?php 
    include 'config.inc.php'; 
    $sql = "SELECT margin1content FROM seiten WHERE pageid = \"{$_GET["id"]}\" "; 
    $res = mysql_query($sql) or die (mysql_error()); 
    //unten schreibst du "$result", in der Zeile oben übergibst du es aber an die Variable "$res"
    $num_rows = mysql_num_rows($result); 
    if ($num_rows != 0) { 
    echo "<div id='margin1content'>"; 
    while ($row = mysql_fetch_assoc($res)) echo " 
    <p>{$row["margin1content"]}</p></div>"; 
    mysql_free_result($res);     
    } 

    { 
    mysql_free_result($res); 
    }; 
     
    ?>

Abgesehen davon brauchst du die Variable $num_rows zumindest für die IF-Abfrage nicht. Du kannst doch direkt schreiben:

PHP:
IF (mysql_num_rows($res) != 0)

Gruß Thomas
 
Wenn du den Query noch im WHERE-Teil etwas erweiterst, dann werden nur die Datensätze ausgelesen, die auch etwas in dieser Spalte stehen haben, womit dein vorhaben funktionieren sollte
PHP:
$sql = "SELECT margin1content FROM seiten WHERE pageid = \"{$_GET["id"]}\" AND margin1content IS NOT NULL";

Wenn du in die Spalte jedoch einen leeren String einträgst könnte es auch sein, dass du mit
Code:
LENGTH(margin1content) > 0
erweitern musst. (nicht getestet ;) )
 
Erstmal danke für Eure Antworten, habe es aber leider noch nicht hinbekommen, das Datenfeld margin1content ist vom typ varchars, kann es daran liegen?

Akt. Stand:

PHP:
    <?php
    include 'config.inc.php';
    $sql = "SELECT margin1content FROM seiten WHERE pageid = \"{$_GET["id"]}\" AND LENGTH(margin1content) > 0";
    $res = mysql_query($sql) or die (mysql_error());
    if (mysql_num_rows($res) != 0) {
    echo "<div id='margin1content'>";
    while ($row = mysql_fetch_assoc($res)) echo "
    <p>{$row["margin1headline"]}</p></div>";
    mysql_free_result($res);    
    }

   {
    mysql_free_result($res);
    };
    
    ?>


Fehlermeldung: warning: mysql_free_result: 12 is not a valid MYSQL result resource

Habt Ihr evtl. eine weiter Idee, wie ich das umsetzen könnte?

Alex
 
Ob du es braucht oder nicht ist erst einmal die Frage, aber du rufst

PHP:
mysql_free_result($res);

zweimal hintereinander auf!!
 
Zurück