Dynamische Checkbox in DB eintragen

So jetzt funktioniert die Eingabe, allerdings wird jetzt für jede Klasse ein eigener Datensatz erstellt.

Das führt jetzt zu Problemen bei der Ausgabe. Problemen insofern, das ich die Klasse nicht so Darstellen kann:

1: Twi'lek Sith Inquisitor, Sith Krieger

sonder so:
1: Twi'lek Sith Inquisitor
2: Twi'lek Sith Krieger

Wie muss ich das umbauen, damit ich das hinkriege?

//EDIT

OK Ich hab jetzt doch ein kleines Problem mit der Eingabe: und zwar wird immer nur 1 Wert eingetragen

23 1234 1;1;

Ich verwende jetzt diesen Code

PHP:
if(isset($_POST['a']) AND $_POST['a']=='insert_rasse'){
    $sql = ("SELECT MAX(klasse_id) AS maxklasse FROM swtor_klasse");
    $res = mysql_query($sql);
    $a = "";
    if($result = mysql_num_rows($res)){
        while($row = mysql_fetch_assoc($res)){
            $maxklasse = $row['maxklasse'];
        }
    }
    $name = strip_tags(mysql_real_escape_string($_POST['rassenname']));
    
    for($i=1;$i < $maxklasse;$i++){
        $a .= ( $_POST['klasse_'.$i] ? 1 : 0 ).";";  
    }
    mysql_query("INSERT INTO swtor_rasse (rassenname,erlaubteklassen) VALUES ('".$name."', '".$a."')");
	
}
 
Zuletzt bearbeitet:
So mein letzter versuch dir zu helfen^^


Für dein einlesen:
PHP:
if(isset($_POST['a']) AND $_POST['a']=='insert_rasse'){
	
    $sql = "SELECT klasse_id FROM swtor_klasse";
    $res = mysql_query($sql);
    $a = "";
    $name = strip_tags(mysql_real_escape_string($_POST['rassenname']));
    
    while($obj = mysql_fetch_object($res)){
        $a .= ( $_POST['klasse_'.$obj->klasse_id] ? 1 : 0 ).";"; // falls das klasse_ auch in der datenbank steht bitte entfernen^^
    }
    @mysql_query("DELETE FROM swtor_rasse WHERE rassennname = '".$name."'");
    mysql_query("INSERT INTO swtor_rasse (rassenname,erlaubteklassen) VALUES ('".$name."', '".$a."')");    
}


Und für die ausgabe der erlaubten klassen:
PHP:
function get_klassen()
{
	$res = mysql_query("SELECT * FROM swtor_rasse");
	while($obj = mysql_fetch_object($res))
	{
		$ausgabe = $obj->rassenname.": ";
		$classes = explode(";",$obj->erlaubteklassen);
		for($i=0;$i<count($classes);$i++)
		{
			$res = mysql_query("SELECT name FROM swtor_klasse WHERE id=".$classes[$i]);
			$ausgabe .= mysql_result($res,0).($i==(count($classes)-1)?"<br>":", ");
		}
	}
	return $ausgabe;
}

du musst einfach nur die methode aufrufen und den rückgabewert ausgeben!
PHP:
echo get_klassen();
 
Zuletzt bearbeitet:
So danke jetzt wirds mal so eingetragen wie es sein sollte. Leider haperts an der Ausgabe:

PHP:
Warning: mysql_result() [function.mysql-result]: Unable to jump to row 0 on MySQL result index 18 in C:\xampp\htdocs\swtor\acp\acpcore\function.php on line 15

Hier die Funktion:

PHP:
function get_klassen()
{
//$i = "0";
    $res = mysql_query("SELECT * FROM swtor_rasse");
    while($obj = mysql_fetch_object($res))
    {
        $ausgabe = $obj->rassenname.": ";
        $classes = explode(";",$obj->erlaubteklassen);
        for($i=0;$i<count($classes);$i++)
        {
			$sql = ("SELECT klassenname FROM swtor_klasse WHERE klasse_id='".$classes[$i]."'");
            $res = mysql_query($sql) or trigger_error('Fehler in Query "'.$sql.'". Fehlermeldung: '.mysql_error(),E_USER_ERROR);
            $ausgabe .= mysql_result($res,0).($i==(count($classes)-1)?"<br>":", ");
        }
      // $i++;
		include('/tpl/acp_rasselist_content.tpl');

    }
    return $ausgabe;
}

Ich hab schon einiges gefixt aber diese Warnung krieg ich nicht weg. Hast du ne Idee?
 
PHP:
function get_klassen()
{
//$i = "0";
    $res = mysql_query("SELECT * FROM swtor_rasse");
    while($obj = mysql_fetch_object($res))
    {
        $ausgabe = $obj->rassenname.": ";
        $classes = explode(";",$obj->erlaubteklassen);
        for($i=0;$i<count($classes);$i++)
        {
            $sql = ("SELECT klassenname FROM swtor_klasse WHERE klasse_id='".$classes[$i]."'");
            $res = mysql_query($sql) or trigger_error('Fehler in Query "'.$sql.'". Fehlermeldung: '.mysql_error(),E_USER_ERROR);
            $row = mysql_fetch_object($sql);
            $ausgabe .= $row->klassenname.($i==(count($classes)-1)?"<br>":", ");
        }
      // $i++;
        include('/tpl/acp_rasselist_content.tpl');

    }
    return $ausgabe;
}

kannst es ja mal so versuchen..
 
Ich habs jetzt so abgewandelt, das ichs mit meinen Templates verwenden kann.

PHP:
<?php
require_once('acpcore/check_login.func.php');
include('acpcore/function.php');
include('/tpl/acp_rasselist_header.tpl');

$j = "0";
$res = mysql_query("SELECT * FROM swtor_rasse");
while($obj = mysql_fetch_object($res))
{
	$name = $obj->rassenname;
	$j++;
	$classes = explode(";",$obj->erlaubteklassen);
	for($i=0;$i<count($classes);$i++)
	{				
		$res = mysql_query("SELECT klassenname FROM swtor_klasse WHERE klasse_id='".$classes[$i]."'");
		$row = mysql_fetch_object($res) ;
		$klasse = $row->klassenname.", ";       	
	}
	include('/tpl/acp_rasselist_content.tpl');
}

include('/tpl/acp_rasselist_footer.tpl');
?>

Notice: Trying to get property of non-object on Line 17.

Zeile 17
PHP:
$klasse = $row->klassenname.", ";

Die Warnung tritt auch beim Originalcode aud.
 
dan prüfe mal den SQL Query.
Denn hellsehen falls deine Datenbank anders aufgebaut ist
bzw. du wieder was geändert hast kann ich nicht.
Und am PHP Code kann es theoretisch nicht liegen.
 
Der SQL Query gibt ein Ergebnis zurück, hab ich mehrmals geprüft, bevor ich gepostet habe.

Ich lass das jetzt mal liegen, vielleicht find ich den Fehler selber irgendwo.

Danke für die Hilfe.
 
Zurück