Dropdownmenü mit einer "onclick" abfrage aus der Datenbank

xorlor

Grünschnabel
Hallo,

Ich habe gerade erst mit PHP begonnen und benötige glaube Ich ein wenig Hilfe.

Zum 'Projekt' :
Also Ich soll ein Teilmodul erschaffen in dem es möglich ist eine Auswahl aus einem Dropdownmenü zu tätigen und dann auf einen Button zu klicken, wenn dies dann geschehen ist sollen je nach Auswahl verschiedene Bilder angezeigt werden ( so eine Art Minigalerie ).

Ich habe bereits das Dropdownmenü erstellt, und die mySQL-Datenbank ebenfalls.
Das Dropdownmenü entsteht aus den Daten der Datenbank aber jetzt habe ich folgendes Problem.

Ich weiß nicht wie Ich sozusagen "onClick" und bei Auswahl einer Kategorie in dem Dropdownmenü, eine Anfrage zur Datenbank sende und diese darstellen lasse.

Mit $_POST bzw $_GET soll es funktionieren aber so richtig verstehen tue Ich es noch nicht, obwohl Ich dachte Ich hätte es verstanden.
Habe mich jetzt schon Stundenlang damit beschäftigt und werde einfach nicht fündig im Internet und keiner hat ein ähnliches Problem.
Die meisten brauchen nur eine normale Formularausfüllung bzw Datenbankfüllung aber nichts vergleichbares mit meinem Problem.


Ich könnte den Code den Ich bisher geschrieben habe ja einmal einfach hinzufügen:


"



<?php

$db = @new mysqli ('localhost', 'root', '', 'db_language_overviewtest');
if (mysqli_connect_errno()) {
die ('No connection could be made: '.mysqli_connect_error().'(mysqli_connect_errno().)');
}

$sqltest = 'SELECT
ID,
Categoriename
FROM
categorie';

$resulttest = $db->query($sqltest);

if (!$resulttest) {
die ('Something is not right with your query: '.$db->error);
}



echo "<select name=\"categorie\" id=\"categoriebox\" size=\"5\" width=\"15\">";
while ($rowtest = $resulttest->fetch_assoc()) {
echo "<option value=\"".$rowtest['ID']."\">".$rowtest['Categoriename']."</option>";
}
echo "</select>";


?>
<input type="submit" name="submitbutton" value="send">

"





Wäre nett wenn mir jemand helfen könnte.


Greetz
Chris
 
Hallo und willkommen auf tutorials.de.

Ich möchte dich darauf hinweisen, dass es sehr positiv wirkt, wenn man Quell-Code in die dafür vorgesehenen Tags setzt. In deinem Fall wäre [code=php] das richtige Tag. Bitte in Zukunft verwenden.

Zu deiner Frage. Ich hoffe, ich habe dich richtig verstanden, und es genügt, wenn du in deinem <select>-Feld ein Attribut für das onclick-Event einbaust. Ungefähr so:

PHP:
echo "<select name=\"categorie\" id=\"categoriebox\" size=\"5\" width=\"15\" onclick=\"javascript_aufruf();\">";
while ($rowtest = $resulttest->fetch_assoc()) {
echo "<option value=\"".$rowtest['ID']."\">".$rowtest['Categoriename']."</option>";
}
echo "</select>";

Dann musst du natürlich "nur" noch eine Java-Script-Funktion schreiben, die darauf reagiert. Ich kenne deinen Code nicht, aber ich vermute, du willst einfach ein submit(); machen:

HTML:
<script type="text/javascript">
function javascript_aufruf()
{
  /** Hier etlicher Code zu prüfen, etc.. */
  submit();
}
</script>

Du kannst natürlich auch nur ein submit()-Call machen:

PHP:
echo "<select name=\"categorie\" id=\"categoriebox\" size=\"5\" width=\"15\" onclick=\"submit();\">";
while ($rowtest = $resulttest->fetch_assoc()) {
echo "<option value=\"".$rowtest['ID']."\">".$rowtest['Categoriename']."</option>";
}
echo "</select>";

Aber das sind deine eigenen Präferenzen.

Wenn du jedoch nicht die komplette Seite neuladen willst, sondern "nur" das Form, dann wäre wohl Ajax für dich relevant.

Allerdings ist das Thema hier in PHP dann ohnehin komplett off-topic.
 
Wenn du jedoch nicht die komplette Seite neuladen willst, sondern "nur" das Form, dann wäre wohl Ajax für dich relevant.

Allerdings ist das Thema hier in PHP dann ohnehin komplett off-topic.
Nicht ganz. Ajax in diesem Fall führt über Javascript ein PHP-Code aus und ändert anhand dessen Return-Value den HTML-Code auf der Seite.

Ajax ist halt ein Zweierspiel Javascript <-> PHP (sofern man Serverseitig mit PHP arbeitet)
 
Danke für die Antwort und ja Ich werde es ab jetzt so handeln mit dem einfügen von PHP-Code.

Meine Frage:
Ich möchte es schon nur per PHP realisieren und nicht mit Ajax oder JavaScript.
Ich verstehe nur jetzt nicht ganz wie die submit(); definiert werden soll.

Mein Gedankengang ist, das Ich eine if-Abfrage mache in der Abgefragt wird, welches Array ausgewählt wurde und dieses halt dann nach dem Klick mit daten aus der Datenbank gefüllt wird.
Nur weiß Ich gerade nicht was Ich mit der submit-Funktion anfangen soll.

P.S.
Bin ein Neueinsteiger in PHP und das ist meine erste praktische Aufgabe die Ich überwältigen möchte.

Greetz
Chris
 
Grundsätzlich macht submit(); erstmal das gleiche, wie wenn du auf den Button drücken würdest. Es wird das Form an dein Script auf dem Server übermittelt. Dort (in dem Script) müsstest du den Wert von $_GET['categorie'] bzw. $_POST['categorie'] auswerten.

Ein Tutorial für dich zum Thema Formularverarbeitung wäre dennoch hilfreich, auch wenn du denkst, dass du das nicht brauchst ;-)
 
Mit onclick blockierts. Du musst onchange verwenden.

PHP:
<form method="post">
    <select name="categorie" id="categoriebox" onchange="submit();">
        <option value="0" selected="selected">[ bitte auswählen! ]</option>
        <option value="1">Nummer 1</option>
        <option value="2">Nummer 2</option>
        <option value="3">Nummer 3</option>
    </select>
</form>

<?php 
if(isset($_POST['categorie'])){
    echo "Die Nummer {$_POST['categorie']} wurde ausgewählt";
}
?>
 
Danke, das funktioniert schon einmal super.

Die nächste Frage wäre wie man es in Verbindung setzen könnte mit einem Button?
Beziehungsweise wie Ich mir den Wert eines Bildes liefern lassen kann aus der Datenbank um es dann anzeigen zu lassen.

Mir würden die einzelnen Befehle schon reichen damit Ich auch etwas zum grübeln habe ...

Mit dem if-Teil des $_Post habe Ich es bereits schon mehrmals versucht aber nie hat es funktioniert da Ich als Parameter nicht den namen des selects genommen habe sonderen die der values -.-*

Hmm das Problem ist halt nun obiges, das Ich daten aus der Datenbank je nach Auswahl in dem Dropdownmenü abfragen möchte ( in dem Fall Bilder )

Greetz
Chris
 
Du hast ja die Daten aus $_POST. Diese mit WHERE ins SQL einfügen

PHP:
$sql = 'SELECT
    ID,
    Categoriename
FROM
    categorie
WHERE
    cat_id='.mysql_escape_string($_POST['categorie']);
 
Danke für die Antwort.

Ich habe es ausprobiert mit dem WHERE in dem sql block, jedoch funktioniert es nicht.
Wohlmöglich gibt es ein Problem mit der mySQL Datenbank da Ich zwei mal den Ausdruck ID benutze und Ich glaube das ein ID ausdruck zuviel dadrin ist.

Zu der mySQL Datenbank:
Sie besteht aus 3 einzeltabellen:

bild
bild_kategorie
categorie

In der Tabelle: 'bild' sind die Spalten: ID und der Pfad des Bildes angegeben
In der Tabelle: 'bild_kategorie' sind die Spalten: ID_categorie und ID_bild angegeben.
In der Tabelle: 'categorie' sind die Spalten: ID und ID_cateogriename angegeben.

Die Relation zwischen den Tabellen ist:

Die ID_categorie der 'bild_kategorie'-Tabelle steht in Beziehung mit ID der 'categorie'-Tabelle
Die ID_bild der 'bild_kategorie'-Tabelle steht in Beziehumg mit der ID der 'bild'-Tabelle.

Habe jetzt alles versucht um den Ausdruck des SQL-Statements in den WHERE post mit einzufügen aber es funktioniert nicht.

Hast du vielleicht eine Idee?

Greetz
Chris
 
Zuletzt bearbeitet:
Zurück