Verständnis Nachfrage, ID + MYSQL Feld für Linkverknüpfung

  • Hallo Zusammen,


    ich habe eine Frage zum Verständnis eines Problems welches ich gerne mit PHP und MySQl lösen will.

    Ich habe mehrere Felder auf einer HTML Seite die ich mittels PHP5 an eine MySQL Tabelle meines Hosters schicke und dort speichere, funktioniert prächtig.

    Wenn ich die Tabelle jetzt auslese würde ich gerne die Werte der ersten Spalte jeweils mit einem Link verknüpfen, der auf eine "Details Seite" zu diesem Eintrag der ersten Spalte verlinkt, die ich individuell anpassen will.

    Gelesen habe ich, dass man das am besten? mittels einer ID verknüpft, nur der Zusammenhang will mir nicht ganz klarwerden.

    Die Tabelle in der ich die Werte speichere besteht aus folgenden Spalten.
    ==========================
    Spalte 1 | Spalte 2 | Spalte 3 | Spalte 4 |
    ==========================
    ID | Wert1 | Wert2 | Wert3 |
    ==========================


    Ich würde mich darüber freuen wenn mir jemand einen Link sagen oder wenn die Zeit vorhanden ist, den Zusammenhang einmal erläutern könnte. Oder gibt es Alternativen?

    Vielen Dank und Gruß

    PHPDummy

  • Hi PHPDummy ,

    also, wenn du speicherst vermutlilch alle Inhalte in der gleichen Tabelle, nehmen wir ein ganz einfaches Beispiel, dann hast du in deinem Formular 2 Eingabefelder, nennen wir sie Überschrift und Text.

    Wenn du nun die beiden Sachen speicherst, dann machst du das ja in der SQL . In einer SQL solltest du jede Tabelle durchnummerieren, hier kommt die ID ins Spiel. Standardmäßig wird dafür die erste Spalte der Tabelle genommen, die Tabelle sähe also wie folgt aus:

    ID-Nummer | Überschrift |Text

    Die ID-Nummer ist autoincrement (mit 1 beginnnend selbst hochzählend, wenn sie nicht manuell gesetzt wird, selbst wenn ein Beitrag gelöscht wurde, wird automatisch hinter dem letzten eingefügten Element eingefügt.)

    Nun füllen wir das ganze mit Beispielen:

    ID-Nummer | Überschrift |Text

    1 | Titel 1 -groß |ganz viel text....

    2 | Titel 2 egel |ganz viel text....


    So jetzt willst du Platz sparen und holst dir aus der DB aber nur die ID und die Überschrift, so kannst du dann zum Beispiel sagen, dass du einer bestimmten $_GET oder $_POST variable dann den Wert mitgibst und so an die Daten rankommst:

    Ein Beispiel:

    <a href="index.php?id=1) Titel1 -groß </a>

    <a href="index.php?id=2) Titel2 egal </a>


    Jetzt wird also der Variable $_GET['id'] der jeweilige Wert mitgegeben, nun kannst du wenn der Link angeklickt (die Variable gesetzt) wurde einfach in der Tabelle suchen und sagen, hol mir die Daten mit dieser ID, so kannst du dann die Werte für genau eine Zeile holen.

    Hoffe das war nicht zu kompliziert erklärt, bin noch nicht so in der Übung darin ^^"

    Sämtlicher Code erhebt keinen Anspruch auf syntaktische Korrektheit geschweige denn Ausführbarkeit und ist für die Implementation außerhalb der Beispiele nicht geeignet.
    [Blockierte Grafik: http://www.snippr.de/social/img/logo.png]
    Kein Support für kommerzielle Scripts | Kein kostenloser Support via ICQ

  • so ganz will es (leider) noch nicht...

    Ich bin inzwischen soweit, dass ich mit dem folgenden Script :


    Result.php

    include ('db.inc.php');

    $abfrage = "SELECT * FROM tabelle ORDER by name";
    $ergebnis = mysql_query($abfrage);
    while($row = mysql_fetch_object($ergebnis)) {

    $webseite = "";
    if(trim($row->link) != "")
    {
    $webseite = "[url=''.$row->link.'']Webseite[/url]";
    }

    $flink = 'details.php?id=' . $row->id;

    echo "<table border=1>
    <colgroup>
    <col width='130px' span='2' />
    <col width='100px' span='1' />
    <col width='80px' span='1' />
    </colgroup>
    <tr>
    <td>[url='']$row->wert1[/url]</td>
    <td>$row->wert2</td>
    <td>$row->wert3</td>
    <td>$webseite </td>
    </tr>
    </table>

    ";
    }

    für die erste Tabellenspalte die ich ausgebe die ID mit der entsprechenden Zelle verknüpfen kann ( funktioniert auch so wie ich mir das vorstelle... )
    jetzt will ich mit einer einzigen details.php individuell auf den jeweiligen link reagieren und die details.php dynamisch anhand der id die ich ja in der url übergebe generieren und daten aus der tabelle ausgeben lassen.

    die url der Details.php sieht im moment so aus :
    http://www.webseite.de/ordner/name/details.php?id=13 (id=13, beispielhaft, ist je nach Zeile unterschiedlich )

    Es sollte doch möglich sein, die id die ja einzigartig ist, auf der Details.php in einer Variablen zu speichern und mittels eines Filters auf der Details.php ein Script zu generieren mit dem ich je nach id unterschiedliche Tabellenfelder in der DB auslese und anzeigen lasse auf der Details.php ( Ich bitte um Korrektur, falls ich hier danebenliege ^^ )

    Es würde mir sehr helfen wenn mir hier jemand einen Schubs in die richtige Richtung geben könnte.

    Vielen Dank

    PHPDummy

  • Aalso,
    zunächst machst du ne Connection auf, die erklär ich hier nicht extra.

    Dann schaust du erstma , ist die GET variable gesetzt

    if(!isset($_GET['id'])){

    Hole die Liste mit den Namen und Link...


    } else if(!sset($_GET['id'])){ // eigentlich ist das If überflüssig, aber machen wir es nochmal dazu

    Hole die Namen und detail von dem Objekt , wo die id = $_GET['id'] ist
    }


    ----
    aussehen könnte es also wie folgt:

    So das umbauen...

    Sämtlicher Code erhebt keinen Anspruch auf syntaktische Korrektheit geschweige denn Ausführbarkeit und ist für die Implementation außerhalb der Beispiele nicht geeignet.
    [Blockierte Grafik: http://www.snippr.de/social/img/logo.png]
    Kein Support für kommerzielle Scripts | Kein kostenloser Support via ICQ

  • K.Y.L.T.

    schon arg peinlich nicht selbst auf sowas zu kommen :(
    Dein Vorschlag hilft mir daher auf jedenfall Lichtjahre weiter :)
    Ich bin zuversichtlich damit ein großes Stück weiterzukommen.

    Aber nochmal, herzlichsten Dank!!!!!

    Gruß

    PHPDummy

  • wie sollte es aber anders sein, kaum hat man eine Baustelle geschlossen, da öffnen sich gleich 2 andere...

    Ich schreibe die Werte aus dem Formular in Tabelle1. Ich habe schon ein Script, mit dem ich die Felder der Tabelle auslesen und auch bearbeiten und wieder in der Tabelle speichern kann.

    Der nächste Schritt soll sein, dass ich mit den betätigen eines links diese Werte der z.b. Zeile XY ans Ende der Tabelle2 speichern kann.

    Die Feldnamen und Typen der Tabelle1 und Tabelle2 sind identisch um es erst mal vereinfacht realisieren zu können.

    Der SQL Befehl für das schreiben in eine Tabelle ist ja bekannterweise insert.

    und der Codeschnipsel ist :

    Code
    // Daten uebernehmen
     if ($transfer) {
     if ($submit) {
     $sql = "INSERT INTO tabelle2 (wert1,wert2,wert3,wert4,wert5,wert6,wert7,wert8) VALUES ('$wert1', '$wert2', '$wert3', '$wert4', '$wert5', '$wert6', '$wert7', '$wert8')";
     $result = mysql_query($sql,$db);
     echo "Deine Daten wurden gespeichert! Vielen Dank!
    
    
    ";
     }

    der Link :

    Code
    <td>[url='<? echo ''.$PHP_SELF.'?transfer='.$daten[id].'' ?>']übernehmen[/url]</td>

    "übernehmen" soll letztendlich das auslesen der entsprechenden ID Zeile aus Tabelle1 und schreiben der Werte in die Tabelle2 abwickeln...

    Ich bin mir aber nicht ganz darüber im klaren, ob ich das nicht besser in ein Array packe und dieses dann (wie, liegt noch etwas im dunkeln) dann an die Tabelle2 übergebe.

    Vielleicht hat jemand von euch noch einen Gedankenblitz oder Tip. Wenn ich den Code jedenfalls so lasse, gibts beim aufrufen der entsprechenden Seite einen Parser Error für die letzte Zeile, und dort steht "nur" </body></html>


    Edit : Die Frage hat sich erledigt, ich habe mir eine Lösung gestrickt die im Moment die gewünschten Anforderungen erfüllt.


    Viele Grüße

    PHPDummy