• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

SQL-Ausgabe als anklickbaren Link

Bourbon

Mitglied
Hallo Leute,

ich hätte mal wieder eine Frage.

Meine erstellte SQL-Ausgabe funktioniert dank "scbawik" einwandfrei und sogar mit mehreren Joins.
Jetzt versuche ich mich an nachfolgenden Sachverhalt, wozu ich leider kein Tutorial oder Ähnliches finde, was mir die Richtung weisen kann.

Die SQL-Abfrage zeigt mir alle "Gruppen" eines Nutzers (bspw. User-ID = 2) an. Jetzt sollen diese "Gruppen" anklickbare Links sein und im neuen Fenster den Inhalt dieser "Gruppe" zeigen.

Um die Gruppen überhaupt als Link zu erstellen, muss ich ja sowieso schon mal eine weitere Datei mit wiederum einer separaten SQL-Abfrage erstellen. Da ist ja logisch.
Aber woher weis dann die bspw. gruppeninfo.php (SQL-Abfrage der Infos der Gruppe X) welche Gruppe der Nutzer in der anderen Datei angeklickt hat? Ich denke, es hat etwas mit Sessions zu tun, konnte aber noch nichts finden.

Und wie wandel ich das überhaupt in einen Link um.

Vorab schon mal wieder vielen Dank für eure Beiträge!
 
Werbung:
Hallo,

eine einfach möglichkeit das per get zu übertragen.
Die links sehen dann so aus
Code:
<a herf="xyz.php?userid=2">Gruppe 2</a>
Das auslesen in der Zieldatei ist dann so
Code:
if(isset($_GET['userid'])) $userid=$_GET['userid'];
so hast $userid für deine sql abfrage die aber mir php weiter prüfen solltest ob zahl und escapen musst das in der SQL natürlich auch bei mysqli wäre das so
PHP:
mysqli_real_escape_string($mysqli, $userid)

Cheffchen
 
Hey Cheffchen,

vielen Dank für deine Hilfe.

Ich möchte in dem Fall aber nicht die User-ID weitergeben, sondern die ID der jeweiligen Gruppe.

Beispiel:
Nutzer mit ID = 2 ist Mitglied in den Gruppe 1, 3, 5 und 6.
Wenn er die Datei aufruft, erscheinen die Gruppen 1,3,5,6 untereinander mit Beschreibung und Datum.
Jetzt klickt Nutzer auf Gruppe 3 ( ID = 3) und die gruppeninfo.php wird mittels Link aufgerufen.

Also soll immer die ID der jeweiligen Gruppe weitergegeben werden.
 
Werbung:
Hey Cheffchen,

vielen Dank für deine Hilfe.

Ich möchte in dem Fall aber nicht die User-ID weitergeben, sondern die ID der jeweiligen Gruppe.

Beispiel:
Nutzer mit ID = 2 ist Mitglied in den Gruppe 1, 3, 5 und 6.
Wenn er die Datei aufruft, erscheinen die Gruppen 1,3,5,6 untereinander mit Beschreibung und Datum.
Jetzt klickt Nutzer auf Gruppe 3 ( ID = 3) und die gruppeninfo.php wird mittels Link aufgerufen.

Also soll immer die ID der jeweiligen Gruppe weitergegeben werden.

Ist ja egal ob du die userID oder groupID weitergibst? Funktioniert gleich.
PHP:
<a href="gruppeninfo.php?groupid=<?php echo $user['groupid'] ?>">Gruppe 2</a>

In gruppeninfo.php
PHP:
$groupid = $_GET['groupid'];
 
Und wie muss das aussehen, dass das in meiner Ausgabe funktioniert?

Hier mal der Code:
PHP:
while($stmt->fetch()) {
    echo "<tr>\n\t<td>"
       . htmlspecialchars($group_ID)
       . "</td>\n\t<td>"
       . htmlspecialchars($user_ID)
       . "</td>\n\t<td>"
       . htmlspecialchars($surname)
       . "</td>\n\t<td>"
       . htmlspecialchars($status)
       . "</td>\n</tr>\n";
    }

Und dann ist mir gerade noch eine Sache in der Ausgabe aufgefallen.
Die Spalten sind nicht wie oben im Code angegeben angeordnet, sondern so, wie ich sie im SELECT aufgezählt habe.

Erklärung, was ich meine:

Soll soll es aussehen:
group_ID | user_ID | surname | status
So sieht es aus:
group_ID | user_ID | status | surname

Hier der Code:
PHP:
if($stmt = $mysqli->prepare(
          "SELECT
            gm.group_ID,
            gm.user_ID,
            gm.status,
            ac.surname
           FROM
            groupmembers AS gm
           LEFT JOIN
            account AS ac
            ON (gm.user_ID = ac.userid)
                 WHERE
            gm.group_ID LIKE ?
            ")) {
 
Werbung:
Und wie muss das aussehen, dass das in meiner Ausgabe funktioniert?

Hier mal der Code:
PHP:
while($stmt->fetch()) {
    echo "<tr>\n\t<td>"
       . htmlspecialchars($group_ID)
       . "</td>\n\t<td>"
       . htmlspecialchars($user_ID)
       . "</td>\n\t<td>"
       . htmlspecialchars($surname)
       . "</td>\n\t<td>"
       . htmlspecialchars($status)
       . "</td>\n</tr>\n";
    }

Und dann ist mir gerade noch eine Sache in der Ausgabe aufgefallen.
Die Spalten sind nicht wie oben im Code angegeben angeordnet, sondern so, wie ich sie im SELECT aufgezählt habe.

Erklärung, was ich meine:

Soll soll es aussehen:
group_ID | user_ID | surname | status
So sieht es aus:
group_ID | user_ID | status | surname

Hier der Code:
PHP:
if($stmt = $mysqli->prepare(
          "SELECT
            gm.group_ID,
            gm.user_ID,
            gm.status,
            ac.surname
           FROM
            groupmembers AS gm
           LEFT JOIN
            account AS ac
            ON (gm.user_ID = ac.userid)
                 WHERE
            gm.group_ID LIKE ?
            ")) {

Also das sind schon wirkliche Basics…
Links sind ja so ziemlich das erste was man in HTML lernt.

PHP:
while($stmt->fetch()) {
    echo "<tr>\n\t<td><a href='groupinfo.php?groupid=".$group_ID."'>"
       . htmlspecialchars($group_ID)
       . "</a></td>\n\t<td>"
       . htmlspecialchars($user_ID)
       . "</td>\n\t<td>"
       . htmlspecialchars($surname)
       . "</td>\n\t<td>"
       . htmlspecialchars($status)
       . "</td>\n</tr>\n";
    }

Zum anderen Problem - wie sieht die Reihenfolge in $stmt->bind_result aus? ;)
 
Ja, das stimmt, Links sind schon Bacis, aber bei dynamischen Abschnitten mit SQL-Abfragen habe ich so etwas noch nie gemacht :rolleyes:

Ja und genau das ist das seltsame bei bind_result:
Die ist die Reihenfolge genauso, wie ich sie will und anders als bei SELECT. Das hatte ich ja auch schon kontrolliert.

Vielen Dank nochmal für deine Hilfe :)
 
Ja, das stimmt, Links sind schon Bacis, aber bei dynamischen Abschnitten mit SQL-Abfragen habe ich so etwas noch nie gemacht :rolleyes:

Ja und genau das ist das seltsame bei bind_result:
Die ist die Reihenfolge genauso, wie ich sie will und anders als bei SELECT. Das hatte ich ja auch schon kontrolliert.

Vielen Dank nochmal für deine Hilfe :)

Die Reihenfolge muss aber gleich sein wie im SELECT.
 
Werbung:
Gibt es da irgendwie eine Möglichkeit, die Reihenfolge unabhängig vom SELECT zu bestimmen?

Und noch eine Frage: Kann ich irgendwie die ganze Zeile in einen Link umwandeln? Beispiel in dem es als Button ausgeben lasse oder so? So dass ich nicht unbedingt auf die Group_ID klicken muss.

Danke nochmal für eure Hilfe! Inzwischen setzt ein gewisser Lerneffekt ein. Durch probieren konnte ich die Gruppenbezeichnung als Link ausgeben, der die group_ID weitergibt, so dass die Nummer nicht angezeigt werden muss. :) Es geht bergauf!
 
Gibt es da irgendwie eine Möglichkeit, die Reihenfolge unabhängig vom SELECT zu bestimmen?

http://php.net/manual/en/mysqli-result.fetch-array.php
Das gibt dir ein assoziatives Array zurück.

Mit der PHP Doku wirst du dich noch anfreunden müssen.

Und noch eine Frage: Kann ich irgendwie die ganze Zeile in einen Link umwandeln? Beispiel in dem es als Button ausgeben lasse oder so? So dass ich nicht unbedingt auf die Group_ID klicken muss.

Dafür müsstest du javascript verwenden, da es nicht valide wäre eine ganze table row in einem Link zu wrappen.

Wenn du einen "Button" als Link einfügen willst, musst einfach mal danach googlen wie man das macht.
Das sind wirklich einfache HTML-Aufgaben, die du selber lösen können musst.
Ob das HTML nun dynamisch generiert oder hardcoded wird, ist völlig egal. Das Ergebnis ist immer pures HTML. Und nur darum geht es.
 
http://php.net/manual/en/mysqli-result.fetch-array.php
Das gibt dir ein assoziatives Array zurück.
Mit der PHP Doku wirst du dich noch anfreunden müssen.
Ja die hatte ich bereits mehrfach auf dem Bildschirm. Meist fehlen mir die nötigen Schlagwörter.

Dafür müsstest du javascript verwenden, da es nicht valide wäre eine ganze table row in einem Link zu wrappen.

Wenn du einen "Button" als Link einfügen willst, musst einfach mal danach googlen wie man das macht.
Das sind wirklich einfache HTML-Aufgaben, die du selber lösen können musst.
Ob das HTML nun dynamisch generiert oder hardcoded wird, ist völlig egal. Das Ergebnis ist immer pures HTML. Und nur darum geht es.
Also ein Button als Link einfügen kann ich, das ist wirklich einfach und deswegen will ich euch auch nicht "belästigen". Meine Frage ging eher in die obere Richtung. JavaScript also ... damit hatte ich bisher noch gar nicht bzw. nur minimal zu tun.

Habe es jetzt anders gelöst:
Alle Informationen zur Gruppe in der Gruppenübersicht entfernt und nur die Beschreibung stehen lassen. Es reicht ja, wenn man die Infos auf der Seite der jeweiligen Gruppe sieht.

Beste Dank nochmal an euch beide. Es sollte schon mehr als nur ein "gefällt mir"-Button geben!
 
Werbung:
Also ein Button als Link einfügen kann ich, das ist wirklich einfach und deswegen will ich euch auch nicht "belästigen". Meine Frage ging eher in die obere Richtung. JavaScript also ... damit hatte ich bisher noch gar nicht bzw. nur minimal zu tun.

Habe es jetzt anders gelöst:
Alle Informationen zur Gruppe in der Gruppenübersicht entfernt und nur die Beschreibung stehen lassen. Es reicht ja, wenn man die Infos auf der Seite der jeweiligen Gruppe sieht.

Beste Dank nochmal an euch beide. Es sollte schon mehr als nur ein "gefällt mir"-Button geben!

Belästigung ist es keine - immerhin verteilst du genug "Gefällt mir" :)
Eher ein guter Rat. Erst wenn du dir selbst Helfen kannst, kannst du auch richtig programmieren.
Ich persönlich weiß vielleicht 90% von dem was ich Tag brauche auswendig. Den Rest such ich mir zusammen.

Eine einfache Javascript-Lösung wäre:

HTML:
<tr onclick="window.location.href='gruppeninfo.php?groupid=<?php echo $groupID ?>'">
 
Den Rat nehm ich mir auch zu Herzen, ich versuch auch alles so weit es geht, mir selbst beizubringen und lerne ja auch mit jedem Schritt etwas dazu.
Durch das viele probieren kann ich inzwischen auch einige "fertige" Schnipsel aus dem Internet verstehen und selbst anpassen.
Leider fehlt an manchen Stellen noch das Verständnis, warum das gerade nicht geht bzw. warum es anderer Stelle funktioniert.

So sah jetzt der alte Code aus:
PHP:
echo "<table border='1'>\n";
  while($stmt->fetch()) {
    echo "<tr>\n\t<td><a href='db_gruppeninfo.php?group_ID=".$group_ID."'>"
       . htmlspecialchars($description)
       . "</td>\n</tr>\n";
    }

Und so der Neue:
PHP:
echo "<table border='1'>\n";
  while($stmt->fetch()) {
    echo "<tr onclick="window.location.href='gruppeninfo.php?groupid=<?php echo $groupID ?>'">\n\t<td>'>"
       . htmlspecialchars($description)
       . "</td>\n</tr>\n";
    }

Aber es funktioniert nicht. Ergo: ich hab die Logik dahinter noch nicht verstanden... argh
 
Den Rat nehm ich mir auch zu Herzen, ich versuch auch alles so weit es geht, mir selbst beizubringen und lerne ja auch mit jedem Schritt etwas dazu.
Durch das viele probieren kann ich inzwischen auch einige "fertige" Schnipsel aus dem Internet verstehen und selbst anpassen.
Leider fehlt an manchen Stellen noch das Verständnis, warum das gerade nicht geht bzw. warum es anderer Stelle funktioniert.

So sah jetzt der alte Code aus:
PHP:
echo "<table border='1'>\n";
  while($stmt->fetch()) {
    echo "<tr>\n\t<td><a href='db_gruppeninfo.php?group_ID=".$group_ID."'>"
       . htmlspecialchars($description)
       . "</td>\n</tr>\n";
    }

Und so der Neue:
PHP:
echo "<table border='1'>\n";
  while($stmt->fetch()) {
    echo "<tr onclick="window.location.href='gruppeninfo.php?groupid=<?php echo $groupID ?>'">\n\t<td>'>"
       . htmlspecialchars($description)
       . "</td>\n</tr>\n";
    }

Aber es funktioniert nicht. Ergo: ich hab die Logik dahinter noch nicht verstanden... argh

Also erstmal habe ich es natürlich nicht so geschrieben dass du es nur noch einfügen musst. Dateiname, Variablen, etc musst du natürlich an deinen Code anpassen.
Ansonsten fällt mir nur ein simpler HTML Syntax Fehler auf:
Code:
<td>'>

Schau dir am besten den fertigen HTML-Quellcode an, dann findest du den Fehler leichter.
 
Zuletzt bearbeitet:
Werbung:
Ich muss jetzt mal das alte Thema nochmal hoch holen.
Ich lese gerade das Buch "AJAX für Dummies" und kämpfe mich langsam voran.
Die Möglichkeiten mit JavaScript sind ja einfach nur genial.
Aber da muss ich auch gleich mal was fragen.

Bisher läuft das ja so ab:
SQL-Abfrage wird als Link mit ID ausgeben, ich klicke drauf und die Folgeseite bekommt mittels GET die ID.
Wie funktioniert das bei AJAX? Kann ich da auch einfach die Abfrage so als Link ausgeben lassen (bin noch nicht bei dem Datenbank-Kapitel und das wird auch noch etwas dauern, bin trotzdem neugierig).
 
Ähm, das ist jetzt wirklich nicht böse gemeint, aber bei deinen bisherigen Fragen war immer klar, dass dir die erforderlichen Grundlagen in Sachen PHP fehlen. Warum um alles in der Welt fängst du jetzt auch noch mit Ajax an? Lerne doch erst mal PHP und wenn das damit einigermaßen funktioniert, kannst du dich immer noch mit AJAX beschäftigen.
 
Ich war noch nie der Lerntyp, der sich erst ein Thema komplett reindrückt und dann das andere anfängt. Bisher habe ich mir immer genau das beigebracht, was ich brauchte. Gut, bei PHP hat das bisher noch nicht so richtig geklappt, ich habe aber noch Hoffnung.
Ausserdem hab ich ja auch das Buch PHP 5.5 und MySQL 5.6, welches ich parallel dazu abarbeite. Je nach Laune.
Ergo: Bin gerade dabei die Grundlagen zu lernen bzw. zu vertiefen.

Und nun zu meiner Frage:
Ich das auch mit AJAX möglich? (ich will nicht wissen wie, sondern nur ob)
 
Werbung:
Ich das auch mit AJAX möglich? (ich will nicht wissen wie, sondern nur ob)
Na klar, im Prinzip passiert dabei fast das gleiche. Nur das eben nicht der Browser die Seite neu lädt wie bei einem Link, sondern Javascript den Seitenkontext holt und in die aktuelle Seite einbaut.
 
Zurück
Oben