Page 1 of 1

Checkboxen auswerten in Array

Posted: Mon Jul 14, 2014 6:31 pm
by Nikolino10
Hallo,

Ich such schon seit tagen eine antwort für mein checkboxen problem!
Ich habe eine variable $category in welcher die Kategorie von einem Produkt gespeichert ist (diese lese ich mit SQL statements aus der DB)
Ich möchte drei checkboxen (1: Category A, 2: Category B and 3: Category C) und einen submit button anzeigen. Wenn man jetzt etwas checked, sollen die gecheckten werte in ein Array gespeichert werden. Dann durchsuche ich das Array ob sich $category darin befindet und arbeite dann damit weiter.

Hier mein Code für die Checkboxen:

Code: Select all

<form action="default_grid.php" method="post">
Filtern nach:
   <input type="checkbox" name="c_a" value="Cat A" checked="checked"/> Cat A 
   <input type="checkbox" name="c_b" value="Cat B" checked="checked"/> Cat B
   <input type="checkbox" name="c_c" value="Cat C" checked="checked"/> Cat C 
 
   <input type="submit" value="Anzeigen"/>
</form>

Welchen php Code brauch ich jetzt für die Speicherung in einem Array
Ich glaue etwas mit JRequest::getVar

Danke,
Nik

Re: Checkboxen auswerten in Array

Posted: Tue Jul 15, 2014 12:03 am
by RedEye
Zunächst mal musst du deine Form ändern:

Code: Select all

<input type="checkbox" name="c[]" value="Cat A" checked="checked"/>
<input type="checkbox" name="c[]" value="Cat B" checked="checked"/>
<input type="checkbox" name="c[]" value="Cat C" checked="checked"/>
Die Klammern sind ausschlaggebend hier!

JRequest ist schon seit ner Ewigkeit überholt, benutze JInput.
http://docs.joomla.org/Retrieving_reque ... ing_JInput

Code: Select all

$categorieArray = JFactory::getApplication()->input->post->get('c', null, 'array');

Re: Checkboxen auswerten in Array

Posted: Tue Jul 15, 2014 3:06 pm
by Nikolino10
vielen Dank RedEye für die schnelle Antwort!!!!

ich glaube ich hab noch paar probleme bei der überprüfung ob $produkt_kategorie (die kategorie die ich aus der DB gelesen hab) gleich einem gecheckten element ist.

Code: Select all

for ($x=0, $x < count( $categorieArray ); $x++)
	{
		if($produkt_kategorie == $categorieArray[$x])
		{
                       ...
                 }
         }
ich hab außerdem

Code: Select all

echo "$categorieArray[0]";
getestet, es tut sich nichts wenn ich auf submit klicke.

Re: Checkboxen auswerten in Array

Posted: Tue Jul 15, 2014 3:36 pm
by RedEye
Wenn du eine for Schleife nutzt, benutze niemals count() wie in deinem Beispiel!

Code: Select all

$count = count($categorieArray);
for($x=0, $x < $count; $x++)
{
...
}
Mit ner foreach könnte es so aussehen:

Code: Select all

foreach ($categorieArray as $cat)
{
    if ($produkt_kategorie !== $cat)
    {
        continue;
    }
    else
    {
        //do your stuff
    }
}
Nikolino10 wrote:ich hab außerdem

Code: Select all

echo "$categorieArray[0]";
getestet, es tut sich nichts wenn ich auf submit klicke.
Wie genau ist denn dein Code aufgebaut, deine Form lässt ahnen das du an ein externes Script postest und nicht zu nem Joomla Component.
Und wenn du ne Variable per echo ausgibst brauchste keine " drum rum machen, die wären nur nötig wenn da auch noch normaler Text mit drin wäre.

Re: Checkboxen auswerten in Array

Posted: Tue Jul 15, 2014 5:07 pm
by Nikolino10
also hab den code mal zusammengefasst. ich lasse Produkte anzeigen, und möchte mit diesen drei checkboxen nur die Produkte anzeigen, die die ausgewählte Kategorie haben. deswegen die if abfrage.
wenn du dich fragst warum nicht gleich mit SQL befehl, das ist nicht möglich.

Die seite soll also dann neu laden (nach klick auf "submit") und nur die Produkte anzeigen wo $produkt_kategorie == $cat

Code: Select all

<form action="default_grid.php" method="post">

Filtern nach: 

   <input type="checkbox" name="c[]" value="Damen" checked="checked"/> Damen  
   <input type="checkbox" name="c[]" value="Herren" checked="checked"/> Herren 
   <input type="checkbox" name="c[]" value="Unisex" checked="checked"/> Unisex  
  
   <input type="submit" value="Anzeigen"/>

</form>

<?php

$categorieArray = JFactory::getApplication()->input->post->get('c', null, 'array');

for ($i=0, $n=count( $this->items ); $i < $n; $i++): //Diese schleife nimmt jedes Element und gibt es dann in form von ProductViews aus
	$row = &$this->items[$i];

# Kategorie aus Datenbank lesen 	

	//produkt_kategorie den namen der Kategorie zuweisen

# Ende Kategorie aus DB lesen

foreach ($categorieArray as $cat)
{
    if ($produkt_kategorie !== $cat)
    {
        continue;
    }
    else
    {
		//ProductView anzeigen
    }
}

endfor;
?>

Re: Checkboxen auswerten in Array

Posted: Tue Jul 15, 2014 11:36 pm
by RedEye
post mal bitte im en forum nomma oder in der ml, hab mir vorhin handgelenk gebrochen und wenig lust auf tippen, sry

Re: Checkboxen auswerten in Array

Posted: Wed Jul 16, 2014 8:13 am
by Nikolino10
ok trotzdem vielen dank!

Re: Checkboxen auswerten in Array

Posted: Fri Jul 18, 2014 1:57 pm
by Nikolino10
in der ml und im en forum antwortet leider niemand.

kann sein, dass bei

Code: Select all

$categorieArray = JFactory::getApplication()->input->post->get('c', null, 'array');
etwas nicht ganz stimmt. Das array ist bei mir leer, hab mal versucht es mit echo auszugeben aber tut sich nix.

edit: oder es ist die form die nichts übergibt

Re: Checkboxen auswerten in Array

Posted: Fri Feb 20, 2015 2:57 pm
by 426ci
Gib den Checkboxen mal diesen Namen und versuche es noch mal:

name="jform[c][]"