php.de

Zurück   php.de > Webentwicklung > PHP Einsteiger

PHP Einsteiger PHP Problemlösungen für Spracheinsteiger
Archive: 2004, 2004/2, 2005, 2005/2, 2006, 2007, 2008, 2009, 2010,

Antwort
 
LinkBack Themen-Optionen Thema bewerten
Alt 04.01.2012, 17:01  
Neuer Benutzer
 
Registriert seit: 08.11.2011
Beiträge: 21
PHP-Kenntnisse:
Anfänger
Wuestenfuchs befindet sich auf einem aufstrebenden Ast
Standard Dropdown-Menü aus Datenbank + Datensätze verknüpfen

Hallo,

ich würde gerne ein Dropdown-Menü mit Einträgen aus meiner
Datenbank erstellen. Als Vorlage habe ich das hier genommen:

http://www.phpforum.de/archiv_44016_..._anzeigen.html

Nur will das bei mir nicht klappen. Hier mein Code im Gesamten:
PHP-Code:
<?php
// Zur Datenbank verbinden
mysql_connect("localhost","root","") or die("Fehler bei der Verbindung zur Datenbank.");
mysql_select_db("klassenarbeiten") or die("Fehler beim Öffnen der DB.");

// Anfrage um Fach aus Tabelle faecher auszulesen und in Variable zu schreiben
$fachname mysql_query("SELECT fach FROM faecher");

// Abfrage durchführen
$fach mysql_query('$fachname') or die("Anfrage nicht erfolgreich");

// Zählt die Anzahl der Zeilen in der Tabelle
$anzahl mysql_num_rows($fach);
?>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>Datensaetze eintragen</title>
<meta name="editor" content="html-editor phase 5">
</head>
<body text="#000000" bgcolor="#FFFFFF" link="#FF0000" alink="#FF0000" vlink="#FF0000" background="bg.jpg">
<p>&nbsp;</p>
<p>&nbsp;</p>

<p align="center">Fach:
<select name="Fach" size="1">
<?php
while ($adr mysql_fetch_array($schueler)){
?>
<option>
<?=$adr['Fach']?>
</option>
<?php
}
echo 
"</select>";
?>

</body>
</html>
Nun in der Zeile
PHP-Code:
// Abfrage durchführen
$fach mysql_query($fachname) or die("Anfrage nicht erfolgreich"); 
Kam der Fehler, dass ein String erwaerer wird, deswegen habe ich
$fachname durch '$fachname' ersetzt und jetzt kommt die Fehlermeldung
Anfrage nicht erfolgreich. MySQL Error gibt auch nichts aus, und da ich
diese Zeile generell nicht verstehe (die Fächernamen werden doch schon
im Befehl davor ausgewählt?), brache ich Hilfe.

Dann hätte ich noch eine Frage. Ich würde gerne Datensätze verknüpfen.
Und zwar habe ich bisher 3 Tabellen (Fächer, Themen, Unterthemen) und
das sollen dann 3 Dropdown-Menüs geben. Wenn man dann z.B. das
Fach Mathe wählt, sollen automatisch in dem anderen Menü die dazugehörogen Themen zur Auswahl stehen. Dann nochmal mit Unterthema und am Ende kann man dort dann eine Frage z.B. für eine
Klassenarbeit eintragen.

Ich habe gelesen, dass das mit JOINS gehen soll, habe auch hier ein gutes
Tutorial gefunden:
http://aktuell.de.selfhtml.org/artik...nbanken/joins/
Aber ich glaube ich habe das Prinzip noch nicht ganz verstanden. Wie mache
ich das am besten? Jedes Fach,Thema und Unterthema habe ich bereits
mit einer ID versehen, wenn ich das richtig verstanden habe würde
das ja dann irgendwie so aussehen, wenn ich die Fragen mit den
dazugehörigen Optionen anzeigen möchte, als Beispiel Mathe.
Hier muss man jetzt ja 3 Werte vergleichen, geht das einfach wie
z.B. in C++ mit einer & Verknüpfung?

SELECT fach
FROM faecher.fach
WHERE faecher.id = themen.id

Danke schonmal im voraus


[MOD: Wiederhergestellt]

Geändert von Wuestenfuchs (11.01.2012 um 14:25 Uhr).
Wuestenfuchs ist offline   Mit Zitat antworten
Sponsor Mitteilung
PHP Code Flüsterer

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

Alt 04.01.2012, 17:30  
Erfahrener Benutzer
 
Registriert seit: 07.12.2009
Beiträge: 843
PHP-Kenntnisse:
Fortgeschritten
chorn befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Zitat von Wuestenfuchs Beitrag anzeigen
da ich
diese Zeile generell nicht verstehe
Die wird auch sonst keiner verstehen, die ist nämlich Quatsch. Es ist auch nicht klar, was du überhaupt erreichen willst

Code:
$fachname...
<select name="Fach"...
while( ... $schueler ...
.. = $adr['Fach'] ...
was soll das bedeuten? Wo kommt den $schueler her? Und was soll '$fachname' für ein SQL-Statement sein? "Als Vorlage genommen" heisst das copy&paste? Ich sehe nicht, dass du MySQL in PHP verstanden hast, sieh dir PDO an.

Geändert von chorn (04.01.2012 um 17:34 Uhr).
chorn ist offline   Mit Zitat antworten
Alt 04.01.2012, 18:06  
Erfahrener Benutzer
 
Registriert seit: 22.07.2004
Beiträge: 226
DirkHo befindet sich auf einem aufstrebenden Ast
Standard

Hallo!


Zitat:
Zitat von Wuestenfuchs Beitrag anzeigen
PHP-Code:
<?php

  
// Anfrage um Fach aus Tabelle faecher auszulesen und in Variable zu schreiben
  
$fachname mysql_query("SELECT fach FROM faecher");

  
// Abfrage durchführen
  
$fach mysql_query('$fachname') or die("Anfrage nicht erfolgreich");
Kam der Fehler, dass ein String erwaerer wird, deswegen habe ich
$fachname durch '$fachname' ersetzt und jetzt kommt die Fehlermeldung
Anfrage nicht erfolgreich. MySQL Error gibt auch nichts aus, und da ich
diese Zeile generell nicht verstehe (die Fächernamen werden doch schon
im Befehl davor ausgewählt?), brache ich Hilfe.
mysql_query liefert eine "resource" zurück (http://de3.php.net/manual/de/function.mysql-query.php) und erwartet als Parameter einen String -> daher kommt deine Fehlermeldung, weil du den Rückgabewert aus mysql_query() erneut in mysql_query packst.

Warum du das machst? K.A. Das einmalige aufrufen von mysql_query('SELECT...'); reicht. Auf dem oben geposteten Link findest du Beispiele, wie man die Funktion verwendet.

Zitat:
Zitat von Wuestenfuchs Beitrag anzeigen
Dann hätte ich noch eine Frage. Ich würde gerne Datensätze verknüpfen.
Und zwar habe ich bisher 3 Tabellen (Fächer, Themen, Unterthemen) und
das sollen dann 3 Dropdown-Menüs geben. Wenn man dann z.B. das
Fach Mathe wählt, sollen automatisch in dem anderen Menü die dazugehörogen Themen zur Auswahl stehen. Dann nochmal mit Unterthema und am Ende kann man dort dann eine Frage z.B. für eine
Klassenarbeit eintragen.

Ich habe gelesen, dass das mit JOINS gehen soll, habe auch hier ein gutes
Mit JOINS hat das in dem Fall nichts zu tun. Du musst ja immer die entsprechenden Themen und Unterthemen zu dem jeweils gewählten Fach nachladen. Du könntest zwar alles vorladen und es dann per JavaScript austauschen, aber besser ist ein AJAX-Request von der Benutzeroberfläche ans PHP der das ausgewählte Fach beinhaltet und dann die entsprechenden Themen zurückliefert bzw. wenn ein Thema gewählt wurde die entsprechenden Unterthemen zurückliefert.

Schau dir mal das Thema an, da findest du etwas in der Art:

http://www.php.de/php-tipps-2009/502...-dropdown.html (DropDown abhängig von anderem DropDown)

Grüße,

Dirk
DirkHo ist offline   Mit Zitat antworten
Alt 06.01.2012, 19:38  
Neuer Benutzer
 
Registriert seit: 08.11.2011
Beiträge: 21
PHP-Kenntnisse:
Anfänger
Wuestenfuchs befindet sich auf einem aufstrebenden Ast
Standard

Hallo,

danke erstmal für die Hilfe.
Also dass die Fächer aus der Tabelle in dem Dropdownmenü
angezeigt werden ging soweit. Nun wollte ich das ja erstmal mit einer
2. Tabelle weiterführen (Themen). Also habe ich mir den Link angeschaut.

Dort wird aber gesagt, dass man kein Rquest braucht, sondern dort wurde
das mit einem Javascript gelöst. Den habe ich aber nicht wirklich durch-
schaut
PHP-Code:
function auswaehlen(s){
wert=s.options[s.selectedIndex].value;
if(
wert!=0){
location.href='index.php?auswahl=' wert;
}
else{
location.href='index.php';
}

Also dieser Code wurde ja dort gepostet, aber was genau macht der?
Die Funktion bekommt einen Wert s und was s.options[s.selectedIndex].value
ist verstehe ich nicht, danach wird dann geprüft ob der Wert 0 ist und dann
wird die Seite mit irgendeinem Wert neugeladen oder ohne den Wert
neugeladen. Würde gerne den Benutzer selbst fragen, aber der ist seit
einem guten Monat inaktiv.

- Jedenfalls wenn ich das Script bei mir einfüge und die Form anpasse,
erscheint bei mir das 2. Dropdownmenü nicht


[MOD: Wiederhergestellt]

Geändert von Wuestenfuchs (11.01.2012 um 14:25 Uhr).
Wuestenfuchs ist offline   Mit Zitat antworten
Alt 16.01.2012, 15:35  
Neuer Benutzer
 
Registriert seit: 08.11.2011
Beiträge: 21
PHP-Kenntnisse:
Anfänger
Wuestenfuchs befindet sich auf einem aufstrebenden Ast
Standard

Hallo,

Entschuldigung dass ich hier mehrmals hintereinander poste,
aber ich wollte kein neues Thema aufmachen. Also ich habe es jetzt
so realisiert, dass ich 3 forms erstelle und dann mit $_POST das Ergebnis
bekomme. Hier der Code:
PHP-Code:
<title>Datenbank auslesen</title>
<head></head>
<body background="bg.jpg">
 
<?php
echo "<form action='' target='_self' method='post' name='drop1' target='_self'>";

        
mysql_connect("localhost","root","") or die ("Fehler beim Verbinden mit der Datenbank.");
        
mysql_select_db("klassenarbeiten") or die ("Fehler beim Öffnen der Datenbank");

        echo 
"<p>";
        echo 
"<select name='menu1'>";
        echo 
"<option value=''>Bitte w&auml;hen...</option>";

        
$query "SELECT * FROM faecher";
        
$ergebnis mysql_query($query) or die ("mysql_error()");

        while(
$row mysql_fetch_array($ergebnis))
        {
         echo 
"<option value='".$row["fid"]."'>".$row["Fach"]."</option>";
        }

        echo 
"</select>";
        echo
"<input type='submit' name='fertig1' value='Bestaetigen' size ='20' />";
        echo 
"</p>";

        echo 
"</form>";

        echo 
"<form action='' target='_self' method='post' name='drop2' target='_self'>";


         echo 
"<p>";
         echo 
"<select name='menu2'>";
         echo 
"<option value=''>Bitte w&auml;hen...</option>";

         
$fach $_POST["menu1"];

         
$query "SELECT * FROM themen INNER JOIN faecher ON themen.fid = faecher.fid WHERE faecher.fid = '{$_POST['menu1']}'";
         
$ergebnis mysql_query($query) or die ("mysql_error()");

         while(
$row mysql_fetch_array($ergebnis))
         {
          echo 
"<option value='".$row["tid"]."'>".$row["Thema"]."</option>";
         }

         echo 
"</select>";
         echo
"<input type='submit' name='fertig2' value='Bestaetigen' size ='20' />";
         echo 
"</p>";

        echo 
"</form>";

        echo 
"<form action='' target='_self' method='post' name='drop3' target='_self'>";

         echo 
"<p>";
         echo 
"<select name='menu3'>";
         echo 
"<option value=''>Bitte w&auml;hen...</option>";

         
$query "SELECT * FROM unterthemen INNER JOIN themen ON unterthemen.tid = themen.tid WHERE themen.tid = '{$_POST['menu2']}'";
         
$ergebnis mysql_query($query) or die ("mysql_error()");

         while(
$row mysql_fetch_array($ergebnis))
         {
          echo 
"<option value='".$row["utid"]."'>".$row["Unterthema"]."</option>";
         }

         echo 
"</select>";
         echo
"<input type='submit' name='fertig3' value='Bestaetigen' size ='20' />";
         echo 
"</p>";

        echo 
"</form>";

         if(isset(
$_POST['fertig3']))
         {
          echo 
"Faecher: <br>";
          echo 
"$fach";

          
$sql1 "SELECT * FROM faecher WHERE fid = '{$_POST['menu1']}'";

          
$erg1 mysql_query($sql1);

          
$txt1 mysql_fetch_row($erg1);

          
$num1 count($txt1);

          for(
$x1=0$x1<$num1$x1++)
          {
           echo 
$txt1[$x1]."<br>";
          }
         }

?> 
 
</body>
</html>
Jetzt habe ich nur ein Problem:
Wenn ich auslesen möchte, z.B. nur die Fächer, funktioniert es nicht,
da die Variable bzw. das Ergebnis von Menu1 nicht mehr vorhanden ist,
weiß da jemand eine Lösung?
Wuestenfuchs ist offline   Mit Zitat antworten
Alt 17.01.2012, 07:20  
Erfahrener Benutzer
 
Benutzerbild von mermshaus
 
Registriert seit: 14.06.2009
Beiträge: 1.731
PHP-Kenntnisse:
Fortgeschritten
mermshaus kann auf vieles stolz seinmermshaus kann auf vieles stolz seinmermshaus kann auf vieles stolz seinmermshaus kann auf vieles stolz seinmermshaus kann auf vieles stolz seinmermshaus kann auf vieles stolz seinmermshaus kann auf vieles stolz seinmermshaus kann auf vieles stolz seinmermshaus kann auf vieles stolz sein
Standard

Du könntest die POST-Daten des ersten Formulars als versteckte input-Elemente beim zweiten Formular hinzufügen und so weiter. So könntest du die Daten von Formular zu Formular durchreichen.
__________________
Blog | Buch | Kaloa
mermshaus ist gerade online   Mit Zitat antworten
Alt 17.01.2012, 15:18  
meikel
Gast
 
Beiträge: n/a
Standard

Zitat:
Zitat von mermshaus Beitrag anzeigen
Du könntest die POST-Daten des ersten Formulars als versteckte input-Elemente beim zweiten Formular hinzufügen und so weiter. So könntest du die Daten von Formular zu Formular durchreichen.
Pfui!
PHP-Code:
session_start();
$_SESSION['form1'] = $_POST
  Mit Zitat antworten
Alt 17.01.2012, 18:02  
Erfahrener Benutzer
 
Benutzerbild von mermshaus
 
Registriert seit: 14.06.2009
Beiträge: 1.731
PHP-Kenntnisse:
Fortgeschritten
mermshaus kann auf vieles stolz seinmermshaus kann auf vieles stolz seinmermshaus kann auf vieles stolz seinmermshaus kann auf vieles stolz seinmermshaus kann auf vieles stolz seinmermshaus kann auf vieles stolz seinmermshaus kann auf vieles stolz seinmermshaus kann auf vieles stolz seinmermshaus kann auf vieles stolz sein
Standard

@Wuestenfuchs:

Ich habe mir deinen letzten Post gerade noch mal durchgelesen. Wenn du die drei Formulare nacheinander aufrufen möchtest, fehlt dir vor allem auch eine Art „Ablaufsteuerung“: Wenn Formular 1 abgeschickt (= $_POST['menu1'] gesetzt oder so), dann zeige Formular 2. Wenn Formular 2 abgeschickt, dann zeige Formular 3, …

So richtig passt deine Problembeschreibung außerdem nicht zum Code. Das Auslesen der Fächer generiert doch erst die Liste, die dann den Wert von $_POST['menu1'] bestimmt, oder?

EVA-Prinzip wäre auch mal ein Stichwort.

- http://www.php.de/wiki-php/index.php...rdverfahren%29

Warum hast du übrigens den Text aus dem Ausgangspost gelöscht?

@meikel:

Zitat:
Pfui!
Schreib bitte in vollständigen Sätzen.
__________________
Blog | Buch | Kaloa
mermshaus ist gerade online   Mit Zitat antworten
Alt 17.01.2012, 19:41  
meikel
Gast
 
Beiträge: n/a
Standard

Zitat:
Zitat von mermshaus Beitrag anzeigen
@meikel:
Schreib bitte in vollständigen Sätzen.
1. jeder Hund versteht die Vokabel 'Pfui!'. Klar, Du bist kein Hund und Hunde schreiben eh nich im Internet... <ggg>
2. der Nebensatz ist das darunterstehende Script.
3. Prüfe importierte Parameter. Traue niemandem
http://www.php-faq.de/q-sicherheit-parameter.html
Zitat:
Jede Form von Ping-Pong, also Wert-Weitergabe durch GET-Parameter, HIDDEN-Variablen und dergleichen ist zu vermeiden. Auch durch Codierung der Werte ist hier nichts zu erreichen.
  Mit Zitat antworten
Alt 18.01.2012, 16:09  
Neuer Benutzer
 
Registriert seit: 08.11.2011
Beiträge: 21
PHP-Kenntnisse:
Anfänger
Wuestenfuchs befindet sich auf einem aufstrebenden Ast
Standard

Hallo,

erstmal danke für die Antworten.
Und zwar habe ich das Auslesen einfach so gelöst, dass er die
id vom letzten Formular nimmt und habe erkannt dass es anders auch
keinen Sinn ergibt^^
Aber wenn ich eine neue Frage einfügen möchte über ein Formular,
dann brauche ich die Werte, um die ids eintragen zu können.

Also das mit dem EVA, verstehe ich nicht so ganz.
Dort steht ja nicht wie ich Variablen aus den Formularen bekomme.

Ich hätte selber eine Idee, und zwar dass das letzte Dropdown-Menü
mehrere Werte übergibt, nämlich nicht nur die UnterthemaID sondern
auch die dazugehörige FachID und ThemaID, ist das möglich?

Zitat:
session_start();
$_SESSION['form1'] = $_POST;
Könntest du bitte erklären, was dieser Befehl und diese Zeile anstellen,
anstatt das einfach nur in den Raum zu werfen?

Hier der neue Teil Codes, falls er benötigt wird, die Dropdown Menüs sind
ja gleich nur habe ich unten dann nicht mehr auslesen sondern noch
mehr Formulare, um es in die Datenbank einzutragen.
[SPOILER="CODE"]
PHP-Code:
         if(isset($_POST['fertig1']))
         {
          
$fid $_POST['menu1'];
         }
         if(isset(
$_POST['fertig2']))
         {
          
$tid $_POST['menu2'];
         }
         if(isset(
$_POST['fertig3']))
         {
          
$utid $_POST['menu3'];
          
$frage $_POST["frage"];
          
$antwort $_POST["antwort"];
          
$punkte $_POST["punkte"];

           
mysql_query("INSERT INTO fragen (fid, tid, utid, frage, antwort, punkte)
           VALUES ('$fid', '$tid', '$utid', '$frage', '$antwort', '$punkte'"
);
         } 
[/SPOILER]
Wuestenfuchs ist offline   Mit Zitat antworten
Antwort


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
[Erledigt] *.jpgs filename's im dropDown menu anzeigen bl4d3 PHP Einsteiger 2 20.12.2011 17:08
[Erledigt] Datensätze von einer MySQL in eine andere MySQL Datenbank abgleichen Marvin75 Datenbanken 7 10.06.2011 18:00
CSS Dropdown Menü Links Atikos HTML, Usability und Barrierefreiheit 3 19.05.2011 16:32
[Erledigt] CSS und Javascript Dropdown Menu IE PROBLEM unreal87 HTML, Usability und Barrierefreiheit 3 19.05.2010 19:20
While schleife mit Datenbank in ein Dropdown Feld (Umlaut Problem) kintaro PHP Tipps 2008 6 28.08.2007 19:11
Mehrere Datensätze in Datenbank updaten PHP-Fortgeschrittene 9 23.10.2005 11:04
[Erledigt] Mehrere Datensätze in Datenbank updaten PHP Tipps 2005-2 4 23.10.2005 10:44
Dropdown Menü Höhe bestimmen Mike55 HTML, Usability und Barrierefreiheit 5 09.10.2005 17:57
[Erledigt] Datensätze aus Datenbank speichern und zuweisen PHP Tipps 2005-2 6 11.09.2005 15:38
dropdown menu mit array füllen alias_zappler PHP Tipps 2005-2 2 04.09.2005 01:37
[Erledigt] Datensätze von Datenbank abfragen PHP Tipps 2005-2 14 26.06.2005 07:56
Mit JS DropDown Menü füllen? HTML, Usability und Barrierefreiheit 3 13.06.2005 16:04
Menü aus MySQL Datenbank ausgelesen PHP Tipps 2005 9 02.06.2005 17:11
Dropdown Menu aus Datenbank füllen PHP Tipps 2005 9 08.04.2005 14:23

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
drop down mit auswahl und entsprechender verknüpfung js, dhtml pulldown menü mit datenbank, java script auswahlfeld mit verknüpfung, select menü verknüpfung php, javascript pulldown select aus datenbank, dropdown text speichern in db php, dropdwon mit mysql verbinden, dropdown liste mit datenbank verbinden, html seite dropdown mit mysql verbinden, php while und auswahlfelder erster datensatz fehlt, dropdown menüs verbinden php, pdo dropdown liste, datenbank mit dropdownlist verbinden, javascript dropdown datenbank verknüpfen, mediawiki dropdown datenbankabfrage, mehrere dropdown menüs miteinander verbinden datenbank, select menü 2 fach php, mysql auslesen php dropdown liste beispiel, mediawiki wie erstell cihe ien drop down menu, mysql abfrage mit variablen dropdownlist

Alle Zeitangaben in WEZ +2. Es ist jetzt 18:34 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