newit1
Goto Top

Button mit SQL Query

Hallo zusammen,

zurzeit habe ich auf meiner Testwebseite eine Tabelle, die mit Daten aus der Datenbank gefüttert wird (MYSQL)

Ich möchte hier gerne einen Button erstellen, auf dem eine beliebige SQL Abfrage hinterlegt ist.
Mein Gedanke ist, dass die Tabelle dadurch auf bestimmte Daten gefiltert wird. (je nachdem welcher Button angeklickt wird)

Link, der mir Hilfestellung gab.


Wie geht man am besten vor? Gibt es einfachere Möglichkeiten eine Tabelle zu filtern? Leider gingen meine Erfolge nicht über das erstellen des Buttons hinaus...bzw. das ausführen des Buttons war nie erfolgreich...
Ich hoffe auf ein paar Tipps.

Danke und bleibt gesund!


<table id="myTable">  
<thead>

<tr>
    <th>Name</th>
    <th>Geburtsdatum</th>
  </tr>	
	
</thead>
<tbody>
<tr>
	
<?php

$pdo = new PDO('mysql:host=localhost;dbname=test', 'testuser', 'password');  

$sql = "select name, gebdatum FROM personal";  


 foreach ($pdo->query($sql) as $row) {
    echo "<TR>";  
     echo "<TD>".$row['name']."</TD>";  
       echo "<TD>".$row['gebdatum']."</TD>"; 		   
    echo "</TR>";  
}
echo "</TABLE>";  

?>
	
</tr>
</tbody>
</table>

Content-Key: 645599

Url: https://administrator.de/contentid/645599

Printed on: April 19, 2024 at 21:04 o'clock

Member: StefanKittel
StefanKittel Jan 28, 2021 updated at 22:10:57 (UTC)
Goto Top
Hallo,

das ist eine Prinzip-Frage.
Dein PHP-Programm hat eine HTML-Ausgabe erzeugt und wurde beendet.

Es gibt nun 2 grundsätzliche Möglichkeiten:
1) Du rufst Deine Datei mit einem Parameter auf.
z.B. https://www.domain.de/liste.php?sort=name
Dieses wertest Du in Deinem Programm aus und änderst die SQL-Abfrage (ORDER BY).
Die Seite wird also immer neu erzeugt.

2) Du nutzt Javascript, z.B. AJAX, um mit einer API die Anzeige zu filtern oder neu zu erzeugen ohne die Seite neu zu laden.
Schau Dir auch mal JQuery Data-Tables an. Viele davon bringen sortieren und mehrseitige Ansichten von Haus aus mit.
Sowohl kostenfreie als auch kostenpflichtige.

Stefan
Member: newit1
newit1 Jan 29, 2021 updated at 12:29:53 (UTC)
Goto Top
@StefanKittel

danke für den Hinweis!!
Die Datei mit Parameter aufrufen klingt interessant.

Habe jetzt den Button eingefügt und mit einfachen Testparametern verlinkt.

Ich frage mich jedoch, wie ich den SQL Befehl dort jetzt eingebunden bekomme?
Aktuell kriege ich ja nur die Textausgabe "test".

<html>
<a href="https://testseite.de/liste?sort=&Eigenschaften=test"><button>Heute!</button></a>  
</html>


<html>
<body>
<?php echo filter_var($_GET["Eigenschaften"], FILTER_SANITIZE_STRING); ?>  
</body>
</html>



<table id="myTable">  
<thead>

<tr>
    <th>Name</th>
    <th>Geburtsdatum</th>
  </tr>	
	
</thead>
<tbody>
<tr>
	
</thead>
<tbody>
<tr>
	
<?php

$pdo = new PDO('mysql:host=localhost;dbname=test', 'testuser', 'password');  

$sql = "select name, gebdatum FROM personal";  

 foreach ($pdo->query($sql) as $row) {
    echo "<TR>";  
     echo "<TD>".$row['name']."</TD>";  
       echo "<TD>".$row['gebdatum']."</TD>"; 		   
    echo "</TR>";  
}
echo "</TABLE>";  

?>

</tr>
</tbody>
</table>
Member: StefanKittel
StefanKittel Jan 29, 2021 updated at 12:32:54 (UTC)
Goto Top
Dir fehlen ein paar Basics bezüglich PHP face-smile
https://www.w3schools.com/php/default.asp

im Prinzip so

switch (filter_var($_GET["Eigenschaften"], FILTER_SANITIZE_STRING))  
{
  case "name":  
    $sql = "select name, gebdatum FROM personal ORDER BY name";  
    break;
  case "gebdatum":  
    $sql = "select name, gebdatum FROM personal ORDER BY gebdatum";  
    break;
  default:
    die("Fehler #1");  
}
Member: newit1
newit1 Jan 29, 2021 at 13:01:41 (UTC)
Goto Top
Danke, ja da hast du nicht ganz unrecht!

Es funktioniert leider immer noch nicht wie ich es mir vorstelle.
Kriege immer den Fehler #1
Ich versuche mich da jetzt einzulesen.
Member: StefanKittel
Solution StefanKittel Jan 29, 2021 updated at 13:04:15 (UTC)
Goto Top
Der Aufruf müsste so sein:

https://domain.de/datei.php?Eigenschaften=name
https://domain.de/datei.php?Eigenschaften=gebdatum

Und ich würde dies so ändern.
Dann wird ohne Parameter die Liste nicht sortiert.

switch (filter_var($_GET["Eigenschaften"], FILTER_SANITIZE_STRING))  
{
  case "name":  
    $sql = "select name, gebdatum FROM personal ORDER BY name";  
    break;
  case "gebdatum":  
    $sql = "select name, gebdatum FROM personal ORDER BY gebdatum";  
    break;
  default:
    $sql = "select name, gebdatum FROM personal";  
    break;
}