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

Radio Value = active INSERT INTO Table

W

wanjapflueger

Guest
Hey und hallo! :)

Mein Formular soll Fördermitgliedern ermöglichen, den monatlich zu zahlenden Betrag auszuwählen oder selber einzugeben.

Ohne%20Titel.tiff

HTML
Code:
<form name="Formular" action="insert.php" method="post" >
<input type="hidden" name="return" value="insert.php">
<input type="hidden" name="delimiter" value=": ">
        <input type ="radio" name="amount" id="amount_5" value="5"> 5€<br />
        <input type ="radio" name="amount" id="amount_free" onclick="document.Formular.amount_input.focus()"> Eigener Betrag: <input type="text" name="amount" id="amount_input" onfocus="document.Formular.amount_free.checked = true" size="25">
        <br><p>
        <label for="firstName">First Name:</label>
        <input type="text" name="firstname" id="firstName">
    </p>
    <p>
        <label for="lastName">Last Name:</label>
        <input type="text" name="lastname" id="lastName">
    </p>
    <p>
        <label for="emailAddress">Email Address:</label>
        <input type="text" name="email" id="emailAddress">
    </p>
    <a href="javascript:checkRadio()">Submit</a>
     <a href="javascript:document.Formular.reset()">Reset</a>
</form>

und das dazugehörige Script

Code:
function checkRadio()
{
    var radio = document.getElementById("amount_free");
    if (radio.checked){
        radio.value = document.getElementById("amount_input").value;
    }
    document.Formular.submit();
  
}

und die "insert.php" :cool: (form action ->)

Code:
<?php
/* Attempt MySQL server connection. Assuming you are running MySQL
server with default setting (user 'root' with no password) */
$link = mysqli_connect("host", "nutzer", "passwort", "datenbank");
// Check connection
if($link === false){
    die("ERROR: Could not connect. " . mysqli_connect_error());
}
// Escape user inputs for security
$first_name = mysqli_real_escape_string($link, $_POST['firstname']);
$last_name = mysqli_real_escape_string($link, $_POST['lastname']);
$email_address = mysqli_real_escape_string($link, $_POST['email']);
$amount = mysqli_real_escape_string($link, $_POST['amount']);
// attempt insert query execution
$sql = "INSERT INTO test (amount, first_name, last_name, email_address) VALUES ('$amount', '$first_name', '$last_name', '$email_address')";
if(mysqli_query($link, $sql)){
    echo "Records added successfully.";
} else{
    echo "ERROR: Could not able to execute $sql. " . mysqli_error($link);
}
// close connection
mysqli_close($link);
?>


Jetzt kann ich mit diesem Formular 5€ auswählen oder selbst einen Betrag eingeben. Wenn ich die Daten in der DB speichere, funktioniert das allerdings nur wenn ich den Betrag selber eingebe... Auch wenn ich schon was eingegeben hab, mich dann aber umentschieden habe und doch die Vorauswahl von 5€ anklicke, übergibt das Formular den Inhalt des Textfeldes...:eek:

Ich kann also keine 5€ überweisen... :confused:

HILFEEE! Bitte bitte es ist für einen guten Zweck!:)
 
Werbung:
Liegt offenbar daran das du den Input-Name doppelt benützt du solltest für das Input vom Typen Text einen anderen Namen verwenden und dem zweiten Radio z.B. value="userdefined" zuweisen und per php dann prüfen ob ein der Radio für Benutzerdefiniert ausgewählt ist und dann zur Weiterverarbeitung das andere Input Feld als Quelle nutzen.
Hoffe du kannst nachvollziehen was ich meine.
 
Liegt offenbar daran das du den Input-Name doppelt benützt du solltest für das Input vom Typen Text einen anderen Namen verwenden und dem zweiten Radio z.B. value="userdefined" zuweisen und per php dann prüfen ob ein der Radio für Benutzerdefiniert ausgewählt ist und dann zur Weiterverarbeitung das andere Input Feld als Quelle nutzen.
Hoffe du kannst nachvollziehen was ich meine.

Leider nicht so richtig. Value wird doch weitergegeben und bei einer Radio-Gruppe habe alle "name" gleich. So ist es ja auch bei mir nur dass ich den Inhalt des Textfeldes als Value an den 2. Radio übergebe...
 
Werbung:
Leider nicht so richtig. Value wird doch weitergegeben und bei einer Radio-Gruppe habe alle "name" gleich. So ist es ja auch bei mir nur dass ich den Inhalt des Textfeldes als Value an den 2. Radio übergebe...
Ja, das stimmt du übergibst den Value an den Radio Button, allerdings ist NACH dem Radio Butten dein Textfeild mit dem attribute name="amount".
Dies überschreibt alle vorher gesetzten Werte für "amount", und das das input Tag Teil deines Forms ist, wird es auch abgesendet.

Einfach das name attribute für dein #amount_input ändern, oder ganz weglassen.
 
Der Name des Input-Feldes darf auf keinen Fall identisch mit dem Namen der Radiobuttons sein, das kann nur in die Hose gehen! Nenne das Eingabefeld amount_input und versuche es hiermit:
PHP:
$amount = 0;

if ($_POST['amount'] == 'amount_5')
  $amount = 5;
else
  $amount = $_POST['amount_input'];
 
Ja, das stimmt du übergibst den Value an den Radio Button, allerdings ist NACH dem Radio Butten dein Textfeild mit dem attribute name="amount".
Dies überschreibt alle vorher gesetzten Werte für "amount", und das das input Tag Teil deines Forms ist, wird es auch abgesendet.

Einfach das name attribute für dein #amount_input ändern, oder ganz weglassen.


Ich könnte dich knutschen :*

Das funktioniert genau so wie ich es mir vorgestellt habe!!!

MERCI!:):):) und so einfach -.-

PS: hab name einfach weggelassen
 
Werbung:
Der Name des Input-Feldes darf auf keinen Fall identisch mit dem Namen der Radiobuttons sein, das kann nur in die Hose gehen! Nenne das Eingabefeld amount_input und versuche es hiermit:
PHP:
$amount = 0;

if ($_POST['amount'] == 'amount_5')
  $amount = 5;
else
  $amount = $_POST['amount_input'];


Werde das bei gelegenheit auch noch testen, bietet ja auch ne schöne Schnittstelle für andere if-Abfragen. Danke :)
 
Zurück
Oben