Detta e en delkod från en sida där man ska kunna editera personuppgifter.
I denna kod, som jag har med här, så ska jag lista alla avdelningar företeget har samt vid vilka avdelningar som personen ifråga är medlem i samt vilken titel han/hon har vid den avdelningen.
Allt funkar bra förutom när jag ska kolla om personen redan är medlem, isåfall ska rutan vara ikryssad och titeln inskriven.
Denna kollen funkar grus.
Vad e det jag har gjort för fel?
// denna fråga för att få fram vilka avdelningar som personen i fråga e medlem i samt vilken titel han/hon har
$sqlquery = "SELECT avdelningId, avdelningPersonalTitel FROM tblAvdelningPersonal WHERE personalSignatur = '$personalSignatur'";
$result = mssql_query($sqlquery,$dbconn) or die ("Error in query: $query.");
// lägger in dessa i arrayer för at användas senare vid kontroll
$avdelningId = array();
$avdelningPersonalTitel = array();
$x = 0;
while ($row = mssql_fetch_array($result))
{
$strangen = "AvdelningID: ";
$avdelningId1[$x] = $row["avdelningId"];
$strangen .= $avdelningId1[$x];
$strangen .= " Titel: ";
$avdelningPersonalTitel[$x] = $row["avdelningPersonalTitel"];
$strangen .= $avdelningPersonalTitel[$x];
$strangen .= "<br>\n";
$x++;
}
mssql_free_result($result);
// denna fråga för att få fram alla avdelningar personen ifråga kan vara medlem i
// (d.v.s. alla avdelningar på skolan) :)
$sqlquery = "SELECT avdelningId, avdelningLangtNamn FROM tblAvdelning";
$result = mssql_query($sqlquery,$dbconn) or die ("Error in query: $query.");
$y = 0;
while ($row = mssql_fetch_array($result))
{
$z = 0; // en kontrollvariabel som ändras till 1 om personen e medlem i denna avdelning
$strangen = "<tr>\n<td>\n<input type='hidden' name='tblAvdelningAvdelningId[";
$strangen .= $y;
$strangen .= "]' value='";
$tmpId = $row["avdelningId"];
$strangen .= $tmpId;
$strangen .= "'>\n";
$strangen .= $row["avdelningLangtNamn"];
$strangen .= ": ".$tmpId."<br>\n";
$strangen .= "<input type='checkbox' name='tblAvdelningPersonalAvdelningId2[";
$strangen .= $y;
$strangen .= "]' value=''";
// här kollar vi om personen är medlem i denna avdelning
for ($k=0; $k<sizeof($avdelningId1); $k++)
{
if (strcmp ($tmpId, $avdelningId1[$k]) == 0)
{
$strangen .= " checked";
$titel = $avdelningPersonalTitel[$k];
$z = 1;
}
}
$strangen .= "> \n<input type='text' name='tblAvdelningPersonalTiteltext[";
$strangen .= $y;
$strangen .= "]' class='notistext' value='";
// här kollar vi om $z = 1, då lägger vi in titeln som personen har i denna avdelning
if ($z == 1) {$strangen .= $titel;}
$strangen .= "' size='50' maxlength='100'><br>";
echo ($strangen." ".$z."</td>\n</tr>\n");
$y++;
}
Fungerar det aldrig för någon? T.ex. så nollställer du aldrig $z om du har fått någon match.
Varför gör du jämförelsen i PHP?
Om du gör en outer join mellan tblAvdelningPersonal och tblAvdelning så kan du få allt i en fråga.
$query = "select ap.avdelningPersonalTitel, a.avdelningLangtNamn from tblAvdelningPersonal ap right outer join
tblAvdelning a on ( ap.AvdelningID = a.AvdelningID and personalSignatur = '$personalSignatur' )";
$result = mssql_query($sqlquery,$dbconn) or die ("Error in query: $sqlquery.");
//
while ($row = mssql_fetch_array($result))
{
if ( is_null($row["avdelningPersonalTitel"] ) {
//personen finns ej på denna avdelning
} else {
//personen finns på denna avdelning
}
}