2017-07-27 3 views
0

Ich bin ein Anfänger in PHP. Ich entwickle gerade eine Website, wo Ich möchte im Bootstrap table die Daten anzeigen, die von 2 verschiedenen Tabellen in der MySQL Datenbank kommen. Die zwei Tabellen sind Client und Benutzeraccounts. Ich möchte ihre Daten in einer einzigen Zeile anzeigen. Hier ist, was ich habe jetzt: (Please Click to see the image) Wie man auf dem Foto sehen kann, mein Problem ist, Ich kann nur die Daten aus der Client Tabelle angezeigt werden, aber nicht von den Useraccounts Tabelle. Die leeren Zellen in der Bootstrap-Tabelle sollten die Daten sein, die von der useraccounts Tabelle kommen, aber ich konnte es nicht anzeigen.(PHP) Wie man Daten von 2 verschiedenen Tabellen in der Datenbank zu einer Bootstrap-Tabelle anzeigt


Hier ist mein Tisch für Client und Useraccounts:(tables) Please click the image

Ihre Hilfe wird sehr geschätzt. Hier ist mein Code:

<?php 
echo "<table style='cursor: pointer;' class='table table-hover table-striped 
table-bordered table-responsive ' >"; 
echo "<tr> 
    <th>Company Name</th> 
    <th>Contact Person</th> 
    <th>Client Address</th> 
    <th>Contact no.</th>  
    <th>E-mail</th> 
    <th>User Birthdate</th> 
    <th>User Mobile no.</th> 
    <th>Username</th> 
    <th>User Fistname</th> 
    <th>User Lastname</th> 
    <th>User Birthdate</th> 
    </tr>"; 

class TableRows extends RecursiveIteratorIterator { 
    function __construct($it) { 
    parent::__construct($it, self::LEAVES_ONLY); 
    } 

    function current() { 
    return "<td>" . parent::current(). "</td>"; 
    } 

    function beginChildren() { 
    echo "<tr class='table table-hover'>"; 
    } 

    function endChildren() { 
    echo "</tr>" . "\n"; 
    } 
} 

$servername = "mysql5013.hostbuddy.com"; 
$username = "*****_crb"; 
$password = "*****"; 
$dbname = "db_*****_crb"; 

try { 
//data from client table 
$conn = new PDO("mysql:host=$servername;dbname=$dbname", $username, 
$password); 
$conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); 
$stmt = $conn->prepare("SELECT cli_company_name, cli_contact_person, 
     cli_address, cli_contactno, cli_email FROM client WHERE status=1 "); 
$stmt->execute(); 

// set the resulting array to associative 
$result = $stmt->setFetchMode(PDO::FETCH_ASSOC); 

//data from useraccounts table 
$conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); 
$stmt2 = $conn->prepare("SELECT username, user_fname, user_lname, user_bdate 
      FROM useraccounts WHERE status=1 AND 
company_name='".$result['cli_company_name']."' "); 
$stmt2->execute(); 

// set the resulting array to associative 
$result2 = $stmt2->setFetchMode(PDO::FETCH_ASSOC); 

foreach(new TableRows(new RecursiveArrayIterator($stmt->fetchAll())) as 
$k=>$v) { 
    echo $v; 
} 

foreach(new TableRows(new RecursiveArrayIterator($stmt2->fetchAll())) as 
$l=>$w) { 
    echo $w; 
} 
} 
catch(PDOException $e) { 
echo "Error: " . $e->getMessage(); 
} 
$conn = null; 
echo "</table>"; 
?> 
+0

Klingt wie ein Job für .... [JOIN] (https://dev.mysql.com/doc/refman/5.7/en/join.html) s. –

+0

Gibt es eine Mapping-Spalte zwischen 'user'- und' client'-Tabellen? –

+0

@DarshanMehta Ich aktualisiere es bereits, da die Tabellen meiner Datenbank –

Antwort

0

Die Strukturtabelle in der Frage geteilt keine Beziehung zwischen den zwei Tabellen zeigen. Sie können eine JOIN Abfrage verwenden, um die Daten aus den 2 Tabellen abzurufen. Sie müssen jedoch eine Beziehung zwischen den Tabellen haben, um sie zu verbinden. Unten ist die Abfrage, die verwendet werden kann.

select c.cli_company_name, 
     c.cli_contact_person, 
     c.cli_address, 
     c.cli_contact_no, 
     c.cli_email, 
     ua.user_bdate, 
     ua.user_mobilenum, 
     ua.username, 
     ua.user_fname, 
     ua.user_lname 
from client c 
join useraccounts ua 
on  c.<some field> = ua.<matching field> 
where .... 

In dieser Abfrage die <some field> und <matching field> die Beziehung angeben (es PK eine Tabelle als FK in der anderen Tabelle sein könnte), die beim Verbinden der Tabellen helfen. Zusätzlich können Sie eine WHERE-Klausel anfügen, um die Daten bei Bedarf zu filtern.

Obwohl dies keine vollständige Antwort auf Ihre Frage bieten würde, sollte es Ihnen helfen, eine angemessene Anleitung zu geben, um voranzukommen.

Verwandte Themen