Radio-Button + while schleife + MySQL

Rafioso

Mitglied
Hallo allerseits ich habe ein Problem (was denn sonnst auch)

Ich habe hier ein Code, was den Wert aus einer MySQL Tabelle liest, indem Userdaten gespeichert sind.

Also können beim Aufrufen der Datei z.B. 4 User stehen oder auch mal 1223 User ;)

Das ganze ist in einer while Schleife.

Nun habe ich hinter jedem User 2 Radio Buttons, die dazu diehnen den User zu aktivieren, oder zu deaktivieren.

Desweiteren wollte ich fragen, wie ich es dann hinbekomme, dass die ausgewählten Radio-Buttons beim klick auf Übernehmen auch wirklich mit der Eigenschaft übernehmen wird. Und somit die MySQL Datenbank updatet.

Nur wie bekomme ich es zum laufen?

Auf dem Bild (im Anhang) könnt ihr sehen, wie es bis jetzt aussieht.

Und hier ist der jetzige Code:

PHP:
<?php
###################################################################
############## MySQL Abfragesystem von Rafioso ####################
###################################################################


###################################################################
################ MySQL Zugangsdaten eingeben ######################
###################################################################
$abfrage = mysql_connect ("HOST", "NAME", "PW");  
if (!mysql_select_db ("DATENBANK", $abfrage))  
{  
  die ("Sorry keine Verbindung zur ausgewählten  Datenbank");  
}	

###################################################################
################# Ab hier nichts mehr verändern ###################
###################################################################
    $sql = "SELECT 
				Id,
                Nickname,
                active
	        FROM                
				TEST          
			ORDER BY                
				active ASC,
				Id ASC;";
     $result = mysql_query($sql) OR die(mysql_error());     
	          
    
?>
<table border="1" width="700" cellspacing="1" cellpadding="1" bgcolor="#ADEF00" style="color:#000000">
 <tr>
  <td align="center" valign="top"><strong><font size="4">Aktivierungen</font></strong> <br>
    <font size="2">Sortiert nach dem Aktivierungsstatus</font></td> 
 </tr>
</table>
<table border="1" width="700" cellspacing="1" cellpadding="1" bgcolor="#CCCCCC" style="color:#000000"> 
 <tr>
  <td width="10%" align="center" valign="top"><strong>ID</strong></td>
  <td width="40%" align="center" valign="top"><strong>User</strong></td>
  <td width="20%" align="center" valign="top"><p><strong>Aktiviert</strong><br>
      <font size="2">1=Ja 0=Nein</font></p></td>
  <td width="30%" colspan="2" align="center" valign="top"><strong>Aktivieren</strong><br />Hier kannst du User aktivieren<br />bzw. deaktivieren</td>	  
 </tr>
  
<?php
	 while($row = mysql_fetch_assoc($result)) { 
?>
 <tr>
  <td width="10%" align="center" valign="middle"><?php echo $row['Id']; ?></td> 
  <td width="40%" align="center" valign="middle"><?php echo $row['Nickname']; ?></td> 
  <td width="20%" align="center" valign="middle"><?php echo $row['active']; ?></td>
  <td width="15%" align="center" valign="middle">Aktivieren<br />Deaktivieren</td>
  <td width="15%" align="center" valign="middle"><input name="set" type="radio" value="1">
  <br /><input name="set" type="radio" value="0"></td>
 </tr> 
<?php  
} 
?>
</table>
<table border="1" width="700" cellspacing="1" cellpadding="1" bgcolor="#ADEF00" style="color:#000000"> 
 <tr>
  <td align="center" valign="middle"><input name="$ok" type="button" id="$ok" value="&Uuml;bernehmen"></td>
 </tr> 
</table>



Vielen Dank
 

Anhänge

  • test.JPG
    test.JPG
    28,3 KB · Aufrufe: 67
Zuletzt bearbeitet:
Hallo,
probier mal das hier:
PHP:
<?php
###################################################################
############## MySQL Abfragesystem von Rafioso ####################
###################################################################


###################################################################
################ MySQL Zugangsdaten eingeben ######################
###################################################################
$abfrage = mysql_connect ("HOST", "NAME", "PW");  
if (!mysql_select_db ("DATENBANK", $abfrage))  
{  
  die ("Sorry keine Verbindung zur ausgewählten  Datenbank");  
}    

###################################################################
################# Ab hier nichts mehr verändern ###################
###################################################################

if (isset($_POST['ok'])){
    foreach ($_POST['set'] as $userid => $value){
        mysql_query('UPDATE `TEST` SET `active` = "'.intval($value).'" WHERE `Id` = "'.intval($userid).'"') or die(mysql_error());
    }
}

    $sql = "SELECT 
                Id,
                Nickname,
                active
            FROM                
                TEST          
            ORDER BY                
                active ASC,
                Id ASC;";
     $result = mysql_query($sql) OR die(mysql_error());     
              
    
?>
<table border="1" width="700" cellspacing="1" cellpadding="1" bgcolor="#ADEF00" style="color:#000000">
 <tr>
  <td align="center" valign="top"><strong><font size="4">Aktivierungen</font></strong> <br>
    <font size="2">Sortiert nach dem Aktivierungsstatus</font></td> 
 </tr>
</table>
<table border="1" width="700" cellspacing="1" cellpadding="1" bgcolor="#CCCCCC" style="color:#000000"> 
 <tr>
  <td width="10%" align="center" valign="top"><strong>ID</strong></td>
  <td width="40%" align="center" valign="top"><strong>User</strong></td>
  <td width="20%" align="center" valign="top"><p><strong>Aktiviert</strong><br>
      <font size="2">1=Ja 0=Nein</font></p></td>
  <td width="30%" colspan="2" align="center" valign="top"><strong>Aktivieren</strong><br />Hier kannst du User aktivieren<br />bzw. deaktivieren</td>      
 </tr>
  
<?php
     while($row = mysql_fetch_assoc($result)) { 
?>
 <tr>
  <td width="10%" align="center" valign="middle"><?php echo $row['Id']; ?></td> 
  <td width="40%" align="center" valign="middle"><?php echo $row['Nickname']; ?></td> 
  <td width="20%" align="center" valign="middle"><?php echo $row['active']; ?></td>
  <td width="15%" align="center" valign="middle">Aktivieren<br />Deaktivieren</td>
  <td width="15%" align="center" valign="middle"><input name="set[<?php echo $row['Id']; ?>]" type="radio" value="1">
  <br /><input name="set[<?php echo $row['Id']; ?>]" type="radio" value="0"></td>
 </tr> 
<?php  
} 
?>
</table>
<table border="1" width="700" cellspacing="1" cellpadding="1" bgcolor="#ADEF00" style="color:#000000"> 
 <tr>
  <td align="center" valign="middle"><input name="ok" type="submit" id="ok" value="&Uuml;bernehmen"></td>
 </tr> 
</table>

mfg
forsterm
 
Zuletzt bearbeitet:
Dankeschön :)

Funktioniert, aber man muss am Ende das weglassen:

<?php } ?>

Jetzt noch eine Frage, wie kann ich es nun machen, dass das Ausgewählte in die MySQL Tabelle eingetragen wird, wenn ich auf den Button Übernehmen klicke?
 
Zuerst mußt du in deinem HTML-Code ein Form-Tag einfügen. Das ist bis jetzt nicht drinnen. Du hast zwar einen Button aber kein Formular zum abschicken. Wenn du das gemacht hast schickst du die Daten entweder an eine 2. Seite oder behälst sie auf der einen. Du kannst dann mittels
PHP:
$_POST["deineVariable"];
Auf deine Daten zugreifen. Dann mußt du nur noch ein Insert in deine DB machen. In der Art
sql Code:
  1. INSERT INTO deineTabelle(id, name....) VALUES('".$_POST["id"]."','".$_PST["name"]."');

.
Vorher solltest du aber noch überprüfen ob die Daten auch korrekt sind. Sonst könnten mit SQL-Injections deine ganze DB-Struktur zerstört werden. Dazu solltest du dir das mal anschauen http://www.php.net/manual/de/function.mysql-real-escape-string.php

MFG

ronaldo
 
Dankeschön :)

Funktioniert, aber man muss am Ende das weglassen:

<?php } ?>

Jetzt noch eine Frage, wie kann ich es nun machen, dass das Ausgewählte in die MySQL Tabelle eingetragen wird, wenn ich auf den Button Übernehmen klicke?
Hallo,
stimmt, den letzten PHP Teil musst du weglassen, mein Fehler. :rolleyes:
Hab's geändert. :)
Was willst du denn in die Datenbank eintragen? :confused:
Willst du eventuell, dass der "richtig" Radiobutton, sprich der, welcher dem aktuellen Status des Users entspricht automatisch ausgewählt ist?

mfg
forsterm
 
Hallo,
stimmt, den letzten PHP Teil musst du weglassen, mein Fehler. :rolleyes:
Hab's geändert. :)
Was willst du denn in die Datenbank eintragen? :confused:
Willst du eventuell, dass der "richtig" Radiobutton, sprich der, welcher dem aktuellen Status des Users entspricht automatisch ausgewählt ist?

mfg
forsterm

Also zur Zeit zeigt er ja in der mittleren Spalte an ob der User aktiviert ist oder nicht.
Mit den Radiobuttons möchte ich nun den User aktivieren bzw. deaktivieren.

Also Beispiel:

User XYZ ist zurzeit deaktiviert und User 123 ist zur Zeit aktiviert.
Den User XYZ möchte ich aktivieren und den User 123 deaktivieren, da er einfach unhöflich ist ;)
Also klicke ich bei XYZ auf den Radio-Button aktivieren und bei 123 auf den Radio-Button deaktivieren.
Dann klicke ich auf Übernehmen.
Und nun ist der User XYZ aktiviert und 123 deaktiviert.

Ich hoffe ich habe es verständlich erklärt :)


Zuerst mußt du in deinem HTML-Code ein Form-Tag einfügen. Das ist bis jetzt nicht drinnen. Du hast zwar einen Button aber kein Formular zum abschicken. Wenn du das gemacht hast schickst du die Daten entweder an eine 2. Seite oder behälst sie auf der einen. Du kannst dann mittels
PHP:
$_POST["deineVariable"];
Auf deine Daten zugreifen. Dann mußt du nur noch ein Insert in deine DB machen. In der Art
sql Code:
  1. INSERT INTO deineTabelle(id, name....) VALUES('".$_POST["id"]."','".$_PST["name"]."');

.
Vorher solltest du aber noch überprüfen ob die Daten auch korrekt sind. Sonst könnten mit SQL-Injections deine ganze DB-Struktur zerstört werden. Dazu solltest du dir das mal anschauen http://www.php.net/manual/de/function.mysql-real-escape-string.php

MFG

ronaldo
Danke für den Ansatz :)

Müsste es aber nicht in der MySQL Anweisung UPDATE heissen, anstatt INSERT ?
Und wie geht das, dass ich es in der gleichen Seite mache?

Wäre nett, wenn ihr mein Code erweitern würdet.

MfG
Rafioso
 
Hallo,
Also zur Zeit zeigt er ja in der mittleren Spalte an ob der User aktiviert ist oder nicht.
Mit den Radiobuttons möchte ich nun den User aktivieren bzw. deaktivieren.

Also Beispiel:

User XYZ ist zurzeit deaktiviert und User 123 ist zur Zeit aktiviert.
Den User XYZ möchte ich aktivieren und den User 123 deaktivieren, da er einfach unhöflich ist ;)
Also klicke ich bei XYZ auf den Radio-Button aktivieren und bei 123 auf den Radio-Button deaktivieren.
Dann klicke ich auf Übernehmen.
Und nun ist der User XYZ aktiviert und 123 deaktiviert.

Ich hoffe ich habe es verständlich erklärt :)
eigentlich müsste das doch mit dem Beispiel was ich vorhin gepostet hab eh schon funktionieren, oder etwa nicht?

mfg
forsterm
 
Nicht ganz.

Du hast mir zwar sehr geholfen, da ich jetzt bei jedem Aufgelisteten User einen Radio-Button aktivieren kann, aber dass diese Einstellung auch übernommen und ich die MySQL Datenbank eingetragen wird, funktioniert nicht.

Wenn der Radio-Button auf "Aktivieren" steht, dann sollte da eine "1" sein.
Wenn der Radio-Button auf "Deaktivieren" steht, dann sollte es eine "0" sein.

Wäre über eine Lösung erfreut :)

MfG
Rafioso
 
Hallo,
ok, es hat nicht funktioniert, da du kein Formular (<form></form>) definiert hattest.
So sollte es nun aber funktionieren:
PHP:
<?php
###################################################################
############## MySQL Abfragesystem von Rafioso ####################
###################################################################


###################################################################
################ MySQL Zugangsdaten eingeben ######################
###################################################################
$abfrage = mysql_connect ("localhost", "root", "");  
if (!mysql_select_db ("datenbank", $abfrage))  
{  
  die ("Sorry keine Verbindung zur ausgewählten  Datenbank");  
}    

###################################################################
################# Ab hier nichts mehr verändern ###################
###################################################################

if (isset($_POST['ok'])){
    if (count($_POST['set']) > 0){
        foreach ($_POST['set'] as $userid => $value){
            mysql_query('UPDATE `TEST` SET `active` = "'.intval($value).'" WHERE `Id` = "'.intval($userid).'"') or die(mysql_error());
        }
    }
}

    $sql = "SELECT 
                Id,
                Nickname,
                active
            FROM                
                TEST          
            ORDER BY                
                active ASC,
                Id ASC;";
     $result = mysql_query($sql) OR die(mysql_error());     
              
    
?>
<form method="post" action="<?php echo $_SERVER['PHP_SELF']; ?>">
<table border="1" width="700" cellspacing="1" cellpadding="1" bgcolor="#ADEF00" style="color:#000000">
 <tr>
  <td align="center" valign="top"><strong><font size="4">Aktivierungen</font></strong> <br>
    <font size="2">Sortiert nach dem Aktivierungsstatus</font></td> 
 </tr>
</table>
<table border="1" width="700" cellspacing="1" cellpadding="1" bgcolor="#CCCCCC" style="color:#000000"> 
 <tr>
  <td width="10%" align="center" valign="top"><strong>ID</strong></td>
  <td width="40%" align="center" valign="top"><strong>User</strong></td>
  <td width="20%" align="center" valign="top"><p><strong>Aktiviert</strong><br>
      <font size="2">1=Ja 0=Nein</font></p></td>
  <td width="30%" colspan="2" align="center" valign="top"><strong>Aktivieren</strong><br />Hier kannst du User aktivieren<br />bzw. deaktivieren</td>      
 </tr>
  
<?php
     while($row = mysql_fetch_assoc($result)) { 
?>
 <tr>
  <td width="10%" align="center" valign="middle"><?php echo $row['Id']; ?></td> 
  <td width="40%" align="center" valign="middle"><?php echo $row['Nickname']; ?></td> 
  <td width="20%" align="center" valign="middle"><?php echo $row['active']; ?></td>
  <td width="15%" align="center" valign="middle">Aktivieren<br />Deaktivieren</td>
  <td width="15%" align="center" valign="middle"><input name="set[<?php echo $row['Id']; ?>]" type="radio" value="1"<?php echo $row['active'] == 1 ? ' checked="checked"' : ''; ?>>
  <br /><input name="set[<?php echo $row['Id']; ?>]" type="radio" value="0"<?php echo $row['active'] == 0 ? ' checked="checked"' : ''; ?>></td>
 </tr> 
<?php  
} 
?>
</table>
<table border="1" width="700" cellspacing="1" cellpadding="1" bgcolor="#ADEF00" style="color:#000000"> 
 <tr>
  <td align="center" valign="middle"><input name="ok" type="submit" id="ok" value="&Uuml;bernehmen"></td>
 </tr> 
</table>
</form>

mfg
forsterm
 
Zurück