Datenbankabfrage in Website

magic.dave

Lt. Junior Grade
Registriert
Apr. 2011
Beiträge
282
Hallo zusammen,

ich möchte in meine Website (HTML/CSS) eine Datenbankabfrage einbauen, die per Dropdown Menus realisiert werden soll.

Bsp zur Verdeutlichung:
In der Datenbank steht, dass Peter im Januar 2000 geboren wurde und Hans im Februar 2000.
Vorstellbar wären hier 2 Dropdown Menus (Monat und Jahr). Sollte jemand auf der Website das erste Menu anklicken, dann kann er 2000 und 2001 wählen, wobei nur die Einträge stehen bleiben, die ausgewählt wurden (-> Wenn ein User 2000 auswählt, dann soll nur Peter stehen bleiben).

Leider habe ich keine Ahnung wie ich an so eine Sache ran gehen soll. Über jeden Tipp bin ich sehr dankbar.

Greetz
magic.dave
 
sqlite.js oder eben eine Serverapplikation mit einer echten Datenbank - wobei es wohl vollkommen egal ist, ob es MySQL, MongoDB, CouchDB (geht zum Rumspielen auch ohne vorgeschalteten Server) oder Neo4j.
 
Zuletzt bearbeitet:
Wenn du mehr als reines HTML/CSS willst und Datenbanken mit einbauen willst brauchst du eine Programmiersprache mit der du die Daten abfragen kannst und eine Datenbank von der du sie abfragen/speichern kannst. Die klassische Lösung ist hierbei PHP mit MySQL.

Für deine Anwendung reichen basic PHP und MySQL Kenntnisse. Am besten paar Guides googeln.
 
Wie schon gesagt wurde, wenn du mit einer Datenbank arbeiten willst dann kommt eigentlich nur eine serverseitige Programmiersprache wie PHP in Frage. Das muss aber auch erstmal gelernt werden und geht über HTML und CSS weit hinaus.

Wie viele Datensätze hast du denn, und wie sollen sie gepflegt werden? Wenn es sich im Rahmen hält, dann könnte ich mir auch vorstellen, die Datensätze nicht in einer Datenbank, sondern auf dem Filesystem etwa als JSON zu speichern und die Daten dann per JavaScript (Stichwort Ajax) einzulesen. Das geht genauso schnell und beschränkt sich auf JavaScript als Programmiersprache, vereinfacht also vieles.
 
Hab mich jetzt für MySQL und php entschieden. Leider kriege ich bei meinem Anbieter All-Inkl immer die Fehlermeldung "Not Found" wenn ich versuche meine php Datei aufzurufen. Die .htaccess Datei mit dem entsprechenden Eintrag "AddHandler php5-cgi .php" habe ich bereits erzeugt. Wo kann das Problem liegen?
 
Deaktiviere die .htaccess mal (z. B. durch Umbenennen in .htaccess.default). Vielleicht ist da etwas falsch eingetragen und ohne .htaccess kannst du die Skripte in der Regel auch aufrufen.
 
Ok, soweit habe ich alle Serverprobleme geklärt und habe meinen Code "fertig". Leider gibt's auch hier Probleme, bedeutet er macht nicht das, was ich will :)

Wäre super wenn mal jemand mit einem geschulten Auge drüber schauen könnte.

Code:
<?php
$db = mysqli_connect("xxx", "xxx", "xxx", "xxx");
if(!$db)
{
  exit("Verbindungsfehler: ".mysqli_connect_error());
}

$abfrage = "SELECT Name FROM TestTabelle";
$ergebnis = mysqli_query($db, $abfrage);

?>


<select>
<?php

while ($adr = mysql_fetch_array($ergebnis))

{
?>
	<option>
		<?=$adr['Name']?>
	</option>

<?php
}

echo "</select>";

?>

PS: Verbindung zur Datenbank funktioniert definitiv. Nicht das jemand denkt, ich hätte dort wirklich überall "xxx" stehen ;)
 
Wenn er nicht macht, was du willst, was macht er denn?
Ich hab ewig schon nicht mehr ohne objektorientierte Datenbank-Abstraktion gearbeitet, aber dein Kram sieht soweit FAST richtig aus.

while ($adr = mysql_fetch_array($ergebnis)) <- da fehlt doch ein "i", oder? Der Rest ist doch mysqli....
 
Super, jetzt funktioniert endlich mal das Dropdown Menu. Danke für den Tipp mit dem "i" :)
Ich stehe aber schon vor dem nächsten Problem. Ich habe folgendes geändert:

Code:
$abfrage = "SELECT Name,ID FROM TestTabelle";

Jetzt soll er mir wenn ich im Dropdown einen Namen auswähle, die entsprechende ID ausgeben. Bei mir passiert nach der Auswahl des Namen aber einfach mal gar nix.

Code:
<?php
$db = mysqli_connect("dd23632.kasserver.com", "d01cfb83", "K5GUMhPWwesVWAXU", "d01cfb83");
if(!$db)
{
  exit("Verbindungsfehler: ".mysqli_connect_error());
}

$abfrage = "SELECT Name,ID FROM TestTabelle";
$ergebnis = mysqli_query($db, $abfrage);

?>


<select>
<?php

while ($adr = mysqli_fetch_array($ergebnis))

{
?>
	<option>
		<?=$adr['Name']?>
	</option>

<?php

echo $adr['ID'];

}

?>
 
Zuletzt bearbeitet:
Hast du da das schließende </select> gekillt? Außerdem heißt es ja auch <option value="deinUebergabewert">deineBeschreibung</option>...
 
Oh ja, das abschließende select ist irgendwie gelöscht worden. Ich stehe aber grad etwas auf dem Schlauch, was du mit den option meinst.
 
Ok, ich hoffe ich verstehe. Habe meinen Code jetzt folgendermaßen geändert:

Code:
<?php
$db = mysqli_connect("xxx", "xxx", "xxx", "xxx");
if(!$db)
{
  exit("Verbindungsfehler: ".mysqli_connect_error());
}

$abfrage = "SELECT Name,ID FROM TestTabelle";
$ergebnis = mysqli_query($db, $abfrage);

?>


<select>
<?php

while ($adr = mysqli_fetch_array($ergebnis))

{
?>
	<option value="ID"><?=$adr['Name']?></option>

<?php

echo $adr->ID;
echo "<br />";

}

echo "</select>";

?>
 
Und das ist TROTZDEM immer noch falsch. Der W3C Validator schmeißt dir hier nur Fehler, also braucsht du dich auch nicht wundern, wenn der Browser Murks macht.

Ein <select>-Element darf NUR <option> oder <optgroup> - Elemente enthalten, keine Text Nodes. Deine beiden Echos da nach der <option> sind vollkommen wider jegliche Spezifikation. Da kommt nur Schrott raus.
Und was soll es dir bringen, wenn du zwar ein Select mti mehreren Optionen hast, jede Option aber denselben Wert übergibt? Genau das machst du aber... jede Option hat bei dir den Wert "ID"

Also noch einmal ans Reißbrett, HTML-Spezifikation lesen und alles von Grund auf neu überdenken. Vergiss, was du bisher gemacht hast.
 
Dafür, dass ich bis vor 2 Tagen noch nie einen php-Code gesehen habe, bin ich ganz schön weit gekommen. Wenn ich also mit meiner 2-Tages-Erfahrung hier lese, dass ich alles vergessen sollte, was ich bisher gemacht habe, hilft mir das kein Stück weiter. Zuerst hast du oben geschrieben, dass das alles schon sehr richtig aussieht und nun soll doch alles falsch sein?
 
Oben sah es auch noch korrekt aus, aber dann bist du immer weiter abgedriftet. Du verstößt gegen die HTML-Spezifikation und du hast nicht begriffen, WIE <select> (oder andere Eingabefelder) überhaupt funktionieren. Von daher solltest du eben noch einmal von 0 an beginnen, statt auf bestehenden Fehlern weiter aufzubauen.

Der beste Tip: Lies Code!
HTML-Code ist offen zugänglich. Mach hier im Forum doch mal n Rechtsklick auf Select-Boxen und drück auf "Element untersuchen". Jeder moderne Browser hat umfangreiche Entwicklertools, wobei die vom IE11 die schlechtesten und die vom Chrome in meinen Augen die besten sind (knapp vor FF)
Speedy hat dir auch noch Beispiele verlinkt. Lern daraus.
 
Zurück
Oben