+ Antworten
Ergebnis 1 bis 7 von 7

Thema: mySQL/PHP Programmiercode verbessern

  1. #1
    TP-Insider dieter99 ist auf einem guten Weg Avatar von dieter99
    Registriert seit
    Dec 2001
    Ort
    Oberfranken
    Beiträge
    719

    mySQL/PHP Programmiercode verbessern

    Gehen wir mal von den Fall aus das meine Tabelle „Inhalt“ aus 5 Spalten besteht und das diese Tabelle bereits mit 200 Datensätzen gefüllt ist:

    Tabelle „Inhalt“:
    Id --- Firmenname --- Kundennr --- Ort --- Rechnungsnr.
    1 ----- Adidas -------- 14485434 --- -HA ---- 9847545432
    2 ----- Puma ---------- 24385666 --- -HA ---- 1313546568
    3
    .
    .
    .
    200


    Die Ausgabe aller Datensätze realisiere ich mit eine WHILE Schleife:

    $result=mysql_query ("SELECT * FROM inhalt ..... ") or die ("....");
    while ($daten=mysql_fetch_array($result))
    {



    }


    Soweit kein Thema. Ich möchte jetzt aber die Datenbank anders strukturieren. Der Datensätze „Firmenname“ möchte ich ein einer eigenen Tabelle speichern:

    Tabelle „Firmenname“

    Firmen_id – Firmenname
    1000 ----------- Adidas
    1001 ----------- Puma
    1002
    1003

    Tabelle „Inhalt“:

    Id --- Firmenname --- Kundennr --- Ort --- Rechnungsnr.
    1 ----- 1000 -------- 14485434 --- -HA ---- 9847545432
    2 ----- 1001 -------- 24385666 --- -HA ---- 1313546568
    3
    .
    .
    .
    200



    Wenn ich nun die Datensätze ausgeben lassen will, dann muss ich 2 WHILE Schleifen ineinander verschachteln (die firmen_id soll ja durch den firmennamen ersetzt werden):


    $result=mysql_query ("SELECT * FROM inhalt ..... ") or die ("....");
    while ($daten=mysql_fetch_array($result))
    {
    $kunde = $daten[1];
    $result2=mysql_query ("SELECT * FROM firmenname WHERE id=’$kunde’") or die ("....");
    while ($daten2=mysql_fetch_array($result2))
    {
    ...
    ...
    ...


    Meine Frage lautet nun: gibt es eine bessere Lösung als das ineinander verschachteln von 2 WHILE Schleifen?

  2. #2
    TP-Moderator Adromir lebt für das TP und seine User Adromir lebt für das TP und seine User Adromir lebt für das TP und seine User Adromir lebt für das TP und seine User Adromir lebt für das TP und seine User Adromir lebt für das TP und seine User Adromir lebt für das TP und seine User Adromir lebt für das TP und seine User Avatar von Adromir
    Registriert seit
    Jun 2004
    Ort
    Hannover
    Beiträge
    4.806
    Ich würde es so versuchen:
    SELECT * FROM inhalt, Firmenname ON Firmen_id = Firmenname
    Je größer der Deppenfaktor, desto gigantischer das Bescheidwissergefühl
    -Dieter Nuhr

  3. #3
    TP-Special Mod steffenk lebt für das TP und seine User steffenk lebt für das TP und seine User steffenk lebt für das TP und seine User steffenk lebt für das TP und seine User steffenk lebt für das TP und seine User steffenk lebt für das TP und seine User steffenk lebt für das TP und seine User steffenk lebt für das TP und seine User steffenk lebt für das TP und seine User Avatar von steffenk
    Registriert seit
    Feb 2005
    Ort
    Haan / NRW
    Beiträge
    12.869
    besser:

    Code:
    SELECT inhalt.*, Firmenname.Firmenname FROM inhalt i
    LEFT JOIN Firmenname f ON f.Firmen_id = i.Firmenname
    nur dumm, das das Feld Firmenname doppelt vorhanden ist - ich würds umbenennen


    TYPO3 · MySQLDumper · dislabs
    ·
    manche Mühlen mahlen schneller ...
    "Ich habe Rücken"
    Horst Schlämmer


  4. #4
    TP-Supporter Driver ist auf einem guten Weg
    Registriert seit
    Feb 2005
    Beiträge
    365
    Zitat Zitat von St@eff.en
    besser:

    Code:
    SELECT inhalt.*, Firmenname.Firmenname FROM inhalt i
    LEFT JOIN Firmenname f ON f.Firmen_id = i.Firmenname
    nur dumm, das das Feld Firmenname doppelt vorhanden ist - ich würds umbenennen
    Das i nach inhalt, bzw. das f nach Firmenname, kürz das den Tabellennamen für den Rest des Query's ab?

  5. #5
    TP-Special Mod steffenk lebt für das TP und seine User steffenk lebt für das TP und seine User steffenk lebt für das TP und seine User steffenk lebt für das TP und seine User steffenk lebt für das TP und seine User steffenk lebt für das TP und seine User steffenk lebt für das TP und seine User steffenk lebt für das TP und seine User steffenk lebt für das TP und seine User Avatar von steffenk
    Registriert seit
    Feb 2005
    Ort
    Haan / NRW
    Beiträge
    12.869
    jep - aber vorsicht, geht nicht mehr im where und order, aber ideal für die ON-Zuweisungen

    "inhalt i" ist das selbe wie "inhalt as i"


    TYPO3 · MySQLDumper · dislabs
    ·
    manche Mühlen mahlen schneller ...
    "Ich habe Rücken"
    Horst Schlämmer


  6. #6
    TP-Supporter Driver ist auf einem guten Weg
    Registriert seit
    Feb 2005
    Beiträge
    365
    Cool, das Hilft mir
    Und mit Backticks dann ganz normal `i`?!

  7. #7
    TP-Special Mod steffenk lebt für das TP und seine User steffenk lebt für das TP und seine User steffenk lebt für das TP und seine User steffenk lebt für das TP und seine User steffenk lebt für das TP und seine User steffenk lebt für das TP und seine User steffenk lebt für das TP und seine User steffenk lebt für das TP und seine User steffenk lebt für das TP und seine User Avatar von steffenk
    Registriert seit
    Feb 2005
    Ort
    Haan / NRW
    Beiträge
    12.869
    Backticks sind nie verkehrt - damit beugt man der Problematik "Schlüsselworte" vor. Ist man sich sicher, das es keine Schlüsselworte sind, kann man Backticks auch weglassen (wird auch oft hauptsächlich aus Bequemlichkeit gemacht).


    TYPO3 · MySQLDumper · dislabs
    ·
    manche Mühlen mahlen schneller ...
    "Ich habe Rücken"
    Horst Schlämmer


+ Antworten

Aktive Benutzer

Aktive Benutzer

Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)

     

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51