Dropdownfelder

Die Scriptsprache PHP für die Gestaltung von dynamischen Websites.

Dropdownfelder

Beitragvon mrlinks » So 05 Sep, 2004 20:29

Hallo Leute

Wie mache ich zwei Dropdownfelder von einander abhängig. (die von einer mysql datenbank gefüllt werden???)
Wenn ich Kategorie auswähle sollen die jeweiligen Unter_Kategorien im zweiten, Dropdownfeld auswählbar sein!!

1. Geht das ganze auch nur mit PHP??

2. Oder muss ich dazu ein Javascript verwenden?

Könnt ihr mir helfen Bitte!

Hier der Code:
Code: Alles auswählen
<select name="Kategorie">


<?php

    include ("connect.inc");
    connect_to_mrlinks ();


    $result = mysql_query("select * from Kategorie");
        //Abfrage für das erste Dropdownfeld
                 while ($row = mysql_fetch_object($result)) {
                     $name =      $row->Name;
                     $Kat =       $row->idKategorie ;
                         echo "<option value='$Kat'>$name</option> "; //Ausgabe der Kategorie
                     }
?>

</select>
<select name="U_Kategorie">

<?php

    $result2 = mysql_query("SELECT * FROM Unter_Kategorie AS U, Kategorie AS K
                            WHERE U.ID_Kategorie = $Kat");
          //Abfrage für das zweite Dropdownfeld
                   while ($row2 = mysql_fetch_object($result2)){
                       $name2 = $row2->U_Name;
                       $UKat = $row2->idUnter_Kategorie ;
                           echo "<option value='$UKat'>$name2</option> "; //Ausgabe der Unterkategorie
                    }
?>


Danke im voraus.
mrlinks
Neu im Board
Neu im Board
 
Beiträge: 8
Registriert: So 05 Sep, 2004 20:14

Beitragvon lordpeng » So 05 Sep, 2004 20:48

>1. Geht das ganze auch nur mit PHP??
ja

>2. Oder muss ich dazu ein Javascript verwenden?
einfacher und vielleicht auch optisch ansprechender wäre es sicher in javascript, allerdings kompatibler wäre es wenn du's in php machst, da php nicht browserabhängig ist

es kommt drauf an wer mit deinem fertigen script konfrontiert werden soll, wenn du's deppensicher machen willst solltest du's nur via php lösen, alternativ kannst du auch beide sprachen kombinieren ... d.h. wenn javascript deaktiviert ist via php ...
lordpeng
Moderator
Moderator
 
Beiträge: 10198
Registriert: Mo 23 Jun, 2003 22:45

Beitragvon mrlinks » So 05 Sep, 2004 21:11

Finde ich toll mit der möglichkeit mit Javascript und PHP!
Bin leider noch nicht so erfahren mit PHP und Javascripts
Könntest du mir helfen???
mrlinks
Neu im Board
Neu im Board
 
Beiträge: 8
Registriert: So 05 Sep, 2004 20:14

Beitragvon lordpeng » So 05 Sep, 2004 22:09

>Könntest du mir helfen???
nicht wirklich da ich mit PHP eigentlich gar nix am hut hab, ich bin da mehr für perl :-)
lordpeng
Moderator
Moderator
 
Beiträge: 10198
Registriert: Mo 23 Jun, 2003 22:45

Beitragvon justsmile » So 05 Sep, 2004 22:28

Vielleicht machst Du das einfach in 2 Schritten?

1.) Auswahl der Kategorie
nach erfolgter auswahl wird nochmals das script aufgerufen, allerdings mit einer vordefinierten Varibale zusätzlich: z.B. auswahlHKATerfolgt=true

2) Auswahl der U_Kat
wenn auswahlHKATerfolgt=true
SELECT * FROM Blabla WHERE kat = $kategorie
füllen des 2. Dropdown feldes

...

Vielleicht hilft Dir das!
justsmile
Senior Board-Mitglied
Senior Board-Mitglied
 
Beiträge: 269
Registriert: Do 02 Okt, 2003 15:41

Beitragvon TheProdigy » Mo 06 Sep, 2004 08:23

Oder du schaust dir mal phpMyEdit an. Ist ein in PHP geschriebenes Tool, das aus einer Tabelle automatisch Formulare generiert. Diverse Optionen (read-only, Combo-Box, ...) sind einstellbar. Für einfachere Formulare erspart man sich viel Arbeit.

AFAIR kann es auch abhängige Kombinationsfelder.

phpMyEdit generates PHP code for displaying/editing MySQL tables in HTML. All you need to do is to write a simple calling program (a utility to do this is included). It includes a huge set of table manipulation functions (record adition, change, view, copy, and remove), table sorting, filtering, table lookups, and more.
TheProdigy
Board-Mitglied
Board-Mitglied
 
Beiträge: 101
Registriert: Mi 05 Mai, 2004 10:41

Beitragvon mrlinks » Mo 06 Sep, 2004 18:52

justsmile hat geschrieben:Vielleicht machst Du das einfach in 2 Schritten?

1.) Auswahl der Kategorie
nach erfolgter auswahl wird nochmals das script aufgerufen, allerdings mit einer vordefinierten Varibale zusätzlich: z.B. auswahlHKATerfolgt=true

2) Auswahl der U_Kat
wenn auswahlHKATerfolgt=true
SELECT * FROM Blabla WHERE kat = $kategorie
füllen des 2. Dropdown feldes

...

Vielleicht hilft Dir das!


Ist eine Gute Idee, ich bin noch ein Anfänger deswegen kann ich das nicht so leicht in meinen code umsetzen.
mrlinks
Neu im Board
Neu im Board
 
Beiträge: 8
Registriert: So 05 Sep, 2004 20:14

Beitragvon nauti » Sa 11 Sep, 2004 19:09

hi,

vermutlich hast du 2 tables in dem einen die Daten, und in der anderen die kategorien, diese spielen wahrscheinlich über eine id miteinander?

poste doch bitte mal die struktur deiner 2 tables.
dann kann ich dir sicher weiterhelfen.

cu nauti
nauti
Junior Board-Mitglied
Junior Board-Mitglied
 
Beiträge: 30
Registriert: Mo 29 Dez, 2003 18:53

Beitragvon mrlinks » Di 14 Sep, 2004 20:00

Hier ist die Tabellenstruktur

Tabelle Kategorie:


idKategorie int(10)
Name varchar(45)


PRIMARY idKategorie


Unter_Kategorie

idUnter_Kategorie int(10)
U_Name varchar(45)
IDKategorie varchar(10)


PRIMARY idUnter_Kategorie
INDEX IDKategorie

Wäre echt :ok: wenn du mir hilfst
mrlinks
Neu im Board
Neu im Board
 
Beiträge: 8
Registriert: So 05 Sep, 2004 20:14

hi

Beitragvon nauti » Do 16 Sep, 2004 14:32

hi, ich hab mal folgendes gemacht:


[php]

<?php

$temp = mysql_pconnect('localhost','root','') ;
mysql_select_db('test', $temp);


$query = "select * from kategorie order by idKategorie desc;";
$result = mysql_query($query) or die(mysql_error());

echo "<form name=\"form\" method=\"post\" action=\"?categ=".$_POST['list']."\">\r\n";
echo "<select name=\"list\">\r\n";
echo "<option value=\"\">w&auml;hlen</option>\r\n";
while($row = mysql_fetch_assoc($result))
{
if($_GET['categ'] == $row['idKategorie'])
{
$selected = "selected";
}
echo "<option value=\"".$row['idKategorie']."\" ".$selected.">".$row['Name']."</option>\r\n";
$selected = "";
}
echo "</select>\r\n";
echo "<input type=\"submit\" name=\"go\" value=\"go\">\r\n";
echo "</form>\r\n";

if(is_numeric($_GET['categ']))
{
$query = "select * from unterkategorie where idKategorie = ".$_GET['categ']." order by idUnterkategorie;";
$result = mysql_query($query) or die(mysql_error());

echo "<form name=\"form2\" method=\"post\"\">\r\n";
echo "<select name=\"list2\">\r\n";
while($row = mysql_fetch_assoc($result))
{
echo "<option>".$row['u_name']."</option>\r\n";
}
echo "</select>\r\n";
echo "</form>\r\n";
}

?>

<!-- Meine Dump BEGIN

create table kategorie
(
idKategorie int(10) not null auto_increment primary key,
Name varchar(45) not null
);

insert into kategorie values(1, 'testkategorie');
insert into kategorie values(2, 'noch eine kategorie');



create table unterkategorie
(
idUnterkategorie int(10) not null auto_increment primary key,
u_name varchar(45) not null,
idKategorie int(10) not null
);

insert into unterkategorie values(1, 'ne unterkategrie von testkategorie', 1);
insert into unterkategorie values(2, 'ne unterkategrie von noch eine kategorie', 2);
insert into unterkategorie values(3, 'noch ne unterkategrie von testkategorie', 1);

Meine Dump END -->[/php]

Zum testen: einfach alles in eine *.php datei geben und in der Datenbank die dump die ich erstellt habe in eine neue datenbank namens test reinladen.

dann die datei aufrufen und schaun ob das so passt wie du es wolltest.
mfg nauti
Zuletzt geändert von nauti am So 19 Sep, 2004 16:39, insgesamt 2-mal geändert.
nauti
Junior Board-Mitglied
Junior Board-Mitglied
 
Beiträge: 30
Registriert: Mo 29 Dez, 2003 18:53

Beitragvon mrlinks » Do 16 Sep, 2004 19:49

Das ist genau das was ich wollte !!
:unworthy:

Jetz brauch ich das ganze nur noch verstehen.

Aber trotzdem nochmal :danke:

:bounceg: :bouncer: :bounceg: :bouncer: :bounceg: :bouncer: :bounceg: :bouncer: :bounceg: :bouncer: :bounceg: :bouncer: :bounceg: :bouncer: :bounceg: :bouncer: :bounceg: :bouncer: :bounceg: :bouncer: :bounceg: :bouncer: :bounceg: :bouncer: :bounceg: :bouncer:
mrlinks
Neu im Board
Neu im Board
 
Beiträge: 8
Registriert: So 05 Sep, 2004 20:14

Beitragvon nauti » Do 16 Sep, 2004 21:04

wenns wo verständnisprobleme gibt, dann schreib nur.
nauti
Junior Board-Mitglied
Junior Board-Mitglied
 
Beiträge: 30
Registriert: Mo 29 Dez, 2003 18:53

Beitragvon mrlinks » Sa 18 Sep, 2004 22:15

Ein kleines Problem habe ich noch und zwar ich würde noch gerne die möglichkeit haben eine neu Kategorie hinzuzufügen.

Das man auf einen radio Botton klickt und eine Kategorie hinzufügen kann.

Ein Problemchen hätte ich dann noch und zwar wenn ich die Seite lade und das erste mal auswähle und auf go klicke, dann wird alles nochmal geladen ohne Veränderung.

:dontknow:
mrlinks
Neu im Board
Neu im Board
 
Beiträge: 8
Registriert: So 05 Sep, 2004 20:14

Beitragvon nauti » So 19 Sep, 2004 16:33

Selbes spiel wie oben :D
hoffe es hat keine bugs harhar.

das is halt alles prozedural gecodet. schöner ises natürlich OOP mit methoden und functionen usw :)

ciao nauti

[php]<a href="?add=category">Kategorien hinzuf&uuml;gen </a>
<script language="javascript" type="text/javascript">
function switchCategory()
{
var URL = document.switchEntry.choose.options[document.switchEntry.choose.selectedIndex].value;
window.location.href = "?categ="+URL;
}
</script>
<?php
$temp = mysql_pconnect('localhost','root','') ;
mysql_select_db('test', $temp);

if($_POST['addCat'])
{
if(!empty($_POST['addCategoryName']))
{
$query = "insert into kategorie (idKategorie, Name) values ('', '".addslashes($_POST['addCategoryName'])."');";
$res = mysql_query($query) or die(mysql_error());
if($res){
echo "<br><pre>'".$_POST['addCategoryName']."' erfolgreich zu den Kategorien eingetragen!</pre>\r\n";
}
} else {
echo "<br>Bitte einen Kategorienamen angeben!\r\n";
}
}
if($_POST['addUnderCat'])
{
if(!empty($_POST['addUnderCategoryName']))
{
$query = "insert into unterkategorie (idUnterkategorie, u_name, idKategorie) values ('', '".addslashes($_POST['addUnderCategoryName'])."', ".$_GET['categ'].");";
$res = mysql_query($query) or die(mysql_error());
if($res){
echo "<br><pre>'".$_POST['addUnderCategoryName']."' erfolgreich zu den UnterkategorienKategorien eingetragen!</pre>\r\n";
}
} else {
echo "<br>Bitte einen Unterkategorienamen angeben!\r\n";
}
}

if($_POST['submit'])
{
echo "<br><pre>'".$_POST['ucat']."' gewählt :D</pre>\r\n";
}

$query = "select * from kategorie order by idKategorie desc;";
$result = mysql_query($query) or die(mysql_error());

echo "<form name=\"switchEntry\" method=\"post\" action=\"?categ=".$_POST['list']."\">\r\n";
echo "<select name=\"choose\" onChange=\"javascript:switchCategory();\">\r\n";
echo "<option>wählen</option>\r\n";
while($row = mysql_fetch_assoc($result))
{
if($_GET['categ'] == $row['idKategorie'])
{
$selected = "selected";
}
echo "<option value=\"".$row['idKategorie']."\" ".$selected.">".stripslashes($row['Name'])."</option>\r\n";
$selected = "";
}
echo "</select>\r\n";
echo "</form>\r\n";

if(is_numeric($_GET['categ']))
{
$query = "select * from unterkategorie where idKategorie = ".$_GET['categ']." order by idUnterkategorie;";
$result = mysql_query($query) or die(mysql_error());

echo "<form name=\"switchUnderEntry\" method=\"post\"\">\r\n";
echo "<select name=\"ucat\">\r\n";

if(mysql_affected_rows() == 0){
echo "<option>zur Zeit gibt es keine Unterkategorien!</option>\r\n";
}
while($row = mysql_fetch_assoc($result))
{
echo "<option>".stripslashes($row['u_name'])."</option>\r\n";
}
echo "</select>\r\n";
echo "<input type=\"submit\" value=\"go\" name=\"submit\">\r\n";
echo "</form>\r\n";

?>
<form name="addUnderCategory" method="post" action="">
Unterkategorie hinzufügen: <input type="text" name="addUnderCategoryName" value="">
<input type="submit" name="addUnderCat" value="add">
</form>
<?

} else {
?>
<form name="addCategory" method="post" action="">
Kategorie hinzufügen: <input type="text" name="addCategoryName" value="">
<input type="submit" name="addCat" value="add">
</form>
<?
}

?>

<!-- Meine Dump BEGIN

create table kategorie
(
idKategorie int(10) not null auto_increment primary key,
Name varchar(45) not null
);

insert into kategorie values(1, 'testkategorie');
insert into kategorie values(2, 'noch eine kategorie');

create table unterkategorie
(
idUnterkategorie int(10) not null auto_increment primary key,
u_name varchar(45) not null,
idKategorie int(10) not null
);
insert into unterkategorie values(1, 'ne unterkategrie von testkategorie', 1);
insert into unterkategorie values(2, 'ne unterkategrie von noch eine kategorie', 2);
insert into unterkategorie values(3, 'noch ne unterkategrie von testkategorie', 1);

Meine Dump END -->[/php]
nauti
Junior Board-Mitglied
Junior Board-Mitglied
 
Beiträge: 30
Registriert: Mo 29 Dez, 2003 18:53

Beitragvon nauti » So 19 Sep, 2004 16:34

ahja, bin ein ziemlicher kommentar muffel was meinen programmierstil angeht ... frag wenns was gibt :D
nauti
Junior Board-Mitglied
Junior Board-Mitglied
 
Beiträge: 30
Registriert: Mo 29 Dez, 2003 18:53

Nächste

Zurück zu PHP

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 36 Gäste