Hallo liebe PHP'ler,
ich habe ein Problem, dem ich nicht auf die schliche komme.
Und zwar: Eine Auflistung von Parametern wird dynamisch aus der Datenbank ausgelesen. Diese Parameter sind Kategorisiert. Es existiert eine Verwaltungstabelle, die die Verknüpfungen alle enthält. Unter all den Spalten, gibt es die Spalte "cb_status" die 1 (aktiv) und 0 (inaktiv) ist.
Ob diese Spalte nun 1 oder 0 ist entscheidet der Benutzer im Frontend per Checkbox. Setzt er in ein Kästchen ein Hächcken, so wird der Wert 1 in die Tabelle geschrieben, und so weiter...
Realisiert habe ich es ganz einfach mit UPDATE ... SET ... Es geht so weit, jedoch schlägt bei mir die eindeutige Zuordnung fehl. Im Klartext: Klicke ich ein Kästchen an und schicke das Formular ab, dann werden ALLE Zeilen auf "1" gesetzt und nicht das ausgewählte.
Grübele schon seit einiger Zeit dran und komme zu keinem Ziel. Ich hoffe, es findet jemand von Euch einen Anhaltspunkt aus meinem Code:
SKRIPT 1 (Per DropDown wird Datenbank ausgelesen und zeigt Inhalt an)
PHP-Code:
<?php
error_reporting(E_ALL);
// Verbindungsdaten zur Datenbank und deren Datenbanktabellen \\
require("../../../db.inc.php");
// ********************************************************** \\
$res=mysql_db_query("datenbank_edv", "SELECT edv.prdNr, PAR.parameter, PW.parameterwert, edv.prdZusatz, PW.cb_status, edv.id,
PW.para_id, PW.prd_position, PW.prdkat_id
FROM prd_parawert PW, edv_produkte Edv, prd_parameter PAR, para_kat KAT
WHERE PW.prdid = Edv.id
AND PW.para_id = PAR.para_id
AND PW.prdkat_id = PAR.prd_kategorie
AND PW.Prdkat_id = KAT.prdkat_id
ORDER BY Edv.prdNr, Edv.prdZusatz, PW.prd_position ASC");
while($row=mysql_fetch_array($res,MYSQL_NUM))
{
$pr_nrn[]=$row[0];
$pr_nrn_zu[]=$row[3];
$pr_para[]=$row[1];
$pr_parawert[]=$row[2];
$cb_status[]=$row[4];
$pr_id[]=$row[5];
$pr_para_id[]=$row[6];
$pr_position[]=$row[7];
$pr_kat[]=$row[8];
if(isset($_GET['produkt']) && $_GET['produkt']==$row[0].$row[3])
{
$zeige_produkt=$row;
}
}
echo '
<form name="produktwahl" method="get" action="'.$_SERVER['PHP_SELF'].'">
<select name="produkt" onchange="document.produktwahl.submit()">
<option value="-1">Bitte wählen</option><option value="-1"></option>';
$test=0;
for($z=0;$z<count($pr_nrn);$z++)
{
if(isset($_GET['produkt']) && $_GET['produkt']==$pr_nrn[$z].$pr_nrn_zu[$z])
{
if($test!=$pr_nrn[$z].$pr_nrn_zu[$z])
{
echo '<option value="'.$pr_nrn[$z].$pr_nrn_zu[$z].'" selected>'.$pr_nrn[$z].$pr_nrn_zu[$z].'</option>';
}
}
else
{
if($test!=$pr_nrn[$z].$pr_nrn_zu[$z])
{
echo '<option value="'.$pr_nrn[$z].$pr_nrn_zu[$z].'">'.$pr_nrn[$z].$pr_nrn_zu[$z].'</option>';
}
}
$test=$pr_nrn[$z].$pr_nrn_zu[$z];
}
echo '</select>';
if(isset($zeige_produkt))
{
echo'
<table width="650" border="1" cellspacing="0" cellpadding="3">
<tr><td colspan="3" class="Stil4">Option '; echo $zeige_produkt[0];
echo '</tr></td>';
for($z=0;$z<count($pr_nrn);$z++)
{
if($zeige_produkt[0].$zeige_produkt[3]==$pr_nrn[$z].$pr_nrn_zu[$z])
{
if($pr_para[$z]!="" && $pr_parawert[$z]=="")
{
}
else
{
if($cb_status[$z]=="1")
{
echo '<tr><td><input type="checkbox" name="prdpara['.$pr_para[$z].']" value="'.$pr_position[$z].'" checked></tr></td>';
}
else
{
echo '<tr><td><input type="checkbox" name="prdpara['.$pr_para[$z].']" value="'.$pr_position[$z].'"></tr></td>';
}
echo'
<td width="250" class="Stil3">'.$pr_para[$z].'</td>
<td width="400" class="Stil4">'.$pr_parawert[$z].'</td>
</tr>';
}
}
}
for($z=0;$z<count($pr_nrn);$z++)
{
if($zeige_produkt[0].$zeige_produkt[3]==$pr_nrn[$z].$pr_nrn_zu[$z])
{
echo '
<input type="hidden" name="pr_id[]" value="'.$pr_id[$z].'">
<input type="hidden" name="pr_para_id[]" value="'.$pr_para_id[$z].'">
<input type="hidden" name="pr_kat[]" value="'.$pr_kat[$z].'">';
}
}
}
?>
SKRIPT 2 (Führt UPDATE-Befehl aus)
PHP-Code:
<?php
error_reporting(E_ALL);
// Verbindungsdaten zur Datenbank und deren Datenbanktabellen \\
require("../../../db.inc.php");
// ********************************************************** \\
$prdid = $_POST['pr_id'];
$prdparaid = $_POST['pr_para_id'];
$prdkat = $_POST['pr_kat'];
$cb_status = $_POST['prdpara'];
$position = $_POST['pr_pos'];
var_dump($cb_status);
if(isset($_POST['prdpara']))
{
for($z=0;$z<count($cb_status);$z++)
{
$query_para = "UPDATE prd_parawert
SET prd_parawert.cb_status = '1'
WHERE prd_parawert.prdid = '".$prdid[0]."'
AND prd_parawert.para_id = '".$prdparaid[$z]."'
AND prd_parawert.prdkat_id = '".$prdkat[$z]."'
AND prd_parawert.prd_position = '".$position[$z]."'";
$result=mysql_query($query_para);
}
}
echo mysql_error();
mysql_close($link);
?>
Über einen Denkanstoß wäre ich euch sehr verbunden.
Gruß.