Der folgende Code ist mit einer lokalen Datenbank verbunden, die Kundeninformationen enthält. Zunächst sollte die Seite den Namen und das Land des Kunden anzeigen, aber nach dem Klicken auf den Namen weitere Informationen für diesen bestimmten Kunden anzeigen.JavaScript-Funktion innerhalb von PHP, um weitere Informationen zu zeigen (Datenbankabfrage)
Das Problem mit diesem Code unten ist, dass es immer nur die ersten Kundeninformationen anzeigen wird, egal welcher Name angeklickt wird. Kann jemand sehen, wo ich vielleicht falsch liege? Muss ich für jede Schaltfläche (Kundenname) eine ID erstellen? Bedenken Sie, dass sich viele Kunden in der Datenbank befinden und ich denke, dass eine ID für jede Datenbank sehr schwierig zu implementieren wäre, insbesondere wenn die Datenbank geändert wird.
<DOCTYPE html!>
<html>
<head>
<link rel="stylesheet" type="text/css" href="a3.css">
</head>
<body>
<div class="nav">
<?php include 'nav.php';
?>
</div>
<?php include 'dbconfig.php';
$sql ='SELECT * FROM `customers` ORDER BY `customers`.`country` ASC';
$q = $conn->query($sql);
$q->setFetchMode(PDO::FETCH_ASSOC);
?>
<div class = "main">
<table>
<?php while ($r = $q->fetch()): ?>
<tr>
<td><button onclick = "showCustomer();"/><?php echo ($r['customerName'])?></td>
<td><?php echo ($r['country'])?></td>
</tr>
<tr id ="extra" style="display:none">
<td><?php echo ($r['customerNumber'])?></td>
<td><?php echo ($r['contactLastName'])?></td>
<td ><?php echo ($r['contactFirstName'])?></td>
<td><?php echo ($r['phone'])?></td>
<td><?php echo ($r['addressLine1'])?></td>
<td><?php echo ($r['addressLine2'])?></td>
<td><?php echo ($r['city'])?></td>
<td><?php echo ($r['state'])?></td>
<td><?php echo ($r['postalCode'])?></td>
<td><?php echo ($r['salesRepEmployeeNumber'])?> </td>
<td><?php echo ($r['creditLimit'])?></td>
</tr>
<?php endwhile; ?>
</table>
</div>
<div class="foot">
<?php include 'foot.php'; ?>
</div>
<script>
function showCustomer() {
var showForm=document.getElementById('extra');
if (showForm.style.display="none") {
showForm.style.display ="";
alert('ok');
console.log(showForm);
}
else if (showForm.style.display=""){
showForm.style.display ="none";
}
}
</script>
</body>
</html>
</DOCTYPE>
Eine ID muss eindeutig sein. Generieren Sie eine eindeutige ID für jedes versteckte Element und übergeben Sie die eindeutige ID an die JavaScript-Funktion. –
Ihre '' '
Also sollte ich die Tabelle außerhalb der While-Schleife erstellen? Ich habe über 50 Kunden. würde das nicht bedeuten, für jeden eine Tabelle zu erstellen? – Shauna
Antwort
Alle Ihre
<tr>
die gleicheid="extra"
haben. Wie vorgeschlagen, benötigen Sie für jede eine andere "ID", und zwar: Ich habe eine Variable$i
(Zeile 18) erstellt, die direkt nach der while (Zeile 20) als Parameter im Aufruf fürshowCustomer
eingefügt wird (Zeile 23), eingefügt am Ende der ID "extra" (Zeile 27), schließlich unten, wo die FunktionshowCustomer
deklariert ist, wird der Parameter "index" am Ende der ID "extra" eingefügt.Quelle
2016-04-19 17:58:31
Vielen Dank, es hat perfekt funktioniert. – Shauna
Verwandte Themen