Radio Button ins Mysql DB reinschreiben

timmeyy

Mitglied
Hi Leute!
Ich habe folgendes Problem: Ich habe ein HTML-Formular:
HTML:
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Loginscript</title>
</head>
<body>
<center>
<form action="eintrag.php" method="POST">
Benutzername: <br>
<input type ="text" size="25" maxlength="50"
name="username"><br><br>
Email: <br>
<input type="text" size="25" maxlength="50"
name="email"><br><br>

Passwort: <br>
<input type="password" size="25" maxlength="50" name="passwort"><br><br>

Passwort wiederholen:<br>
<input type="password" size="25" maxlength="50"
name="passwort2"><br><br>
<table>
<tr>
<td><input type="radio" name="recht" value="1"></td>
<td><input type="radio" name="recht" value="2"></td>
<td><input type="radio" name="recht" value="3"></td>
<td><input type="radio" name="recht" value="4"></td>
<td><input type="radio" name="recht" value="5"></td>
</tr>
</table>
<input type="submit" value="Abschicken">
</form>

</center>

</body>
</html>

So nun übergebe ich das Formular an ein php-script:
PHP:
<?php
$verbindung = mysql_connect("", "" , "") //connecten zum mysqlserver
or die("Verbindung zur Datenbank konnte nicht hergestellt werden");

mysql_select_db("") or die ("Datenbank konnte nicht ausgewählt werden");

$username = $_POST["username"];
$passwort = $_POST["passwort"];
$passwort2 = $_POST["passwort2"];


// Fehlerabfrage eingabefeld
if($passwort != $passwort2 OR $username == "" OR $passwort == "")
    {
    echo "Eingabefehler. Bitte alle Felder korrekt ausfüllen. <a href=\"eintragen.html\">Zurück</a>";
    exit;
    }
$passwort = md5($passwort);

$result = mysql_query("SELECT id FROM user WHERE name LIKE '$username'");
$menge = mysql_num_rows($result);

if($menge == 0)
    {
    $eintrag = "INSERT INTO user (name, passwort) VALUES ('$username', '$passwort')";
    $eintragen = mysql_query($eintrag);

    if($eintragen == true)
        {
        echo "Benutzername <b>$username</b> wurde erstellt. <a href=\"login.html\">Login</a>";
        }
    else
        {
        echo "Fehler beim Speichern des Benutzernames. <a href=\"eintrag.html\">Zurück</a>";
        }


    }

else
    {
    echo "Benutzername schon vorhanden. <a href=\"eintrag.html\">Zurück</a>";
    }
    
 

	
?>

So 1.wie übernehme ich den angeklickten radiobutton und
2.wie schreibe ich den wert den der radio button hat in meine sql db, der radio button soll bewirken das ich bei dem angelegten user das recht 1 oder recht 2 usw angelegt wird in der db,
das heisst ich schreibe den user mit den angabe(email,usw) in eine datenbank und erkenne an dem gesetzten radio button welche rechte er hat.
Wie setze ich das am besten um?!
ich bedanke mich schonmal im voraus.

mfg
 
Zuletzt bearbeitet:
Hi,

der Inhalt des Radio-Buttons ist ein ganz normaler String, weswegen Du ihn so in die Tabelle eintragen kannst:
PHP:
$recht = $_POST['recht'];
$eintrag = "INSERT INTO user (name, passwort, recht) VALUES ('$username', '$passwort',$recht)";

Leider kenne ich auch keine Möglichkeit, dass perfekt auszulesen. Aber ich mach dies immer so:
PHP:
$row = mysql_fetch_array($select_query);
$checked = "checked = \"checked\"";
switch($row['recht']){
case "1":
$recht1checked = $checked;
break;
case "2":
$recht2checked = $checked;
break;
case "3":
$recht3checked = $checked;
break;
case "4":
$recht4checked = $checked;
break;
case "5":
$recht5checked = $checked;
break;
}
echo '
<input type="radio" name="recht" value="1" '.$recht1checked.' />
<input type="radio" name="recht" value="2" '.$recht2checked.' />
<input type="radio" name="recht" value="3" '.$recht3checked.' />
<input type="radio" name="recht" value="4" '.$recht4checked.' />
<input type="radio" name="recht" value="5" '.$recht5checked.' />';

Ich hoffe ich konnte Dir damit ein wenig helfen.
Grüße
Max

PS: Was sollen Die "<td>"s vor den Radio-Buttons? Ich kann da keine Tabelle entdecken...
 
Ich weis nicht ob es die Performance zulässt aber mir fällt gerade diese Variante zum auslesen ein:
PHP:
$foo1chk = "";
$foo2chk = "";
$foo3chk = "";

$ausgelesen = "2";
$variable = "foo" . $ausgelesen . "chk";
$$variable = 'checked = "checked"';

echo '
<input type="radio" name="foo" value="1" '.$foo1chk.' />
<input type="radio" name="foo" value="2" '.$foo2chk.' />
<input type="radio" name="foo" value="3" '.$foo3chk.' />';
Direkt eine Funktion wert:
PHP:
function InputField($values,

Oder noch kürzer:
PHP:
$ausgelesen = 2;
$chkFoo = array_fill(1, 3, "");
$chkFoo[$ausgelesen] = 'checked = "checked"';

echo '
<input type="radio" name="foo" value="1" '.$chkFoo[1] .' />
<input type="radio" name="foo" value="2" '.$chkFoo[2] .' />
<input type="radio" name="foo" value="3" '.$chkFoo[3] .' />';

Und lustig durcheinander kann ich auch:
PHP:
$ausgelesen = "Vulcano";
$pizza = array("Vulcano", "Gummibaerchen", "Cotzone");

foreach ($pizza as $s)
{
  if ($s == $ausgelesen)
  {
    $s .= 'checked = "checked';
  }
  echo '<input type="radio" name="pizza" value="' . $s. '" />';
}

Das ist direkt eine Funktion wert:
PHP:
/**
 * Generate a group of input fields
 *
 * @param string $type
 * @param array $values
 * @param array $checked
 * @return string
 */
function InputGroup($type, $values, $checked = NULL, $glue = "")
{
	$r = "";	// Return
	$type = '<input type = "' . $type . '" value="';
	
	// nothing is checked: make normal field
	if ($checked === NULL)
	{
		// walk values
		foreach ($values as $s)
		{
			$r .= $type . $s . '" />' . $glue;
		}
		return $r;
	}
	
	foreach ($values as $s)
	{
		// look for checked value(s)
		if (in_array($s, $checked))
		{
			$s .= 'checked="checked"';
		}
		$r .= $type . $s . '" />\n' . $glue;
	}
	return $r;
}

Obwohl die auch fragwürdig ist, vor allem weil $glue zum Schluss einmal zu viel auftauchen wird. Naja, egal :p
 
Zuletzt bearbeitet:
Hi!
Wow! ich danke euch beiden,ich versuche das ganze jetzt mal umzusetzen dann lass ich wieder von mir hören..

@max ja das is eigentlich ne tabelle ich muss das jetzt mal korrigieren.

Danke nochmals!!

mfg
 
Hi timmeyy,

wenn deine Radiobuttons den gleichen Namen haben, . . .

<input type="radio" name="recht" value="1">Superadmin
<input type="radio" name="recht" value="2">Admin
<input type="radio" name="recht" value="3">Miniadmin
<input type="radio" name="recht" value="4">OttoNormal
<input type="radio" name="recht" value="5">Gast

. . . schließen sie sich gegenseitig aus. Heißt . . .

echo $_POST['recht'];

. . . gibt dir den Value-Wert des angewählten Radios aus.



Den Wert legst du dann so . . .

$recht=$_POST['recht'];

insert into tabelle(. . . , recht, . . . usw.)values(. . ., $recht, . . . usw.);

. . . in deiner Tabelle ab.

Gruß
Günni
 
Hallo Leute!
sry für die lange Antwort, danke das funktioniert alles super,aber ich habe bereits gruppen mit einer ID, wenn ich folgenden Mysql Befehl ausführe schreibt er nichts in meine Gruppen Tabelle
PHP:
if($_POST['recht'] == 1)
{
$eintrag = "INSERT INTO grp (rights) VALUES ('$groupadmin') WHERE grp.id = 1";
$eintragen = mysql_query($eintrag);
}

Was is daran falsch? wenn ich die Where klausel weglasse funktioniert es...

Danke euch im voraus..

mfg

edit: mit update gehts sry :)!
 
Zuletzt bearbeitet:
Zurück