Ankündigung

Einklappen
Keine Ankündigung bisher.

Abfrage mehrerer Tabellen per PHP (Code vereinfachen)

Einklappen

Neue Werbung 2019

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

  • Abfrage mehrerer Tabellen per PHP (Code vereinfachen)

    Morgen Leutz...

    Ich hoffe dass ich das ganze jetzt in das richtige Forum reingesetzt habe, weil es sowohl MySQL aber auch PHP beinhaltet, ich aber nicht genau weiss ob ich bei PHP oder MySQL was ändern muss um das Problem zu lösen...

    Ich habe ein Eingabe-Formular gemacht, in dem 3 Felder aus anderen Tabellen ausgelesen werden sollen, die dann zusammen in einer andere Tabelle geschrieben werden sollen (ID), welche sich die Infos dann später wieder aus den anderen Tabellen holen (zum besseren Verständnis habe ich mal das ER-Diagramm der DB raufgeladen

    ER-Diagram: http://www.dieternuhrfanclub.de/proj...bank-Plan5.gif

    Das Problem ist folgendes:

    Das ist ein Eingabeformular für Kurse. Um Fehler zu vermeiden und damit Daten nicht ständig neu eingegeben werden müssen kann der User verschieden Teile vorher aus einem DropDown-Menü auswählen, welche aus den jeweiligen Tabellen ausgelesen werden und von denen später die ID in die Tabelle KURSE geschrieben wird. Das wären hier Kurs-Kategorie (kurs_kat), Kursbeschreibung (kursbeschreibung) und der Dozent (dozenten).

    Das Problem ist jetzt, das ich für jedes DropDown-Menu eine eigene Abfrage gestartet. Habe das auch mit einer zentralen Abfrage versucht, aber da bekam ich immer doppelte Ergebnisse die ich auch mit DISTINCT nicht weg bekam.

    Das Ganze funzt jetzt so wie ich es habe. Jetzt wollte ich gerne wissen ob jemand eine "elegantere" Lösung kennt, damit das ganze etwas übersichtlicher und kleiner wird.

    Ich habe euch unten einmal den Code eingefügt, ihr könnt euch das ganze aber auch einmal unter

    http://www.dieternuhrfanclub.de/proj...abe_kurs_b.php

    anschauen.

    Wäre für jede Hilfe dankbar...

    Lapje


    PHP-Code:
    <body>



    <?php


        
    //$kurs_beschreibung_id=1;
        //$kurs_dozent_id=1;

        
    if (isset($gesendet))
        {
        
            
    mysql_connect();
            
    mysql_select_db("schulungen");
            
            
    //if ($kurs_name == "")
            //    echo "Es ist ein Fehler aufgetreten

    ";
            
            //else
            //{
            
    $mysql_eingabe = "INSERT kurse";
            
    $mysql_eingabe .= "(kurs_namekurs_kat_idkurs_anfangkurs_endekurs_anmeldeschlusskurs_zeitenkurs_gebuehrkurs_bemerkungkurs_beschreibung_idkurs_dozent_id)";
            
    $mysql_eingabe .= "VALUES ('$kurs_name''$kurs_kat_id_send''$kurs_anfang''$kurs_ende''$kurs_anmeldeschluss''$kurs_zeiten''$kurs_gebuehr''$kurs_bemerkung''$kurs_beschreibung_id_send''$kurs_dozent_id_send')";
            
            mysql_query(
    $mysql_eingabe);
            
            
    $num = mysql_affected_rows();
            
            
                
            
            if (
    $num>0)
                {
                
                echo "
    1 Datensatz wurde hinzugefügt

    ";
                }
            else
                echo "
    Ein Fehler ist aufgetreten.

    ";
            }
            //}
    ?>
            
            
        
            
        
        


    Bitte geben Sie einen vollständigen Datensatz ein: </p>


    </p>
    <form action="
    eingabe_kurs.php" method="post">
        
    Kursname: <input name="
    kurs_name" size="50"> 



        <?php
        
            mysql_connect();
            mysql_select_db("
    schulungen");
            
            
    $mysql_abfrage  = "SELECT DISTINCT kurs_katkurs_kat_id FROM kurs_kat ORDER BY kurs_kat"; 
            
            
    $mysql_ergebnis=mysql_query($mysql_abfrage);
            
            
    $num = mysql_num_rows($mysql_ergebnis);
                    
            mysql_close();
            
        ?>

    Kurs-Kategorie:     <select name="
    kurs_kat_id_send">

        <?php
                while (
    $datensatz = mysql_fetch_assoc($mysql_ergebnis))
                {
                            echo "
    <option value='" . $datensatz["kurs_kat_id"] . "'>" . $datensatz["kurs_kat"] . "</option>";                
                }
        ?>

    </select>




    Kurs-Anfang: <input name="
    kurs_anfang" size="50"> 


    Kurs-Ende: <input name="
    kurs_ende" size="50"> 


    Kurs-Anmeldeschluss: <input name="
    kurs_anmeldeschluss" size="50"> 


    Kurs-Zeiten: <input name="
    kurs_zeiten" size="50"> 


    Kurs-Gebühr: <input name="
    kurs_gebuehr" size="50"> 


    Kurs-Bemerkung: <input name="
    kurs_bemerkung" size="50"> 



        <?php
        
            mysql_connect();
            mysql_select_db("
    schulungen");
            
            
    $mysql_abfrage  = "SELECT DISTINCT kurs_name_kurzkurs_beschreibung_id FROM kursbeschreibung ORDER BY kurs_name_kurz"; 
            
            
    $mysql_ergebnis=mysql_query($mysql_abfrage);
            
            
    $num = mysql_num_rows($mysql_ergebnis);
            
            mysql_close();
            
        ?>

    Kurs-Beschreibung:     <select name="
    kurs_beschreibung_id_send">

        <?php
                while (
    $datensatz = mysql_fetch_assoc($mysql_ergebnis))
                {
                            echo "
    <option value='" . $datensatz["kurs_beschreibung_id"] . "'>" . $datensatz["kurs_name_kurz"] . "</option>";                
                }
        ?>

    </select>




        <?php
        
            mysql_connect();
            mysql_select_db("
    schulungen");
            
            
    $mysql_abfrage  = "SELECT DISTINCT dozent_iddozent_namedozent_vorname FROM dozenten ORDER BY dozent_name"; 
            
            
    $mysql_ergebnis=mysql_query($mysql_abfrage);
            
            
    $num = mysql_num_rows($mysql_ergebnis);
            
            mysql_close();
            
        ?>

    Kurs-Kategorie:     <select name="
    kurs_dozent_id_send">

        <?php
                while (
    $datensatz = mysql_fetch_assoc($mysql_ergebnis))
                {
                            echo "
    <option value='" . $datensatz["dozent_id"] . "'>" . $datensatz["dozent_vorname"] . " " . $datensatz["dozent_name"] . "</option>";                
                }
        ?>

    </select>



            
    <input type="
    submit" name="gesendet">
    <input type="
    reset">
        
            
    </form>
    </body>
    [/php]


  • #2
    Auf den ersten Blick fällt auf, dass dein Script register_globals=on vorraussetzt, somit ist es indiskutabel.

    Siehe: http://www.php.net/manual/de/security.globals.php

    Gruß
    phpfan

    Kommentar


    • #3
      mmhh..also auf meinem Webspace ist es soweit ich weiss auf OFF gestellt und es funzt trotzdem...

      aber wenn ich dass so mache wie in dem Link beschrieben, muss ich da nicht mit Sessions arbeiten???

      Und zur eigentlichen Frage ist Dir nichts eingefallen ?

      trotzdem dank

      Lapje

      Kommentar


      • #4
        Zitat von Lapje
        mmhh..also auf meinem Webspace ist es soweit ich weiss auf OFF gestellt und es funzt trotzdem...
        Das glaube ich nicht

        Zitat von Lapje
        aber wenn ich dass so mache wie in dem Link beschrieben, muss ich da nicht mit Sessions arbeiten???
        Nein, wieso?

        Thema Optimierung: Was sollen die endlosen mysql_connect und mysql_select_db. Einmal am Anfang des Scriptes reicht. Und wenn du $num sowieso nicht nutzt, kannst du dir mysql_num_rows auch sparen. Zeilen mit weit über 200 Zeichen halte ich für unlesbar.
        PHP-Code:
        $mysql_eingabe "INSERT kurse 
                          ( kurs_name, kurs_kat_id, kurs_anfang, kurs_ende,
                            kurs_anmeldeschluss, kurs_zeiten, kurs_gebuehr,
                            kurs_bemerkung, kurs_beschreibung_id, kurs_dozent_id
                          )
                          VALUES
                          ( '
        $kurs_name', '$kurs_kat_id_send', '$kurs_anfang',
                            '
        $kurs_ende', '$kurs_anmeldeschluss', '$kurs_zeiten',
                            '
        $kurs_gebuehr', '$kurs_bemerkung', '$kurs_beschreibung_id_send',
                            '
        $kurs_dozent_id_send'
                          )"

        Gruß
        phpfan

        Kommentar


        • #5
          deswegen ja meine Frage...

          Ich habe es mit einer Abfrage versucht. Dann habe ich jedesmal alles 3-4 mal aufgelistet bekommen.

          So wie es jetzt ist ist es sicherlich kein "eleganter" Stil, aber es funzt zumindest schon mal...wie gesatt, daher die Frage was ich anders machen kann...es kann auch sein dass ich die Tabellen einfach falsch verknüpft habe...

          Zu den Session:

          Habe mal gelesen dass man bei Sessions auch mit Cookies arbeitet, daher dachte ich das, kann aber auch falsch gelegen haben (was mich nicht üebrraschen würde.. )

          Kommentar

          Lädt...
          X