• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

onchange="xyz + this.options[this.selectedIndex].value;"

Bourbon

Mitglied
Hallo Leute,

ich sitze gerade daran einen Button zu erstellen, der einen bestimmten Wert weitergibt.
Ohne die Weitergabe des Wertes und mit "onclick" hat alles super funktioniert.
Jetzt nach der Bearbeitung geht gar nichts mehr.
Hier mal der Code, vielleicht findet ihr ja den Fehler:

PHP:
<li id='header_button'><input type="button" value="+" onchange="window.location.href='db_insert.php?group_ID=' + this.options[this.selectedIndex].value;" /></li>

Grüße,
André
 
Werbung:
w3schools.com:
Definition and Usage
The onchange event occurs when the value of an element has been changed.

Buttons haben keinen value, also nichts was "changen" kann. Deshalb wird der onChange event beim Click nicht gefeuert.
 
idee:
wenn du die Seite nicht "absenden" möchtest... (jedenfalls wenn ich dich richtig verstanden habe) dann bau doch eine Radiobox, welche du mit display: none; versteckst und deren label du via css als "button" designest :D
Checkbox geht in dem Fall auch.
Die beiden Elemente haben das "onchange" Event :D

Alternativ würde sich natürlich ein event.preventDefault() anbieten... wenn du das ganze in eine JQUERY Funktion aufdröselst und evtl auslagerst.
Dann wäre das evtl ein:
$([BUTTON]).click(function(e){
e.preventDefault();
[DEINCODE]
});
 
Werbung:
Schon mal Danke für eure Antworten!

Also eigentlich will ich die Seite "absenden".
Folgendes soll erreicht werden:

Durch das drücken des Knopfes (mal ganz ohne Anglizismen :)) soll die Seite "db_insert.php" aufgerufen und die group_ID weitergegeben werden, so dass die Seite "db_insert.php" mittels GET die group_ID weiterverwenden kann. Und das so einfach wie möglich, aber dennoch mit Button.
 
Zuletzt bearbeitet:
Und in dem Formular für den button gibt es mehrere Werte?

Wenn nein, ändere doch einfach den Form method=GET

Damit solltest du haben was du suchst ;)
 
Also, um erst einmal alle Unklarheiten zu beseitigen, hier der Code des Buttons:

PHP:
<input type="button" value="+" onclick="window.location.href='db_insert.php?group_ID=' + this.options[this.selectedIndex].value;" /></li>

Der Button ist in die Seite "db_groupinfo" eingebaut, welche Informationen zu einer bestimmten Gruppe zeigt (bspw. Gruppe mit group_ID = 3).

Funktion:
Bei click die Seite "db_insert.php" aufrufen und an "db_insert" den Wert der "group_ID" (beispielsweise "3") weitergeben, damit man eine weitere Information in der Gruppe mit group_ID = 3 eintragen kann.

Und auf der Seite "db_insert.php" rufe ich damit die ID ab:
PHP:
  $group_ID = $_GET['group_ID'];
 
Werbung:
Wo soll die GroupID denn herkommen? "this.options[this.selectedIndex].value" kann beim Button nicht funktionieren. "this" ist der Button und der hat nur einen Value, das +. Wenn du irgendwo eine Selectbox mit Gruppen hast, dann musst du auch deren Value nehmen. Wenn es mehre Buttons gibt, einen für jede Gruppe, dann muss die onClickfunktion die jeweilige GroupID zurückgeben.
 
nunja... zu der Struktur sage ich nichts :D
(Nur soviel, das du die ID auch in einer SESSION speichern und via Post übergeben könntest ;) dann hast du den ganzen Hekmek nicht und brauchst die ID auch nicht in der URL stehen lassen ;) aber das ist ja nicht das, was gefragt ist :D )

Also... du musst doch um den Button einen <form> Tag haben.
In diesem Tag sind sowohl die Zielseite als auch der Typ der Formularübermittlung hinterlegt.
Und hier bleiben dir zwar wieder mehrere Möglichkeiten... aber die, welche du suchst ist wohl:
<form method="GET" action="db_insert.php">
</form>

In dem Formular muss nun nur noch dein Button UND die SelectBox (mit dem name="page_ID") eingefügt werden.
Und dann nimmt das Formular beim absenden durch den unbenannten Button die Selectbox mit dem selektierten Value und hängt es dir an die im Form Tag eingegebenen URL (action) an.


@pax: ich denke er hat iwo noch eine Selectbox :D
 
Da muss ich euch leider enttäuschen, ich nutze keine Selectbox :)
Warum, weis ich gerade nicht, werde das aber in Zukunft mal probieren.
Das Wichtigste hierbei ist: es muss funktioniert! Scheiß egal ob das nun sinnvoll ist, mir geht es gerade nur um die Funktionalität an sich, um das verstehen, warum es bzw. warum es nicht funktioniert. Wenn ich das verstanden habe, kann ich anfangen, etwas zu verbessern. :)

@Flemli200
Das Gleiche gilt für Sessions :) Die habe ich auch noch auf dem Radar.

Also ich habe das so aufgebaut:
Nutzer loggt sich ein und sieht dann alle Gruppen (SQL-Abfrage).
Die Gruppen werden so ausgegeben:
Code:
echo "<tr>\n\t<td><a href='db_gruppeninfo.php?group_ID=".$group_ID."'>"
       . htmlspecialchars($description)
Klickt der Nutzer auf eine Gruppe, wird die Seite db_gruppeninfo.php aufgerufen und die group_ID weitergeben.
In der db_gruppeninfo.php sehe ich alle Gruppeninformationen. Über diesen Informationen steht ein einfacher Button mit einem "+". Drücke ich den, soll der einfach die group_ID der Gruppen nehmen, die ich gerade anschau und an "db_insert" weitergeben.
 
Werbung:
ahsoo... du hast also bereits die group id als get variable im Header :D :D
dann würde ich dafür einen "Fake" button nehmen.
Keinen "Formular"-Submit-Button (finde der gehört in ein Formular ;) )


Also:
du baust das ganze wie folgt auf:
echo "<a href=\"db_insert.php?group_id=".$_GET['group_ID']."\"><button> + </button></a>";

Sollte funktionieren :D
Ist nicht im Ansatz sicher, weil du die GET Variable direkt ausliest und direkt weiter gibst... aber erfüllt seinen Zweck ;)
 
Okay, dann bastel ich das mal da rein.

Wie gesagt, wenn es funktioniert, kann man sich ans verbessern setzen :)
Du würdest das mittels Sessions umsetzen?
Da ich bisher nicht mit Sessions gearbeitet habe, muss ich dich da gleich mal was fragen.

Also ist es möglich, per Klick auf eine Gruppe die ID mittels Session zu speichern und für andere Seiten zu nutzen?
Kann man die ID mittels Klick auf den Zurück-Button wieder löschen?
 
Okay, dann bastel ich das mal da rein.

Wie gesagt, wenn es funktioniert, kann man sich ans verbessern setzen :)
Du würdest das mittels Sessions umsetzen?
Da ich bisher nicht mit Sessions gearbeitet habe, muss ich dich da gleich mal was fragen.

Also ist es möglich, per Klick auf eine Gruppe die ID mittels Session zu speichern und für andere Seiten zu nutzen?
Kann man die ID mittels Klick auf den Zurück-Button wieder löschen?

Möglich schon, aber in diesem Fall sollte man darauf verzichten.
Für den Anfang brauchen dich Sessions nur für Anmeldevorgänge etc zu interessieren.
 
Werbung:
ich stimme scbawik da vollkommen zu...
Sessions sind Variablen, welche einen Wert seitenübergreifend behalten aber anders als konstante variablen veränderbar sind :D (grob ausgedrückt)
Für den Anfang solltest du die nur für Loginprozesse o.ä. nutzen und versuchen für Probleme andere Lösungen zu finden.

Und jetzt wo ich weiß, was du vor hast, brauchst du auch die Sessions nicht...
also... durch den link funktioniert das so wie es soll...

Zur Verbesserung:
Ich würde die GET Variable bevor du sie verwendest prüfen...
Also... Leerzeichen entfernen, Sonderzeichen entfernen, etc...
Sonst kann ich nur über den GET Befehl bsp. auf deine DB zugreifen o.ä. :D
Halt reine Sicherheitsmaßnahmen ;)
(und es kommt drauf an, was du nachher weiter mit der group_ID machst (= )
 
Zuletzt bearbeitet:
Okay, dann schieb ich die Sessions erstmal auf.

Aber irgendwie bekomm ich es auch mit deinem Code (habs abgepasst, da Echo ja bei mir nicht funktioniert) nicht hin.
Ich schick jetzt einfach mal den gesamten Code, vielleicht könnte ihr mir mal sagen, was ich falsch machen.

Code:
<!DOCTYPE html>
<html>
<head>
  <link href="styles/styles.css" rel="stylesheet" type="text/css" />
  <title>Vorbereitete Anweisung: SELECT</title>
  <meta charset="UTF-8" />
</head>
<body>

<div class='rahmen'>

<header>
  <ul id='headerleiste'>
    <li id='header_bearbeiten'><input type="button" value="zurück" onclick="window.location.href='db_gruppen.php'" /></li>
    <li id='header_mitte'>Gruppendetails</li>
    <li id='header_button'><input type="button" value="+" onclick="window.location.href='db_insert.php?group_ID=".$group_ID."'" /></li>
  </ul>    
</header>
<hr>

<div class='main'>            <!--div['main' wird geöffnet]-->
  <div class='content'>

<?php
require_once "db_daten.php";
$group_ID = $_GET['group_ID'];
$suche = $group_ID;
if($stmt = $mysqli->prepare(
          "SELECT
            groups.description,
            account.forename,
...............................

@Flemli200
Ich hab dein Code erstmal weggelassen.
 
Das is aber nich der komplette code oder?!
Also... ich würde an deiner stelle erst einmal aufräumen ;)
m.E. ist Code oben und Ausgabe erfolgt am Ende des Dokuments... aber soweit so gut ;)

Also... du musst nur folgendes austauschen:
VORHER:
<li id='header_button'><input type="button" value="+" onclick="window.location.href='db_insert.php?group_ID=".$group_ID."'" /></li>
NACHHER:
<li id='header_button'><a href=\"db_insert.php?group_id=".$_GET['group_ID']."\"><button> + </button></a></li>

dann sollte das - nach deiner Problembeschreibung - laufen...
 
Werbung:
Nein, irgendwie funktioniert das nicht. So sucht der die Datei localhost/db_insert.php.
Ich hab aber einige Unterodner und alle Dateien liegen im selben Ordner.
Jedenfalls kommt so immer "Zugriff verweigert".
 
Nein, irgendwie funktioniert das nicht. So sucht der die Datei localhost/db_insert.php.
Ich hab aber einige Unterodner und alle Dateien liegen im selben Ordner.
Jedenfalls kommt so immer "Zugriff verweigert".

Das hat dann aber nichts mit dem eigentlichen Problem zu tun, sondern mit den Dateipfaden.
Sieh dir an, welcher Pfad im generierten HTML steht - "localhost/db_insert.php" sicher nicht.
 
Werbung:
Das steht da:

http://localhost/"db_insert.php?group_id=".$_GET['group_ID']."\"

Und für zwischendurch:
Tausend Dank für eure Mühe und Hilfe! Unglaublich wie viel Zeit ihr investiert um anderen zu helfen!

Du müsstest die komplette Zeile posten, so kann ich nur raten:

Entweder die PHP Tags fehlen (<?php ?>) oder
der String wird falsch zusammengesetzt:
echo 'http://localhost/"db_insert.php?group_id=".$_GET['group_ID']."\"';

Überhaupt ist das http://localhost/ fehl am Platz. Von relativen Pfadangaben noch nichts gehört?

Jedenfalls ein einfaches Syntax-Problem.
 
Zurück
Oben