Werbung

  1. Diese Seite verwendet Cookies. Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies. Weitere Informationen

Klick auf Feldeintrag?

Dieses Thema im Forum "SQL - Structured Query Language" wurde erstellt von Codingstar_2.0, 8. Dezember 2017.

  1. Codingstar_2.0

    Codingstar_2.0 New Member

    Hallo, ich brauche bei meinem vorhaben Hilfe! Ich habe schon im Internet viel gesucht und nichts gefunden.

    Es ist auch nicht so einfach.

    Per PHP:
    Aus der Tabelle persons soll aus in ihr befindlichen Spalten id, last_name, first_name, email nur last_name ausgegeben werden, aber jetzt kommts als anklickbare Links sollen alle Einträge in last_name, alfabetisch aufgelistet werden und bei klick soll dann der angeklickte Nachname in einem neuen Fenster mit den drei anderen Einträgen angezeigt werden!

    Ich wäre echt froh wenn ihr mir weiter helfen würdet!!
  2. coding-board

    coding-board Member

    Werbung
  3. Mat

    Mat Active Member c-b Experte

    Das ist ja so ziemlich der Hauptanwendungsfall für SQL, deswegen kann ich es mir nicht vorstellen, dass du nichts gefunden hast. Hast wahrscheinlich nicht die richtigen Suchbegriffe benutzt. ;)

    Ganz isoliert betrachtet, handelt es sich um 2 Abfragen:

    Übersicht:
    Code (SQL):
    Quelltext kopieren
    1. SELECT last_name FROM persons ORDER BY last_name ASC;
    Details:
    Code (SQL):
    Quelltext kopieren
    1. SELECT id, last_name, first_name, email FROM persons WHERE id = {HIER DIE ID VOM EINTRAG};
    Da du hier keine Details angegeben hast und wir im SQL-Bereich sind, ist es schwer zu wissen, was du genau willst. Welches PHP ist es? Welche Datenbanktreiber sind das? mysqli, pdo? Ist das nur privat zum Rumspielen oder muss das onlinetauglich sein? Hast du Erfahrung mit Objektorientiertem Programmieren?

    Wenn es nur ein ganz kleines Projekt zum Herumprobieren werden soll ganz ohne Klassen etc., dann kannst du das folgendermaßen machen:
    • db.php
      • Hier steckt die Datenbankverbindung und die Zugangsdaten etc.
      • Nimm mysqli, wenn du keine Erfahrung mit Objektorientierung hast
      • Diese datei kann in den anderen Dateien eingebunden werden, damit diese Abfragen tätigen können
    • liste.php
      • Hier werden einfach ohne Rücksicht auf Verluste alle Einträge aus persons angezeigt
      • Die rohe Abfrage wäre SELECT id, last_name FROM persons ORDER BY last_name ASC;
      • Die Nachnamen linken auf details.php?id={NUMMER}, also zum Beispiel Maffay mit der id 1234 linkt auf details.php?id=1234
    • details.php
      • Hier werden die Details zum jeweils angeklickten Eintrag angezeigt (also die restlichen Spalten)
      • Über den GET-Parameter "id" kann die Abfrage die zu suchende ID erhalten ($_GET['id'])
      • Die rohe Abfrage wäre SELECT id, last_name, first_name, email FROM persons WHERE ID = 1234;
    Wenn das Projekt noch wachsen oder online sein soll, rate ich von dieser einfachen Vorgehensweise ab.

    Arbeite am besten mal ein PHP-Tutorial durch. Zum Beispiel: http://www.w3big.com/de/php/php-mysql-intro.html
  4. Codingstar_2.0

    Codingstar_2.0 New Member

    Danke für die Antwort,..

    Meine Datenbank und die PHP Version, beruhen auf den Momentanen Standard von 1und1, darüber hinaus habe ich nicht ganz verstanden warum du so zerstreut hier Codes einbringst?

    Es sieht so aus dass was du gepostet hast erschwert meine Arbeit eher!

    Denn dass man mit SELECT auswählen und ORDER BY sortieren kann wusste ich schon.

    Des weiteren dass $_GET['id'] auf die ID verweist ist auch schon klar,..

    Wenn du mir helfen willst dann sag mir doch bitte, wie ich die ID ermittle von dem Nachnamen auf den ich geklickt habe, denn es soll ja keine feste ID sein.

    Wie man einen Link mit details.php?id={NUMMER-kommt hier $_GET['id'] rein?} auf das geklickte verweist weiß ich gar nicht?? Wo muss ich das als echo einfügen und wie?

    Wie du das oben beschreibst wird auch nicht auf den Nachnamen geklickt sondern auf die ID??
  5. Codingstar_2.0

    Codingstar_2.0 New Member

    Was ist damit:

    PHP:
    Quelltext kopieren
    1. echo "<a href=details.php?last_name={$_GET['last_name']}>$_GET['last_name']</a>";
    ??
  6. Codingstar_2.0

    Codingstar_2.0 New Member

    Da steht auch nicht wie aus einem Nachnamen ein Link wird!
  7. Mat

    Mat Active Member c-b Experte

    Zerstreute Frage -> Zerstreute Antwort

    Ist doch dir überlassen, was du aus der Antwort machst. Ich sage nur wie es ist. ^^

    In deinem Eröffnungsposting sah es aber aus, als bräuchtest du eine Auskunft wie das geht:
    Aus deinem Folgepost entnehme ich, dass es dir nicht klar ist:
    Die ID ist fest. Du musst sie nicht kennen, aber sie ist fest.. sie identifiziert jeden Datensatz eindeutig. Die ist zum Beispiel dafür da, dass es keine Probleme gibt, wenn ein Nachname doppelt vorkommt.

    Klar wird auf den Nachnamen geklickt. Wie der Link aussieht und wohin er tatsächlich verweist sind doch 2 unterschiedliche Dinge.

    Öh, ja..das ist ja auch ein allgemeines Tutorial. Weil ich nicht weiß, wie dein Wissensstand ist. Deswegen habe ich es doch verlinkt. ^^

    Da du 1und1 benutzt, gehe ich mal von standard-PHP7 und MySQL aus. Also müsste mysqli und PDO gehen, je nachdem, was dir lieber ist.

    Um auf deinen Folgepost und dein echo-Beispiel zu antworten:
    Wenn du die Daten abholst und in der Übersicht darstellst, hast du ja den last_name und dazu auch die passende id. Du kannst also innerhalb einer for-Schleife für jeden Datensatz einen Link erstellen nach dem Motto:
    PHP:
    Quelltext kopieren
    1. echo "<a href='details.php?id=$id' target='blank'>$last_name</a>";
    Vorausgesetzt, du hast jeweils id und last_name in den entsprechenden php-Variablen namens $id und $last_name abgespeichert. Wie man Ergebnisse in einer for-Schleife abarbeitet ist sonst auch als Beispiel in dem verlinkten Tutorial zu sehen.

    Klickt man nun auf einen Nachnamen in der Übersicht, öffnet sich eine neue Seite mit details.php?id=1234

    Diese Seite soll nun GET auslesen (also in diesem Fall den Kram aus der URL id=1234).

    Die Abfrage muss nun in MySQL in der Tabelle persons den Eintrag mit der ID 1234 finden (siehe zerstreuter Code).
    Codingstar_2.0 gefällt das.
  8. Codingstar_2.0

    Codingstar_2.0 New Member

    PHP:
    Quelltext kopieren
    1. // Nachdem eine Verbindung aufgebaut wurde
    2.  
    3.  
    4. $result = mysqli_query($link, "SELECT * FROM persons");
    5.  
    6. while($row = mysqli_fetch_array($result))
    7. {
    8.  
    9. $id = $row['Id'];
    10. $lastName = $row['last_name'];
    11.  
    12. echo ('<a href="details.php?id=' . $id . '">' . $lastName . '</a>');
    13. }
    14.  
    15.     // close connection
    16.  
    17.     mysqli_close($link);
    So meine index.php Datei steht,..

    komme aber mit dem details.php nicht weiter:


    -----

    Hab ich beim rumforschen gefunden, funktioniert leider nicht??

    PHP:
    Quelltext kopieren
    1. // Nachdem eine Verbindung aufgebaut wurde
    2.  
    3.  
    4. $id = $_REQUEST['Id'];
    5. $sql =mysql_query("select * from 'persons' where Id='".$id."'");
    6.  
    7.  
    8. $id = $_GET['Id'];
    9.  
    10. $result = mysqli_query($link, "SELECT * FROM persons WHERE Id = $id");
    11.  
    12.     while($row = mysql_fetch_array($sql))
    13.     {
    14. echo "<tr>";
    15.        echo "<td>" . $row['first_name'] . "</td>";
    16.        echo "<td>" . $row['last_name'] . "</td>";
    17.        echo "<td>" . $row['email'] . "</td>";
    18. echo "</tr>";
    19.     }
    20.     // close connection
    21.  
    22.     mysqli_close($link);
  9. Codingstar_2.0

    Codingstar_2.0 New Member

    Bin ich schon weiter mit gekommen!
  10. Codingstar_2.0

    Codingstar_2.0 New Member

    oder eher:

    PHP:
    Quelltext kopieren
    1.  
    2.  
    3. $id = $_GET['Id'];
    4.  
    5. $result = mysqli_query($link, "SELECT * FROM persons WHERE Id = $id");
    6.  
    7.     while($row = mysql_fetch_array($sql))
    8.     {
    9. echo "<tr>";
    10.        echo "<td>" . $row['first_name'] . "</td>";
    11.        echo "<td>" . $row['last_name'] . "</td>";
    12.        echo "<td>" . $row['email'] . "</td>";
    13. echo "</tr>";
    14.     }
    15.     // close connection
    16.  
    17.     mysqli_close($link);
    18.  
    19.     ?>
  11. Mat

    Mat Active Member c-b Experte

    Also $id=$_GET['id']; ist schon mal richtig. Denk aber daran, dass bei einer öffentlich zugänglichen Seite die User auch Quatsch in die URL schreiben könnten, also sollte $_GET['id'] bereinigt werden, damit du nicht Opfer eine MySQL-Injection wirst. Siehe zum Beispiel http://de2.php.net/manual/de/mysqli.real-escape-string.php . Allgemein wären aber prepared statements besser.

    $result=mysqli_query($link,"SELECT * FROM persons WHERE Id = $id"); ist auch in Ordnung, wenn $id bereinigt ist und $link die Verbindungsinformationen enthält (die könnten aber eigentlich einmalig in einer db.php festgelegt werden).

    while($row=mysql_fetch_array($sql)): Achtung, das ist die alte Erweiterung. Du bist eigentlich mit PHP-mysqli unterwegs, nicht mit PHP-mysql. Also stattdessen while($row=mysqli_fetch_array($result))

    Ansonsten sollte es erstmal funktionieren. Aber allgemein solltest du darauf achten, dass du id immer einheitlich schreibst. Du hast es teilweise klein, teilweise groß. Es gibt viele Fälle in denen Groß- und Kleinschreibung Auswirkungen hat. Und denk an die Sicherheit.
    Codingstar_2.0 gefällt das.
  12. Codingstar_2.0

    Codingstar_2.0 New Member

    Jetzt steht auch die details.php und ich bin Ready!

    PHP:
    Quelltext kopieren
    1.  
    2. // Nachdem eine Verbindung aufgebaut wurde
    3.  
    4. $id = $_GET['Id'];
    5. $result = mysqli_query($link, "SELECT Id, last_name, first_name, email FROM persons WHERE Id='".$id."'");
    6.  
    7.     while($row = mysqli_fetch_array($result))
    8.     {
    9. echo "<tr>";
    10.        echo "<td>" . $row['Id'] . "</td>";
    11.        echo "<td>" . $row['first_name'] . "</td>";
    12.        echo "<td>" . $row['last_name'] . "</td>";
    13.        echo "<td>" . $row['email'] . "</td>";
    14. echo "</tr>";
    15.     }
    16.     // close connection
    17.  
    18.     mysqli_close($link);
    19.  
    20.     ?>
  13. Codingstar_2.0

    Codingstar_2.0 New Member


    Danke dir aber habs geschafft!!
    Mat gefällt das.
  14. Mat

    Mat Active Member c-b Experte

    Ok. Denk noch an $id = mysqli_real_escape_string($_GET['id']); und dass die Abfrage nicht durchgeführt werden braucht, wenn !isset($_GET['id']);. Und dass, wenn das Projekt noch wachsen soll, du wahrscheinlich eine andere Struktur brauchen wirst, da es sonst unübersichtlich wird.

    PS: Editiere doch mal deine Beiträge, anstatt immer neue zu schreiben. Das hier sieht langsam aus wie ein Chat. ^^
Die Seite wird geladen...
Ähnliche Themen - Klick Feldeintrag Forum Datum
Bootstrap, h1 soll bei klick wechseln HTML und CSS 12. Februar 2018
Bild erkennen & mausklick darauf ausführen. Programmierer gesucht gegen bezahlung. Off Topic 30. September 2017
Webseite laden, textfeld ausfüllen und Button auf der Webseite klicken .NET Technology / C# 13. September 2017
Werbeklickzähler PRO Kunde HTML und CSS 3. Januar 2017
Nach Klick weiteres Menü öffnen, wie? .NET Technology / C# 11. November 2016