Div Element ausblenden wenn...


CreativPur

Erfahrenes Mitglied
Hi,

ich habe eine Ausgabeseite, wo der Lebenslauf ausgegeben wird.
Jeder Abschnitt (beruflicher Werdegang, Ausbildung, Schulbildung usw) sitzt in einem eigenen DIV Element.
Nun möchte ich über css erreichen, das wenn kein Eintrag vom $userid existiert, dass dieses DIV Element ausgeblendet wird.

Folgendes Script habe ich versucht..

Inder Tabelle existiert die Spalte $userid.
CSS:
<?php
        $sql = "SELECT YEAR(CURRENT_DATE()) - YEAR(praktikum_von),praktikum_von, date_format( praktikum_bis, '%d.%m.%Y' )praktikum_bis, userid, praktikum_als, praktikum_firma, praktikum_ort,praktikum_bemerkung, lebenslauf_praktikum_id
                FROM users_lebenslauf_praktikum
                WHERE userid = $userid ORDER BY praktikum_von DESC";
              
                echo $userid;
        ?>
        <div style="display:<?php (($userid === $userid) ? 'block' : 'none')  ?>">
            <div class="panel panel-default">
                <div class="panel-heading">
                    <h3 class="panel-title">Praktikum:</h3>
                </div>
                <div class="panel-body">
                    <table class="table table-hover" >
                        <tr>
                            <thead>
                                <td width="7%">von:</td>
                                <td width="7%">bis:</td>
                                <td width="20%">Praktikum als:</td>
                                <td width="15%">Firma/Einrichtung:</td>
                                <td width="13%">Ort:</td>
                                <td colspan="4">Bemerkung:</td>
                            </thead>
                            <?php
                                foreach ($pdo->query($sql) as $row) {
                            ?>
                            <tbody>
                                <td><?php echo date('d.m.Y', strtotime($row['praktikum_von'])) ?></td>
                                <td><?php echo date('d.m.Y', strtotime($row['praktikum_bis'])) ?></td>
                                <td><?php echo $row['praktikum_als'] ?></td>
                                <td><?php echo $row['praktikum_firma'] ?></td>
                                <td><?php echo $row['praktikum_ort'] ?></td>
                                <td width="30%"><?php echo $row['praktikum_bemerkung'] ?></td>
                                <td width="5%">
                                    <form action="lebenslauf_praktikum_aendern.php" method="GET">
                                        <input type="hidden" name="lebenslauf_praktikum_id" class="form-control" style="font-size:9px;" value="<?php echo $row['lebenslauf_praktikum_id'] ?>" />
                                        <input type="hidden" name="titel" class="form-control" style="font-size:9px;" value="im Praktikum " />
                                        <button
                                        type="submit" name"lebenslauf_praktikum_aendern" class="btn btn-success glyphicon glyphicon-pencil row-update btn-xs aendern">
                                        </button>
                                    </form>
                                </td>
                                <td width="5%">
                                <form action="#?save=lebenslauf_praktikum_loeschen" method="post">
                                    <input type="hidden" name="lebenslauf_praktikum_id" class="form-control" style="font-size:9px;" value="<?php echo $row['lebenslauf_praktikum_id'] ?>" />
                                    <button name"lebenslauf_praktikum_loeschen" type="submit" class="btn btn-danger glyphicon glyphicon-remove row-remove btn-xs loeschen"></button>
                                </form>
                                </td>
                            </tbody>
                            <?php }  ?>
                       </tr>
                    </table>
                </div>      
            </div>
        </div>
Es werden zwar keine Daten ausgegeben, wenn $userid nicht existiert, aber das DIV Element bleibt trotzdem stehen.
 

Yaslaw

n/a
Moderator
Code:
(($userid === $userid)
Was soll das bewirken?
Du solltest auf NULL prüfen, nicht auf sich selber.

Oder meinst du einen anderen div?
 

CreativPur

Erfahrenes Mitglied
Mein Gedankengang...
Ich bin im User-Account mit der $userid=78
Dies wird auch per echo ausgegeben.

Jetzt wollte ich damit erreichen, ob ein Eintrag vom User mit der $userid=78 existiert.
Wenn ja, soll das DIV Element angezeigt werden. Wenn nicht, dann soll es ausgeblendet werden
 

CreativPur

Erfahrenes Mitglied
wenn ich es so schreibe..
PHP:
<div style="display:<?php (($userid = NULL) ? 'none' : 'block') ?> ">
,
dann stell ich mir die Frage, woher weiß php, welcher User gleich NULL ist ?
 

Yaslaw

n/a
Moderator
Hä?
Es gibt nur eine $userid. Die ist immer gleich mit der $userid
Der Codeabschnitt hat gar nix damit zu tun, ob ein Eintrag vorhanden ist oder nicht. Dazu müsstest du irgendwo dein $SQL auswerten.
 

CreativPur

Erfahrenes Mitglied
Mein Quellcode sieht folgend aus..
PHP:
<?php
        $sql = "SELECT YEAR(CURRENT_DATE()) - YEAR(praktikum_von),praktikum_von, date_format( praktikum_bis, '%d.%m.%Y' )praktikum_bis, userid, praktikum_als, praktikum_firma, praktikum_ort,praktikum_bemerkung, lebenslauf_praktikum_id
                FROM users_lebenslauf_praktikum
                WHERE userid = $userid ORDER BY praktikum_von DESC";
        ?>
        <div style="display:<?php (($userid = NULL) ? 'none' : 'block') ?> ">
              
            <div class="panel panel-default">
                <div class="panel-heading">
                    <h3 class="panel-title">Praktikum:</h3>
                </div>
                <div class="panel-body">
                    <table class="table table-hover" >
                        <tr>
                            <thead>
                                <td width="7%">von:</td>
                                <td width="7%">bis:</td>
                                <td width="20%">Praktikum als:</td>
                                <td width="15%">Firma/Einrichtung:</td>
                                <td width="13%">Ort:</td>
                                <td colspan="4">Bemerkung:</td>
                            </thead>
                            <?php
                                foreach ($pdo->query($sql) as $row) {
                            ?>
                            <tbody>
                                <td><?php echo date('d.m.Y', strtotime($row['praktikum_von'])) ?></td>
                                <td><?php echo date('d.m.Y', strtotime($row['praktikum_bis'])) ?></td>
                                <td><?php echo $row['praktikum_als'] ?></td>
                                <td><?php echo $row['praktikum_firma'] ?></td>
                                <td><?php echo $row['praktikum_ort'] ?></td>
                                <td width="30%"><?php echo $row['praktikum_bemerkung'] ?></td>
                                <td width="5%">
                                    <form action="lebenslauf_praktikum_aendern.php" method="GET">
                                        <input type="hidden" name="lebenslauf_praktikum_id" class="form-control" style="font-size:9px;" value="<?php echo $row['lebenslauf_praktikum_id'] ?>" />
                                        <input type="hidden" name="titel" class="form-control" style="font-size:9px;" value="im Praktikum " />
                                        <button
                                        type="submit" name"lebenslauf_praktikum_aendern" class="btn btn-success glyphicon glyphicon-pencil row-update btn-xs aendern">
                                        </button>
                                    </form>
                                </td>
                                <td width="5%">
                                <form action="#?save=lebenslauf_praktikum_loeschen" method="post">
                                    <input type="hidden" name="lebenslauf_praktikum_id" class="form-control" style="font-size:9px;" value="<?php echo $row['lebenslauf_praktikum_id'] ?>" />
                                    <button name"lebenslauf_praktikum_loeschen" type="submit" class="btn btn-danger glyphicon glyphicon-remove row-remove btn-xs loeschen"></button>
                                </form> 
                                </td>
                            </tbody>
                            <?php }  ?>
                       </tr>
                    </table>
                </div>       
            </div>
Ist kein Eintrag von $userid=78 vorhanden, wird in der Tabelle auch nichts ausgegeben.Das funktioniert auch.. Aber das DIV Element bleibt sichtbar und leer. Und genau das möchte ich unterbinden.
 

CreativPur

Erfahrenes Mitglied
Ich weiß, dass ich bestimmt zuvor ein Abfrage erstellen muss..
Existiert in Tabelle "users_lebenslauf_praktikum" in der Spalte userid die $userid=78 ? Wenn ja, Div Element einblenden... usw..
Ich weiß nur nicht, wie ich das umsetzen muss.
 

Yaslaw

n/a
Moderator
Doch. Du weisst das. Halt so mit mysqli und so. Genau wie du es sonst auch machst.
Ansonsten benutz mal eine Suchfuncktion: "PHP MYSQLI Daten abfragen"
Oder ein PHP Handbuch. Das ganze müsste etwa im ersten Viertel vom Buch zu finden sein. Bei den Grundlagen.
 

CreativPur

Erfahrenes Mitglied
Selbst diese Funktion funktioniert bei mir nicht.. Obwohl eine userid=7 existiert, wird mir nein ausgegeben
PHP:
<?php
$einlesen = mysql_query("SELECT userid FROM users_lebenslauf_praktikum WHERE userid='7'");
if(mysql_num_rows($einlesen)==1) echo "ja";
else echo "nein";
?>
 

Yaslaw

n/a
Moderator
Bitte, du bist genügend lange im Forum um zu wissen, dass man Informationen, wie zum Beispiel Fehlermeldungen/Fehlverhalten etc. in den Beitrag schreiben soll.
"Funktioniert nicht" ist keine, wirklich keine hilfreiche Aussage.
Zudem solltest du inzwischen wissen, dass man mysql_ Funktionen nicht mehr verwendet und stattdessen mindestens mysqli_ Funktionen nimmt,

Ich rate jetzt mal anhand deines Codes: Die ID ist eine Zahl und sollte nicht in '' gesetzt werden. Oder Die Tabelle existiert nicht oder die Connection wurde nie aufgebaut oder das Feld userid heisst anderst.
 

CreativPur

Erfahrenes Mitglied
so... so geht es... Zufrieden ? smile
PHP:
$sql = "SELECT userid FROM users_lebenslauf_praktikum WHERE userid=7";
$user = $pdo->query($sql)->fetch();
if($pdo->query($sql)==1) echo "ja";
else echo "nein";
 

goto;

Erfahrenes Mitglied
Hi,

PDO::query() returns a PDOStatement object, or FALSE on failure.
Die Anzahl der Zeilen kannst Du mit
PHP:
$pdo->rowCount();
ermitteln.

Nun zum Thema.

  1. $sql = "SELECT YEAR(CURRENT_DATE()) - YEAR(praktikum_von),praktikum_von, date_format( praktikum_bis, '%d.%m.%Y' )praktikum_bis, userid, praktikum_als, praktikum_firma, praktikum_ort,praktikum_bemerkung, lebenslauf_praktikum_id
  2. FROM users_lebenslauf_praktikum
  3. WHERE userid = $userid ORDER BY praktikum_von DESC";
  4. ?>
  5. <div style="display:<?php (($userid = NULL) ? 'none' : 'block') ?> ">
In Zeile 5 weist du der Variable $userid den Wert "NULL" zu; Ich glaube Du meintest eher == o. === ; aber auch das funktioniert nicht.
Da, wie Du schon sagtest, jeder Nutzer eine ID hat, wird dieser Fall niemals eintreten.

Hier mal ein Beispiel wie Du das umsetzen kannst:

PHP:
$sql = "SELECT YEAR(CURRENT_DATE()) - YEAR(praktikum_von),praktikum_von, date_format( praktikum_bis, '%d.%m.%Y' )praktikum_bis, userid, praktikum_als, praktikum_firma, praktikum_ort,praktikum_bemerkung, lebenslauf_praktikum_id
               FROM users_lebenslauf_praktikum
               WHERE userid = $userid ORDER BY praktikum_von DESC";
$stmt = $pdo->query($sql);
$rows = $stmt->fetchAll(); // erzeuge ein array aus allen Daten
PHP:
 <div style="display:<?php (($stmt->rowCount() = 0) ? 'none' : 'block') ?> ">
Wenn die Anzahl der Ergebnisse gleich 0

Und anschließend kannst Du über das oben erzeugte Array iterieren.
PHP:
foreach ($rows as $row) {

Viele Grüße
 

Yaslaw

n/a
Moderator
Entweder wie goto geschrieben hat: $pdo->rowCount();
Oder du machst von Anfang an ein SELECT COUNT(*).. und wertest diesen aus.
Je nachdem ob die die Daten nachher wirklich brauchst. In deinen ersten Beiträgen war $row vorhanden. Deshalb gehe ich davon aus, dass die Version von goto die passende ist.
 

CreativPur

Erfahrenes Mitglied
Ich habe es jetzt folgend umgesetzt..
PHP:
<?php
$sql = "SELECT YEAR(CURRENT_DATE()) - YEAR(praktikum_von),praktikum_von, date_format( praktikum_bis, '%d.%m.%Y' )praktikum_bis, praktikum_als, praktikum_firma, praktikum_ort, praktikum_bemerkung, lebenslauf_praktikum_id
              FROM users_lebenslauf_praktikum
              WHERE userid = $userid ORDER BY praktikum_von DESC";
$stmt = $pdo->query($sql);
$rows = $stmt->fetchAll(); // erzeuge ein array aus allen Daten
?>
       <div style="display:<?php (($stmt->rowCount() = 0) ? 'none' : 'block') ?> ">
            <div class="panel panel-default">
                <div class="panel-heading">
                    <h3 class="panel-title">Praktikum:</h3>
                </div>
                <div class="panel-body">
                    <table class="table table-hover" >
                        <tr>
                            <thead>
                                <td width="7%">von:</td>
                                <td width="7%">bis:</td>
                                <td width="20%">Praktikum als:</td>
                                <td width="15%">Firma/Einrichtung:</td>
                                <td width="13%">Ort:</td>
                                <td colspan="4">Bemerkung:</td>
                            </thead>
                            <?php
                            $sql = "SELECT YEAR(CURRENT_DATE()) - YEAR(praktikum_von),praktikum_von, date_format( praktikum_bis, '%d.%m.%Y' )praktikum_bis, userid, praktikum_als, praktikum_firma,
                                praktikum_ort,praktikum_bemerkung, lebenslauf_praktikum_id
                                 FROM users_lebenslauf_praktikum
                                 WHERE userid = $userid ORDER BY praktikum_von DESC";
                                 foreach ($rows as $row) {
                            ?>
                            <tbody>
                                <td><?php echo date('d.m.Y', strtotime($row['praktikum_von'])) ?></td>
                                <td><?php echo date('d.m.Y', strtotime($row['praktikum_bis'])) ?></td>
                                <td><?php echo $row['praktikum_als'] ?></td>
                                <td><?php echo $row['praktikum_firma'] ?></td>
                                <td><?php echo $row['praktikum_ort'] ?></td>
                                <td width="30%"><?php echo $row['praktikum_bemerkung'] ?></td>
                                <td width="5%">
                                    <form action="lebenslauf_praktikum_aendern.php" method="GET">
                                        <input type="hidden" name="lebenslauf_praktikum_id" class="form-control" style="font-size:9px;" value="<?php echo $row['lebenslauf_praktikum_id'] ?>" />
                                        <input type="hidden" name="titel" class="form-control" style="font-size:9px;" value="im Praktikum " />
                                        <button
                                        type="submit" name"lebenslauf_praktikum_aendern" class="btn btn-success glyphicon glyphicon-pencil row-update btn-xs aendern">
                                        </button>
                                    </form>
                                </td>
                                <td width="5%">
                                <form action="#?save=lebenslauf_praktikum_loeschen" method="post">
                                    <input type="hidden" name="lebenslauf_praktikum_id" class="form-control" style="font-size:9px;" value="<?php echo $row['lebenslauf_praktikum_id'] ?>" />
                                    <button name"lebenslauf_praktikum_loeschen" type="submit" class="btn btn-danger glyphicon glyphicon-remove row-remove btn-xs loeschen"></button>
                                </form> 
                                </td>
                            </tbody>
                            <?php }  ?>
                       </tr>
                    </table>
                </div>       
            </div>
         </div>
So langsam verstehe ich den Aufbau.... So ganz langsam..
Allerdings wird mir durch..
PHP:
<div style="display:<?php (($stmt->rowCount() = 0) ? 'none' : 'block') ?> ">
nur eine weiße Seite angezeigt...
 

goto;

Erfahrenes Mitglied
Hi,

selbes Problem wie oben, die Seite bleibt weiß, da es nicht auszugeben gibt.

PHP:
<?php (($stmt->rowCount() = 0) ? 'none' : 'block') ?> ">
In diesem Fall weist Du $stmt->rowCount() den Wert 0 zu (geht das überhaupt?!); diese Bedingung ist immer "true" und somit wird der Zweigt "none" verwendet.
Die Bedingung muss..
PHP:
<?php (($stmt->rowCount() === 0) ? 'none' : 'block') ?> ">
... lauten.

Viele Grüße
 

CreativPur

Erfahrenes Mitglied
Hi goto,
das hatte ich ja auch versucht...
In diesem Fall werden mir auch keine Daten angezeigt, wenn kein Eintrag mit der $userid in der Datenbank ist.
Dies ist auch nicht mein Problem..
Mein Problem ist, dass auch der gesamte Div-Block noch angezeigt wird, selbst wenn nicht drin steht.. Siehe Bild..
Dieser Block sollte nicht ausgegeben werden, wenn keine Daten ausgegeben werden..

Nochmals Mein Quellcode..
PHP:
<?php
$sql = "SELECT YEAR(CURRENT_DATE()) - YEAR(praktikum_von),praktikum_von, date_format( praktikum_bis, '%d.%m.%Y' )praktikum_bis, praktikum_als, praktikum_firma, praktikum_ort, praktikum_bemerkung, lebenslauf_praktikum_id
        FROM users_lebenslauf_praktikum
        WHERE userid = $userid ORDER BY praktikum_von DESC";
        $stmt = $pdo->query($sql);
        $rows = $stmt->fetchAll();
?>
       <div style="display:<?php (($stmt->rowCount() === 0) ? 'none' : 'block') ?> ">
            <div class="panel panel-default">
                <div class="panel-heading">
                    <h3 class="panel-title">Praktikum:</h3>
                </div>
                <div class="panel-body">
                    <table class="table table-hover" >
                        <tr>
                            <thead>
                                <td width="7%">von:</td>
                                <td width="7%">bis:</td>
                                <td width="20%">Praktikum als:</td>
                                <td width="15%">Firma/Einrichtung:</td>
                                <td width="13%">Ort:</td>
                                <td colspan="4">Bemerkung:</td>
                            </thead>
                            <?php
                                   foreach ($rows as $row) {
                               ?>
                            <tbody>
                                <td><?php echo date('d.m.Y', strtotime($row['praktikum_von'])) ?></td>
                                <td><?php echo date('d.m.Y', strtotime($row['praktikum_bis'])) ?></td>
                                <td><?php echo $row['praktikum_als'] ?></td>
                                <td><?php echo $row['praktikum_firma'] ?></td>
                                <td><?php echo $row['praktikum_ort'] ?></td>
                                <td width="30%"><?php echo $row['praktikum_bemerkung'] ?></td>
                                <td width="5%">
                                    <form action="lebenslauf_praktikum_aendern.php" method="GET">
                                        <input type="hidden" name="lebenslauf_praktikum_id" class="form-control" style="font-size:9px;" value="<?php echo $row['lebenslauf_praktikum_id'] ?>" />
                                        <input type="hidden" name="titel" class="form-control" style="font-size:9px;" value="im Praktikum " />
                                        <button
                                        type="submit" name"lebenslauf_praktikum_aendern" class="btn btn-success glyphicon glyphicon-pencil row-update btn-xs aendern">
                                        </button>
                                    </form>
                                </td>
                                <td width="5%">
                                <form action="#?save=lebenslauf_praktikum_loeschen" method="post">
                                    <input type="hidden" name="lebenslauf_praktikum_id" class="form-control" style="font-size:9px;" value="<?php echo $row['lebenslauf_praktikum_id'] ?>" />
                                    <button name"lebenslauf_praktikum_loeschen" type="submit" class="btn btn-danger glyphicon glyphicon-remove row-remove btn-xs loeschen"></button>
                                </form> 
                                </td>
                            </tbody>
                            <?php }  ?>
                       </tr>
                    </table>
                </div>       
            </div>
         </div>

Bilder unten:
1.Bild mit Daten
2.Bild ohne Daten

Ich möchte, dass der gesamte Block Praktikum ( <div class="panel panel-default">) nicht eingeblendet wird wenn keine Daten vorhanden..
 

Anhänge