Ankündigung

Einklappen
Keine Ankündigung bisher.

ID als Link (href) - Probleme bei der Unterseite

Einklappen

Neue Werbung 2019

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • ID als Link (href) - Probleme bei der Unterseite

    Guten Abend zusammen

    Ich habe vor ein paar Tagen mit php angefangen, da ich mit CSS und HTML begonnen habe, komme ich natürlich um php nicht herum^^

    Ich arbeite versuchsweise daran ein Telefonbuch zu erstellen - über die ID als Link soll man auf die Unterseite gelangen und dort den gesamten Eintrag angezeigt bekommen - ich habe lange gesucht um alleine den Link zu realisieren, allerdings scheitert es jetzt daran die ID an die Unterseite zu übergeben, um so lediglich den relevanten Eintrag (z.B. von der 3. ID) anzeigen zu lassen..

    Ich habe schon einiges ausprobiert und recherchiert, 2 Tage hat es nun "verschluckt" und dennoch gelange ich immer wieder zu meiner Grundform, weil ich schlicht nicht weiterkomme...

    Vielleicht noch zur Information: ich arbeite mit phpmyadmin und habe dort auch die Datenbank angelegt mit den Einträgen, die IDs werden alle korrekt angezeigt und sind als Link klickbar - leiten auf die detail.php mit der entsprechenden ID weiter.
    Ich bin bisher soweit, dass ich die ID mit Get der (URL?) entnehme und dann auf diese ID selektieren, allerdings hat das bisher nicht geklappt.


    Hier habe ich die "Hauptseite":
    (natürlich ist die Datenbankverbindung hergestellt, klappt auch wunderbar)

    PHP-Code:
    <?php
    $sql 
    "SELECT id FROM telefonbuch";

    $db_erg mysqli_query$db_link$sql );
    if ( ! 
    $db_erg )
    {
    die(
    'Ungültige Abfrage: ' mysqli_error());
    }

    echo 
    '<table border="1">';
    while (
    $zeile mysqli_fetch_array$db_ergMYSQLI_ASSOC))
    {
    echo 
    "<tr>";
    echo 
    "<td><a href='detail.php?id=".$zeile['id']."'> ".$zeile['id']." </a></td>";
    echo 
    "</tr>";
    }
    echo 
    "</table>";

    mysqli_free_result$db_erg );
    ?>

    Die Unterseite als detail.php?id=x (Zahl je nach Auswahl)
    (quasi der selbe Code, weil ich immer wieder zur Grundform zurück gelange...)

    PHP-Code:
    <?php
    $sql 
    "SELECT id,name,nummer FROM telefonbuch";

    $db_erg mysqli_query$db_link$sql );
    if ( ! 
    $db_erg )
    {
    die(
    'Ungültige Abfrage: ' mysqli_error());
    }

    echo 
    '<table border="1">';
    while (
    $zeile mysqli_fetch_array$db_ergMYSQLI_ASSOC))
    {
    echo 
    "<tr>";
    echo 
    "<td>"$zeile['id'] . "</td>";
    echo 
    "<td>"$zeile['name'] . "</td>";
    echo 
    "<td>"$zeile['nummer'] . "</td>";

    echo 
    "</tr>";
    }
    echo 
    "</table>";

    mysqli_free_result$db_erg );
    ?>
    Kann mir jemand sagen, wie ich das Problem löse oder zumindest durch welchen Bereich ich zu einem vernünftigen Ergebnis komme?
    Ich bin mittlerweile sogar überfragt, wonach ich noch suchen soll...

    Derzeit zeigt er einfach alle Einträge aus der Datenbank.

  • #2
    Schau dir mal WHERE an bzw. lerne SQL-Grundlagen...
    sorry, shift-taste kaputt

    Kommentar


    • #3
      Danke dir vielmals, habe direkt etwas hilfreiches gefunden, was mir promt weiterhilft
      Grundlagen im Internet zu erlernen ist gar nicht so einfach, oft gelangt man auf Seiten, die einem entweder Halbwissen vermitteln, nicht mehr auf den neuesten Standards basieren oder ähnliches - dann frage ich lieber kurz hier nach, bevor ich erneut irgendeinen quatsch ausprobiere, der im Endeffekt nicht weiterhilft und mich viel Zeit kostet - dazu ist ein Forum doch da

      Kommentar


      • #4
        Die Unterseite als detail.php?id=x (Zahl je nach Auswahl)
        An den Parameter kommst du mt $_GET['id']

        Nach dem du den Wert hast kannst du ihn in deine SQL Abfrage einbauen.
        Du solltest aber darauf achten dass du dir keine Sicherheitslücke einbaust.
        Daher
        PHP-Code:
        $id $_GET['id'];
        $id mysqli_real_escape_string($db_link$id); 
        mal so in groben Zügen.

        PHP-Code:
        $sql "SELECT `id`, `name`, `nummer` FROM `telefonbuch` WHERE `id`= $id "
        http://php.net/manual/en/mysqli.real-escape-string.php

        Kommentar


        • #5
          Vielen lieben Dank protestix, bin es schon direkt am ausprobieren

          Es funktioniert einwandfrei, vielen lieben dank!

          Kommentar


          • #6
            Zitat von Pasi162 Beitrag anzeigen
            Danke dir vielmals, habe direkt etwas hilfreiches gefunden, was mir promt weiterhilft
            Grundlagen im Internet zu erlernen ist gar nicht so einfach, oft gelangt man auf Seiten, die einem entweder Halbwissen vermitteln, nicht mehr auf den neuesten Standards basieren oder ähnliches - dann frage ich lieber kurz hier nach, bevor ich erneut irgendeinen quatsch ausprobiere, der im Endeffekt nicht weiterhilft und mich viel Zeit kostet - dazu ist ein Forum doch da
            Tatsächlich ist es richtig, dass im Internet viele Dinge veraltet sind - das wird auch nicht besser, ganz im Gegenteil.
            Allerdings findet man, wenn man sucht, alle Informationen im Internet. Und dass Dinge nicht weiterhelfen oder du irgendeinen Quatsch ausprobierst, gehört dazu - nur so merkst du überhaupt, dass es Quatsch ist.

            Ansonsten kann ich dir noch das "MySQL-Handbuch" vom Rheinwerk Verlag ans Herz legen. Hat zwar seinen Preis, aber die Bücher vom Rheinwerk Verlag sind wirklich gut.

            Kommentar


            • #7
              Zitat von protestix Beitrag anzeigen
              An den Parameter kommst du mt $_GET['id']

              Nach dem du den Wert hast kannst du ihn in deine SQL Abfrage einbauen.
              Du solltest aber darauf achten dass du dir keine Sicherheitslücke einbaust.
              Daher
              PHP-Code:
              $id $_GET['id'];
              $id mysqli_real_escape_string($db_link$id); 
              mal so in groben Zügen.

              PHP-Code:
              $sql "SELECT `id`, `name`, `nummer` FROM `telefonbuch` WHERE `id`= $id "
              http://php.net/manual/en/mysqli.real-escape-string.php
              Hat eine Injection-Lücke. Aus dem Grund am besten gleich Prepared Statements verwenden, damit solche Irrtümer gar nicht passieren können.

              Kommentar


              • #8
                Zitat von PrimaryFlorian Beitrag anzeigen

                Tatsächlich ist es richtig, dass im Internet viele Dinge veraltet sind - das wird auch nicht besser, ganz im Gegenteil.
                Die kostenlosen Handbücher sind immer aktuell.
                PHP
                Mysql

                Zitat von PrimaryFlorian Beitrag anzeigen
                Ansonsten kann ich dir noch das "MySQL-Handbuch" vom ... ans Herz legen. Hat zwar seinen Preis, aber die Bücher vom ... sind wirklich gut.
                Sehr erhellend, wie viele Bücher kennst du denn, dass du einen Vergleich anstellen kannst?

                Erster Beitrag, und in mir kommt das Gefühl auf, dass es sich um Schleichwerbung handeln könnte.


                Kommentar


                • #9
                  Zitat von PrimaryFlorian Beitrag anzeigen
                  Ansonsten kann ich dir noch das "MySQL-Handbuch" vom Rheinwerk Verlag ans Herz legen. Hat zwar seinen Preis, aber die Bücher vom Rheinwerk Verlag sind wirklich gut.
                  Und kaum auf den Markt und schon wieder veraltet.. keine Suchfunktion, Querverweise etc etc... Aber muss eh jeder selbst für sich entscheiden.
                  The string "()()" is not palindrom but the String "())(" is.

                  Debugging: Finde DEINE Fehler selbst! | Gegen Probleme beim E-Mail-Versand | Sicheres Passwort-Hashing | Includes niemals ohne __DIR__
                  PHP.de Wissenssammlung | Kein Support per PN

                  Kommentar


                  • #10
                    Zitat von PrimaryFlorian Beitrag anzeigen

                    Tatsächlich ist es richtig, dass im Internet viele Dinge veraltet sind - das wird auch nicht besser, ganz im Gegenteil.
                    Allerdings findet man, wenn man sucht, alle Informationen im Internet. Und dass Dinge nicht weiterhelfen oder du irgendeinen Quatsch ausprobierst, gehört dazu - nur so merkst du überhaupt, dass es Quatsch ist.

                    Ansonsten kann ich dir noch das "MySQL-Handbuch" vom Rheinwerk Verlag ans Herz legen. Hat zwar seinen Preis, aber die Bücher vom Rheinwerk Verlag sind wirklich gut.
                    Der oben gezeigt php "Schnipsel" ist tatsächlich der einzige, den ich für meine nächsten Projekte benötige, daher habe ich mich noch dafür gescheut größere Anschaffungen zu tätigen, da es mir vor allem um HTML und CSS geht

                    Zitat von hellbringer
                    Hat eine Injection-Lücke. Aus dem Grund am besten gleich Prepared Statements verwenden, damit solche Irrtümer gar nicht passieren können.
                    Danke für den Tipp, dass wird aber wohl erst interessant für mich, sobald ich aus dem localhost heraustreten möchte - ich behalte es im Hinterkopf

                    Zitat von protestix Beitrag anzeigen

                    Die kostenlosen Handbücher sind immer aktuell.
                    PHP
                    Mysql
                    Dankeschön, da werde ich zukünftig reinschauen und hoffentlich fündig werden

                    Kommentar


                    • #11
                      Zitat von Pasi162 Beitrag anzeigen
                      Danke für den Tipp, dass wird aber wohl erst interessant für mich, sobald ich aus dem localhost heraustreten möchte - ich behalte es im Hinterkopf
                      Wenn dir fehlerhafter Code egal ist, dann ja.

                      Sowas sollte eigentlich ganz vorne stehen und nicht im Hinterfkopf.

                      Und warum sollte man absichtlich und bei vollem Bewusstsein fehlerhaften Code schreiben? Wo ist hier der "Vorteil"? Es gibt keine Zeitersparnis und es besteht nur die Gefahr, dass darauf vergessen wird.

                      Kommentar


                      • #12
                        PHP-Code:
                        $id $_GET['id']; 
                        andern in
                        PHP-Code:
                        $id = (int)$_GET['id']; 
                        Dann ist die Sicherheitslücke auch dicht.

                        Kommentar


                        • #13
                          Gut, dann beschäftige ich mich mal gleich mit Injection-Lücken, ist ja doch ein wichtiges Sicherheitsthema, da hast du recht

                          Danke dir vielmals protestix, du hast mir sehr weitergeholfen!

                          Kommentar

                          Lädt...
                          X