2017-07-28 3 views
0

Ich habe eine einfache Datenbank post und ich muss alle Titel, Bilder und Benutzer für diesen Beitrag holen.Daten aus DB holen und anzeigen

Mein Problem ist, wie schleife ich alle Daten und repräsentieren jeden Beitrag auf dem HTML? Die Daten sind null, wenn ich sie in der HTML-Datei anrufe.

HTML

<div class="container-fluid"> 
    <div class="post"> 
    <?php include './php/getMemes.php'; ?>       
    <h1><?php $title; ?></h1>     
    <img src="data:image/gif;base64, .'<?php $image; ?>'" > 
    <div class="postRef" > 
     <button type="button" class="btn btn-success"><span class="glyphicon glyphicon-thumbs-up"></span></button> 
     <button type="button" class="btn btn-danger"><span class="glyphicon glyphicon-thumbs-down"></span></button> 
     <button type="button" class="btn btn-link"><?php //insert comments ?> comments</button> 
     <button type="button" class="btn btn-link"><?php $user; ?></button> 
    </div> 
    </div> 
</div> 

getMemes.php

<?php 
//DATABASE 
$servername = "localhost"; 
$username = "root"; 
$password = ""; 

// Create connection 
$conn = new mysqli($servername, $username, $password); 
// Check connection 
if ($conn->connect_error) { 
    die("Connection failed: " . $conn->connect_error); 
} 

$sql = "SELECT title,image,user FROM websitephp.posts"; 
$result = $conn->query($sql); 

if($result->num_rows > 0) 
{ 
    while($row = $result->fetch_assoc()) 
    {   
    $title = $row["title"]; 
    $image = $row["image"]; 
    $user = $row['user']; 
    } 
} 
else 
{ 
    echo "0 results"; 
} 

$conn->close(); 

ich alle HTML innerhalb der while-Schleife Echo vermeiden wollte.

+0

Das wird nicht funktionieren, weil aus mehreren Gründen. Zuerst überschreiben Sie alle Ihre Variablen innerhalb der while-Schleife nach jedem neuen Eintrag. Mach es mit einem Array. Definieren Sie das Array auch außerhalb der while-Schleife, andernfalls befindet sich der Bereich nur innerhalb der while-Schleife und die Variablen sind außerhalb der Schleife nicht zugänglich. Oder setzen Sie einfach den HTML-Teil in die while-Schleife. Du brauchst sowieso eine Schleife in deinem HTML, sonst ist das nicht möglich. – Twinfriends

+0

aber wie kann ich das Array in der HTML-Schleife? –

+0

Durch einfaches Verwenden einer Schleife wäre beispielsweise eine "foreach" -Schleife hier sinnvoll einzusetzen. – Twinfriends

Antwort

-1

Sie müssen den HTML-Code des Posts innerhalb der while-Schleife wiedergeben, außerhalb dessen Geltungsbereich sind die Variablen nicht festgelegt.

<html> 
<head> 
... 
</head> 
<body> 

<!-- Your HTML up to your POSTS --> 

<?php 
//DATABASE 
$servername = "localhost"; 
$username = "root"; 
$password = ""; 

// Create connection 
$conn = new mysqli($servername, $username, $password); 
// Check connection 
if ($conn->connect_error) { 
    die("Connection failed: " . $conn->connect_error); 
} 

$sql = "SELECT title,image,user FROM websitephp.posts"; 
$result = $conn->query($sql); 

if($result->num_rows > 0) 
{ 
    while($row = $result->fetch_assoc()) 
    {   
     $title = $row["title"]; 
     $image = $row["image"]; 
     $user = $row['user']; 
     ?> 
     <div class="container-fluid"> 
     <div class="post"> 
      <?php include './php/getMemes.php'; ?>       
      <h1><?php echo $title; ?></h1>     
      <img src="data:image/gif;base64, .'<?php echo $image; ?>'" > 
      <div class="postRef" > 
       <button type="button" class="btn btn-success"><span class="glyphicon glyphicon-thumbs-up"></span></button> 
       <button type="button" class="btn btn-danger"><span class="glyphicon glyphicon-thumbs-down"></span></button> 
       <button type="button" class="btn btn-link"><?php //insert comments ?> comments</button> 
       <button type="button" class="btn btn-link"><?php echo $user; ?></button> 
      </div> 
     </div> 
    </div> 
    <?php 
    } 
} 
else 
{ 
    echo "0 results"; 
} 

$conn->close(); 

?> 

<!-- your HTML after your POSTS --> 
</body> 
</html> 
+0

Beachten Sie, letzte Zeile der Frage: ** Ich wollte vermeiden, den gesamten HTML-Code innerhalb der While-Schleife zu echoten. ** – RiggsFolly

+0

Zusätzliche Anmerkung: Nicht mein Downvote – RiggsFolly

+0

Nun, es ist in Ordnung. Aber die Daten geben mir immer noch null. Aber es hat funktioniert, bevor –

0

können Sie das Ergebnis in einem Array in Ihrem while-Schleife gesetzt speichern

<?php 
//DATABASE 
$servername = "localhost"; 
$username = "root"; 
$password = ""; 

// Create connection 
$conn = new mysqli($servername, $username, $password); 
// Check connection 
if ($conn->connect_error) { 
    die("Connection failed: " . $conn->connect_error); 
} 

$sql = "SELECT title,image,user FROM websitephp.posts"; 
$result = $conn->query($sql); 

if($result->num_rows > 0) 
{ 
    $dataarray = array(); 
    while($row = $result->fetch_assoc()) 
    {   
     $dataarray[] = $row; 

    } 
} 
else 
{ 
    echo "0 results"; 
} 

$conn->close(); 

?> 

als die foreach-Schleife Druck auf die Ergebnisse in Ihren HTML

<?php include './php/getMemes.php'; 
foreach($dataarray as $data){ ?> 
<div class="container-fluid"> 
<div class="post"> 
    <h1><?php echo $data['title']; ?></h1>     
    <img src="data:image/gif;base64, .'<?php echo $data['image']; ?>'" > 
    <div class="postRef" > 
     <button type="button" class="btn btn-success"><span class="glyphicon glyphicon-thumbs-up"></span></button> 
     <button type="button" class="btn btn-danger"><span class="glyphicon glyphicon-thumbs-down"></span></button> 
     <button type="button" class="btn btn-link"><?php //insert comments ?> comments</button> 
     <button type="button" class="btn btn-link"><?php echo $data['user']; ?></button> 
    </div> 

</div> 
</div> 
<?php } ?> 
+0

array_push mein Freund! (in Ihrer Zeit) – MikeSouto

+0

Keine Notwendigkeit für array_push. Ich habe bereits seine Antwort bearbeitet, muss nur paar überprüft werden. '$ dataarray [] = $ row;' ist völlig ausreichend. – Twinfriends

+0

@Twinfriends du hast Recht. – MSA

0

Sie einfach PHP verwenden können Code in HTML ohne Echo alles. Schließen Sie einfach mit php close Tag ?>, fügen Sie Ihre HTML ein, und Echo PHP-Code in PHP-Block, wo Sie drucken möchten. Alles drinnen während Schleife mit wiederholen bis Zustand beenden. Hier

ein Beispiel:

<?php 
$conn = new mysqli($dbHost, $dbUsername, $dbPassword, $dbName); 
$sql = "SELECT * FROM tbl_name where ..."; 
$result = $conn->query($sql); 
while($row = $result->fetch_assoc()) { ?> 

<div class="some_class">Title: <?php echo $row['title']; ?> </div> 
<?php } 
Verwandte Themen