Avatar billede svjensen Nybegynder
21. maj 2005 - 07:17 Der er 10 kommentarer og
1 løsning

Checkbox til array

Jeg har et problem med at overføre data fra checkboxe til arrays.

Jeg opstiller følgende:

$strSQLYears = "SELECT * FROM kontingent_years ORDER BY year";
$resYears = mysql_query($strSQLYears);

while ($rowYears = mysql_fetch_assoc($resYears))
{
  echo "<td class=TDCenter><input class=checkbox type=checkbox name=\"".$rowYears['year']."[]\" value=\"".$row['member_id']."\"";

  $strSQLPaid = "SELECT * FROM kontingent_year_combi WHERE year = '".$rowYears['year']."' AND member_id ='".$row['member_id']."'";
  $resPaid = mysql_query($strSQLPaid);

  if (mysql_num_rows($resPaid) == "1")
  {
    echo " checked></td>";
  }
  else
  {
    echo " ></td>";
  }
}

hvilket virker fint.

I modtagerenden forsøger jeg med:

foreach ($_POST as $felt)
{
  echo $felt;
  for ( $i = 0; $i < count($felt); $i=$i+1 )
  {
    $strSQL1 = "SELECT * FROM kontingent_year_combi WHERE member_id = '".$felt[$i]."' AND year = '".$felt."'";
    $res1 = mysql_query($strSQL1);

    if ( mysql_num_rows($res1) == 0 )
    {
      $strSQLInsert = "INSERT INTO kontingent_year_combi (year, member_id) VALUES ('".$felt."', '".$felt[$i]."')";
      $resInsert = mysql_query($strSQLInsert);
    }
  }

  $strNotIn = "";
  for ( $i = 0; $i < count($felt); $i=$i+1 )
  {
    $strNotIn = $strNotIn."'".$felt[$i]."', ";
  }
  $strNotIn = substr($strNotIn, 0, strlen($strNotIn) - 2);
}

$strSQLNotIn = "SELECT member_id FROM members WHERE member_id NOT IN (".$strNotIn.")";
$resNotIn = mysql_query( $strSQLNotIn );

while ($rowNotIn = mysql_fetch_assoc($resNotIn))
{
  $strSQL2 = "SELECT * FROM kontingent_year_combi WHERE member_id = '".trim($rowNotIn['member_id'])."' AND year = '".$felt."'";
  $res2 = mysql_query($strSQL2);
     
  if (mysql_num_rows($res2) > 0)
  {
    $strSQL3 = "DELETE FROM kontingent_year_combi WHERE member_id = '".trim($rowNotIn['member_id'])."' AND year = '".$felt."'";
    //$res3 = mysql_query($strSQL3);
    echo $strSQL3;
  }
}

Hvis jeg prøver med echo $felt får jeg 'Array'
Avatar billede svjensen Nybegynder
21. maj 2005 - 07:18 #1
Mit udgangspunkt har været http://eksperten.dk/spm/533723
Avatar billede nielle Nybegynder
21. maj 2005 - 08:23 #2
Jamen, det er da også korrekt - $felt er et Array. Hvad var det du ville have?
Avatar billede svjensen Nybegynder
21. maj 2005 - 09:49 #3
Jeg kender ikke på forhånd antallet af checkboxe (det kunne fx være '2005', '2006' og '2007'), hvorfor jeg har behov for automatisk at hente alle checkboxe og loope igennem dem. Jeg har i enden anledning benyttet mig af 'foreach ($_POST as $felt =>$indhold)' hvilket gav mig feltets navn, og dets indhold.

Min ide var at gøre noget lignende i dette tilfælde, og havde troet/regnet med at jeg kunne få navnene på checkboxene på den måde, for så at kunne arbejde videre med dem. Men det driller jo altså lidt.
Avatar billede svjensen Nybegynder
21. maj 2005 - 09:50 #4
Jeg har altså brug for automatisk af hente alle cehckboxe og indholdet af dem.
Avatar billede nielle Nybegynder
21. maj 2005 - 11:19 #5
Den bedste måde at hente alle checkbokse, og deres indhold, er ved at afspejle den måde som når du opretter dem:

$strSQLYears = "SELECT * FROM kontingent_years ORDER BY year";
$resYears = mysql_query($strSQLYears);

while ($rowYears = mysql_fetch_assoc($resYears))
{
    $Year = $rowYears['year'];
    $CheckboxesForYear = $_POST[$Year];

    for ($i=0; $i<count($CheckboxesForThisYear); $i++)
    {
        $Member_id = $CheckboxesForYear[$i];

        // ... resten af din kode ...
    }
}
Avatar billede svjensen Nybegynder
21. maj 2005 - 16:11 #6
Ideen er jo så oplagt, at jeg slet ikke havde overvejet den ;-)

Men der er stadig et problem.

$Member_id er blank, hvilket jo giver problemer i det efterfølgende.
Avatar billede nielle Nybegynder
21. maj 2005 - 16:24 #7
Tid til lidt debug kode... Prøv at udskrive værdien af count($CheckboxesForThisYear) før du går ind i løkken. Den skulle da forhåbentlig ikke være 0.
Avatar billede svjensen Nybegynder
21. maj 2005 - 16:38 #8
Det er den heller ikke. Løkken eksekveres det rigtige antal gange, men uden indhold
Avatar billede svjensen Nybegynder
21. maj 2005 - 16:51 #9
Jeg erstattede $CheckboxesForYear[$i] med $_POST[$Year][$i] og det hjalp af en eller anden grund.

Men den sidste del af koden driller lidt lige nu. Jeg prøver mig lige lidt frem ...
Avatar billede svjensen Nybegynder
21. maj 2005 - 17:04 #10
Så dur det.
Jeg skulle blot foretage samme erstatning længere nede.

Tak for hjælpen. Sender du et svar?
Avatar billede nielle Nybegynder
21. maj 2005 - 17:07 #11
Svar :^)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester