php.de

Zurück   php.de > Webentwicklung > PHP Einsteiger > PHP Tipps 2007

 
 
LinkBack Themen-Optionen Thema bewerten
Alt 18.12.2005, 11:48  
Gast
 
Beiträge: n/a
Standard 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]
 
Sponsor Mitteilung
PHP Code Flüsterer

Registriert seit: 21.08.2005
Beiträge: 4682
PHP-Kenntnisse:
Fortgeschritten

Alt 18.12.2005, 12:16  
Gast
 
Beiträge: n/a
Standard

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
 
Alt 18.12.2005, 12:23  
Gast
 
Beiträge: n/a
Standard

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
 
Alt 18.12.2005, 12:26  
Gast
 
Beiträge: n/a
Standard

Zitat:
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:
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
 
Alt 18.12.2005, 12:34  
Gast
 
Beiträge: n/a
Standard

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.. )
 
 


Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an
Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Abfrage mehrere Tabellen SteiniKeule Datenbanken 14 18.04.2008 19:57
Abfrage richtig? Vereinfachen? cycap Datenbanken 3 30.08.2007 13:38
abfrage über mehrere tabellen mit einer bedingung DarkThunder PHP Tipps 2007 6 15.04.2007 17:13
Mysql Abfrage über 2 Tabellen mit Verknüpfung zuner 3. Datenbanken 2 26.10.2004 16:36
Abfrage über 2 tabellen mit NOT IN Datenbanken 3 25.10.2004 16:49
problem mit einer abfrage über mehrere tabellen! PHP Tipps 2004 1 12.10.2004 18:54
Abfrage zweier Tabellen mit COUNT() funktion Datenbanken 23 20.09.2004 22:13
Abfrage über 3 Tabellen Datenbanken 3 20.09.2004 08:08
Abfrage zweier Tabellen funzt net richtig Datenbanken 1 17.09.2004 12:53
Abfrage über 2 Tabellen / Join agrajag Datenbanken 2 14.09.2004 23:05
[Erledigt] Abfrage von drei Tabellen und Rückgabe einer ID Datenbanken 6 27.08.2004 09:36
2 Tabellen 1 Abfrage nilsfeld Datenbanken 6 11.08.2004 11:18
Abfrage über 3 Tabellen PHP Tipps 2004 3 31.07.2004 22:34
SQL Abfrage aus mehreren Tabellen PHP Tipps 2004 7 26.07.2004 16:56
Abfrage von 2 Tabellen Datenbanken 6 21.07.2004 12:15

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
php code vereinfachen, tabelle abfrage mit option, phpcode tabelle, tabelle per php, form action= mehrer tabellen, verschiedene mysql query per html dropdown, php code abfragen, php while if tabelle ausgewählt, er diagramm vereinfachen, mysql_abfrage aus 3 tabellen keine doppelten, formular abfrage php vereinfachen, mysql where oder vereinfachen, php abfrage, [url] code vereinfacht, php codierungabfrage, mehrere tabellen in einem php script abfragen und in tabellen einfügen, mysql_select_db vermeiden, php mysql vereinfachen, issets vereinfachen, php code abfrage

Alle Zeitangaben in WEZ +1. Es ist jetzt 01:20 Uhr.




Powered by vBulletin® Version 3.7.2 (Deutsch)
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0
Aprilia-Forum, Aquaristik-Forum, Liebeskummer-Forum, Zierfisch-Forum, Geizkragen-Forum

Creative Commons License
Dieser Inhalt ist unter einer Creative Commons-Lizenz lizenziert.