PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : PHP Auswahlmenü?


Yups
2009-02-27, 16:02:20
Hallo zusammen!

Ich bräuchte ein klein wenig Unterstüztung in puncto PHP von euch =)

Und zwar: Für meinen Abi Jahrgang verwalte ich die Homepage. Die Charakteristiken für die AbiZeitung sollen u.a. auch über die Seite laufen. Das funktioniert soweit auch ganz gut. Mit Breezing Forms und Joomla habe ich ein Formular hinbekommen; durch einen langen Abend basteln ist mir sogar die Ausgabe aus der DB gelungen.

Jetzt möchten aber einige gerne, dass man die Charakteristiken für nur eine Person per Knopfdruck abrufen kann (bisher werden einfach alle untereinander angezeigt). Dafür müsste eigentlich nur eine Variable abgefragt werden, aber daran scheiterts schon.

Wie bekomme ich ein Dropdown Menü in PHP, das automatisch verschwindet wenn ein Wert ausgewählt wurde und den Code fortführt?

Ich bin echt über jede Hilfe dankbar ;)

Marscel
2009-02-27, 16:07:21
Sowas ist Sache von Javascript.

Frei nach: Auswahl von x im Drop-Down-Menü, anhand des id-Attributs guckst du dann über JS, was zu tun ist und lädst Code nach oder blendest eine bestimmte Passage ein.

Yups
2009-02-27, 16:52:49
Ohje, das bringt mich gerade nicht wirklich weiter ;) Vielleicht noch einmal für den php+js Noob? :redface:

DanMan
2009-02-27, 18:28:32
Wie bekomme ich ein Dropdown Menü in PHP, das automatisch verschwindet wenn ein Wert ausgewählt wurde und den Code fortführt?
Wat is los?

Marscel
2009-02-27, 21:33:13
Du solltest grundsätzlich wissen, wo PHP arbeitet und wo Javascript. PHP ist serverseitig, das sind die Scripts die du erstellst, für Login, Datenbank o.ä., Javascript findet im Kontext des Browsers statt, etwa um die Anzeige dynamisch zu manipulieren.

Drop-Down-Liste sieht normal so aus:
<select>
<option value="a">A</option>
<option value="b">B</option>
</select>

Irgendwo auf der Seite ist dann ein Baustein, der ist erstmal unsichtbar, etwa so
<div id="hidden_content" style="display: none;"> Hier steht versteckter Text.</div>

Dein Beispiel konkreter.

Wenn du jetzt was auswählst, soll der sichtbar werden.

Die DD-List sieht dann etwa so aus:
<select id="select_extra_content" onchange="display_extra_content(this);">
<option value="" selected="selected">Wähle aus ... </option>
<option value="pics">Bilder</option>
<option value="contact">Kontaktdaten</option>
</select>

Wenn nun was ausgewählt wird, tut sich was, irgendwo steht ein Javascript-Schnipsel wie:
<script type="text/javascript">
// <![CDATA[
function display_extra_content(ddlist)
{
if(ddlist.value != "")
{
var text_container = document.getElementById('text_'+ddlist.value);
if(text_container)
text_container.style.display = "block";
}
}
// ]]>
</script>


Wenn was ausgewählt wird, wird nun der dazugehörige Textblock angezeigt.

In Übereinstimmung mit den value-Werten in der DD-List, brauchst du nun noch irgendwo diese Inhalts-Blöcke im Dokument.

<div id="text_pics" style="display: none;">
Hier sind Bilder.
</div>
<div id="text_contact" style="display: none;">
Kontaktdaten
</div>


Das ist jetzt ungetestet auf Fehler/Bugs, aber im Grunde ist es das, was du wohl meinst.

Wenn es nur eine Sache ist, die du auswählen willst, kannst du in die letzte Zeile der Javascript-Funktion display_extra_content() diese Zeile hinzufügen, dann verschwindet das Menü nach dem Klick.

ddlist.parentNode.removeChild(ddlist);

Yups
2009-02-27, 22:42:32
Danke dir vielmals! :)


Ich bleibe allerdings schon am Anfang hängen:
<select id="select_extra_content" onchange="display_extra_content(this);">

spuckt mir im Browser aus:
Parse error: syntax error, unexpected '<' in /www/htdocs/w009d198/abi/character_show_menue.php on line 33

Irgendwie steh' ich auf dem Schlauch...

Marscel
2009-02-27, 23:04:36
Danke dir vielmals! :)


Ich bleibe allerdings schon am Anfang hängen:
<select id="select_extra_content" onchange="display_extra_content(this);">

spuckt mir im Browser aus:
Parse error: syntax error, unexpected '<' in /www/htdocs/w009d198/abi/character_show_menue.php on line 33

Irgendwie steh' ich auf dem Schlauch...

Du vermischt bisweilen PHP mit HTML. Lies dir wenigstens Punkt 1 hiervon durch: http://tut.php-quake.net/de/basics.html

Ohne Grundlagen kann ich dir nicht genauer sagen, wie du arbeiten musst.

Yups
2009-02-27, 23:30:56
Ich glaub ganz so schlimm ist es dann doch nicht ;)


<meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1" />

<select id="select_extra_content" onchange="display_extra_content(this);">
<option value="" selected="selected">Person auswählen ... </option>
<option value="pics">Bilder</option>
<option value="contact">Kontaktdaten</option>
</select>

<?php
//Verbindung aufbauen
$server = "localhost";
$nutzer = "xxxx;
$kennwort = "xxxxx";
$db_link = mysql_connect($server,$nutzer,$kennwort);
// if (!is_null($db_link))
// {
// echo "<p><div id=\"#name\">Verbindung erfolgreich!</div></p>";
// }
// else
// {
// echo "<p>keine Verbindung!</p>";
// };

// Verbindung aufbauen
$db_link = mysql_connect("localhost","$nutzer","$kennwort");
// bei missglückter Verbindung Fehlermeldung ausgeben
if (is_null($db_link)) echo "<p>keine Verbindung zum Server!</p>";
// Datenbank auswählen
$result = mysql_select_db("d008adff",$db_link);
// bei missglückter Auswahl Fehlermeldung ausgeben
if (!$result) echo "<p>gewählte Datenbank nicht vorhanden!</p>";
// SQL-Anfrage senden
$anfrage_link = mysql_query("select name, value from jos_facileforms_subrecords",$db_link);
// bei missglückter Anfrage Fehlermeldung ausgeben
if ($anfrage_link == 0) echo "<p>Anfrage missglückt!</p>";
// Antwort auswerten, erster Datensatz in assoziatives Array




$result_name = mysql_query("SELECT value FROM jos_facileforms_subrecords WHERE element = 171 ORDER BY record DESC");
$result_text = mysql_query("SELECT value FROM jos_facileforms_subrecords WHERE element = 165 ORDER BY record DESC");
// $Abfrage1 = mysql_query("SELECT id FROM jos_facileforms_subrecords");
$num = mysql_num_rows($result_name);

if (!$result_name or !$result_text) {
echo "Anfrage ($sql) konnte nicht ausgeführt werden : " . mysql_error();
exit;
}

if (mysql_num_rows($result_name) == 0) {
echo "Keine Zeilen gefunden, nichts auszugeben, daher Abbruch";
exit;
}

$count = 0;
while($count < $num + 1)
{
$count = $count + 1;
$row1 = mysql_fetch_object($result_name);
$row2 = mysql_fetch_object($result_text);
echo "<p style='font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 13px; font-weight: bold;'>$row1->value</p>";
echo "<p style='font-family: Arial, Verdana, Helvetica, sans-serif; margin-left: 20px; border: solid 1px #c4c4c4; padding-left:10px; padding-top:10px; padding-bottom:10px;'>$row2->value</p>";
}
mysql_free_result($result_name);
mysql_free_result($result_text);

?>



So sieht das bisher aus. Die Abfrage funktioniert bisher auch zuverlässig und den Teil von dir hab' ich da nur eben reinkopiert. Aber warum ich die Fehlermeldung bekomme ist mir nicht so ganz klar ;(

Yups
2009-02-27, 23:37:03
Habs schon, danke ;)

Wenn ich jetzt das JS hinterherklatsche, dann passiert natürlich nichts...

Speichert <select> z.B. value="pics" in der Variable value, oder wie ist das zu verstehen (bei Auswahl natürlich)?

So langsam komm' ich weiter.... naja, den morgigen Tag abwarten ;)

Marscel
2009-02-27, 23:51:22
Habs schon, danke ;)

Wenn ich jetzt das JS hinterherklatsche, dann passiert natürlich nichts...

Speichert <select> z.B. value="pics" in der Variable value, oder wie ist das zu verstehen (bei Auswahl natürlich)?

Jup, die ausgewählte "option" speichert ihren value-Wert da ab.