Radiobutton und MYSQL Update

nchristoph

Erfahrenes Mitglied
Hallo Zusammen,

Ich sitze da an einem kleinen Problem mit meinem Thememanager:

Ich wähle mittels Formular den Defaulttheme aus, und wenn ich speichere, sollen, wenn mehrere Themes installiert sind, bei den anderen Themes das Default auf 0 gesetzt werden, beim ausgewählten Allerdings auf 1.

Auswählen tue ich den Defaulttheme mittels Radiobutton.

Code:
<form id="form1" name="form1" method="post" action="">
  <label for="theme 1">Theme 1
  <input id="theme 1" type="radio" name="radio" id="defaultheme" value="defaultheme" />
  </label>
    <label for="theme 2">Theme 2
  <input id="theme 2" type="radio" name="radio" id="defaultheme" value="defaultheme" />
  </label>
  <label for="theme 3">Theme 3
  <input id="theme 3" type="radio" name="radio" id="defaultheme" value="defaultheme" />
  </label>
</form>

So in etwa ist mein Formular aufgebaut.

Ich weis, wie ich checken kann, ob ein Radiobutton ausgewählt ist, aber was muss ich beim MYSQL Update beachten?

PHP:
 $SQL = mysql_query("UPDATE templates SET 'isdefault' ='1' WHERE mysql_real_escape_string($_POST['radio']) = 'checked'");

Muss ich da als erstes alle auf 0 setzten und dann den einen auf 1 oder geht das auch in einem aufwischen?

Grüsse
 
Hi,

Als erstes gibst du den Radio-Buttons die ID der Templates (Spalte in der DB, die den Primärschlüssel PRIMARY KEY enthält). Den Namen der Radios würde ich auf was aussage kräftigeres wie z.B. "themeId" setzen.

Du setzt erst bei allen Datensätzen "isdefault" auf 0 und dann bei dem neuen Default-Theme "isdefault" auf 1.

Das schaut in etwa so aus (die Spalte "id" ist der PRIMARY KEY):
PHP:
mysql_query("UPDATE templates SET `isdefault` = 0");
mysql_query("UPDATE templates SET `isdefault` = 1 WHERE `id` = " . mysql_real_escape_string($_POST["themeId"]));

Ein genaueres Beispiel kann ich dir nur geben, wenn ich die Struktur deiner MySQL-Tabelle sehe.

Gruß Kyôya Stefan
 
Zuletzt bearbeitet:
Also muss ich 2 Updates machen, hab ich mir fast gedacht.

PHP:
	1 	tem_id 	int(11) 			Nein 	kein(e) 	AUTO_INCREMENT 	Ändern Ändern 	Löschen Löschen 	Mehr Weitere Aktionen anzeigen
	2 	name 	varchar(255) 	latin1_swedish_ci 		Nein 	kein(e) 		Ändern Ändern 	Löschen Löschen 	Mehr Weitere Aktionen anzeigen
	3 	pfad 	varchar(255) 	latin1_swedish_ci 		Nein 	kein(e) 		Ändern Ändern 	Löschen Löschen 	Mehr Weitere Aktionen anzeigen
	4 	isdefault 	tinyint(1) 			Nein 	kein(e) 		Ändern Ändern 	Löschen Löschen 	Mehr Weitere Aktionen anzeigen

Hier hast du die genaue Struktur.

Wie muss dann das Formular aussehen? Da stehe ich etwas auf dem Schlauch grad, liegt wohl auch an der Uhrzeit.
 
Wenn die Ausgabe vom phpMyAdmin ist, dann pack bitte mal die Indiezies noch dazu oder poste den Output vom MySQL Statement
Code:
DESCRIBE templates

Zum Erstellen des Formulares:
PHP:
$result = mysql_query("SELECT `id`, `name`, `isdefault` FROM `templates`");
$templates = array();
while ($row = mysql_fetch_array($result, MYSQL_ASSOC) {
    $templates[] = $row;
}
Zum Rendern des Formulares:
PHP:
<form id="form1" name="form1" method="post" action="">
<?php foreach ($templates as $template) { ?>
  <label for="theme_<?php echo $template['tem_id']; ?>"><?php echo $template['name']; ?>
  <input id="theme_<?php echo $template['tem_id']; ?>" type="radio" name="templateId" value="<?php echo $template['tem_id']; ?>"<?php echo ($template['isdefault'] == 1) ? ' checked="checked"' : ''; ?> />
<?php } // foreach ?>
  <input type="button" value="Default-Theme festlegen" />
</form>

Der Code zum Einstellen in der DB schaut dann so aus:
PHP:
mysql_query("UPDATE templates SET `isdefault` = 0");
mysql_query("UPDATE templates SET `isdefault` = 1 WHERE `tem_id` = " . mysql_real_escape_string($_POST["templateId"]));

Gruß Kyôya Stefan
 
Zuletzt bearbeitet:
Wow Danke, das funktioniert wie geschmiert.

Den Updatevorgang kann ich ja theoretisch auch verwenden, dass ich ein neues Template bzw. jetzt noch Theme installiere.

Danke für die Hilfe.
 
Zurück