Philip: Wert mit Checkboxen übergeben geht nicht, aber mit Radiobuttons

Hi,

ich habe ein Suchskript, bei dem man bisher mittels Radiobuttons auswählen konnte, welcher Bereich der Seite durchsucht wird.

Entweder Bereich 1 + 2 oder nur Bereich 1 oder nur Bereich 2. Das ganze, via Radiobuttons, funktioniert einwandfrei.

Jetzt wollte ich das aber auch Checkboxen umstellen, wo man eben Bereich 1 und/oder Bereich 2 wählen kann.

Allerdings klappt es hier nicht mehr. Die erste Seite mit Suchergebnissen stimmt noch, blättert man dann aber auf die nächste (oder eine andere Seite) weiter wird die if-Anweisung nach der Kontrolle der Checkboxen übergangen. Somit sind alle Suchergebnisse bis auf Seite 1 nicht abrufbar.

Im Grunde ist das Prozedere bei Radiobuttons oder Checkboxen doch das gleiche, aber wieso klappt das nicht mehr?

Das funktionierende Radiobutton-Skript sieht so aus:

Formular:

  
<form method="post" action="suche.php">  
<input type="text" name="search_exp" class="eingabe" tabindex="1">  
<input type="submit" value="Suche starten" class="eingabe" name="submit" tabindex="2">  
<input type="Radio" name="bereich" checked value="komplett">Kapitel + Lexikon  
<input type="Radio" name="bereich" value="kapitel">Kapitel  
<input type="Radio" name="bereich" value="lexikon">Lexikon  
</form>

Suchskript:

  
if(($_POST["bereich"] == "kapitel") OR ($_GET["bereich"] == "kapitel"))  
{  
  $logfile = "./admin/search_log_main.txt";   //Pfadangabe zu Logdatei  
  $datenfile = "./admin/search_data_main.txt";   //Pfadangabe zur Datendatei  
  $bereich = "kapitel";  
}  
elseif(($_POST["bereich"] == "lexikon") OR ($_GET["bereich"] == "lexikon"))  
{  
  $logfile = "./admin/search_log_lex.txt";   //Pfadangabe zu Logdatei  
  $datenfile = "./admin/search_data_lex.txt";   //Pfadangabe zur Datendatei  
  $bereich = "lexikon";  
}  
else  
{  
  $logfile = "./admin/search_log.txt"; //Pfadangabe zu Logdatei  
  $datenfile = "./admin/search_data.txt"; //Pfadangabe zur Datendatei  
  $bereich = "komplett";  
}

Die nicht funktionierende Checkboxvariante:

Formular:

  
<form method="post" action="suche.php">  
<input type="text" name="search_exp" class="eingabe" tabindex="1" value="Suchbegriff">  
<input type="submit" value="Suche starten" class="eingabe" name="submit" tabindex="2">  
<input type="Checkbox" name="bereich" value="kapitel" checked>Alle Kapitel  
<input type="Checkbox" name="bereich2" value="lexikon" checked>Lexikon</form>

Suchskript:

  
if((($_POST["bereich"] == "kapitel") OR ($_GET["bereich"] == "kapitel")) AND (($_POST["bereich2"] == "lexikon") OR ($_GET["bereich2"] == "lexikon")))  
{  
  $logfile = "./admin/search_log.txt";   //Pfadangabe zu Logdatei  
  $datenfile = "./admin/search_data.txt";   //Pfadangabe zur Datendatei  
  $bereich = "komplett";  
}  
elseif(($_POST["bereich2"] == "lexikon") OR ($_GET["bereich2"] == "lexikon"))  
{  
  $logfile = "./admin/search_log_lex.txt";   //Pfadangabe zu Logdatei  
  $datenfile = "./admin/search_data_lex.txt";   //Pfadangabe zur Datendatei  
  $bereich =  "lexikon";  
}  
else  
{  
  $logfile = "./admin/search_log_main.txt"; //Pfadangabe zu Logdatei  
  $datenfile = "./admin/search_data_main.txt"; //Pfadangabe zur Datendatei  
  $bereich = "kapitel";  
} 

Ich vermute einfach mal, dass es nicht am eigentlichen Script liegt, da der Rest ja bei beiden Varianten identisch ist. Wer trotzdem mal einen Blick riskieren will: Suchskript

  1. Moin!

    Ich vermute einfach mal, dass es nicht am eigentlichen Script liegt, da der Rest ja bei beiden Varianten identisch ist.

    Nein, es liegt daran, wie du deine Folgesuchseiten aufrufst.

    Und? Wie rufst du sie auf? Ich hab wenig Lust, dein ZIP runterzuladen und mich durch einen mutmaßlich langen Quelltext zu wühlen, also bist du gefordert.

    - Sven Rautenberg

    --
    "Love your nation - respect the others."
    1. Hm, also der Abschnitt für die Blätterfunktion sieht so aus, nachdem mittels Checkbox der $bereich gewählt wurde; Ich wüsste aber nicht, warum es da einen Unterschied zwischen Radiobutton und Checkbox geben sollte. Wenn es mit der einen Variante klappt und mit der andere nicht, müsste es da doch irgendwelche Unterschiede bei der Übergabe geben, oder nicht?

      #################################################  
      # Anzeige der Blätterfunktion  
      function seitenaufteilung($anz_zeilen) {  
        
      global $nps, $a, $_SERVER, $_GET, $search_exp, $exp_full, $exp_capital, $bereich;  
        
      $a = $_GET['a'];  
      $PHP_SELF = $_SERVER['PHP_SELF'];  
        
      $search_exp = urlencode($search_exp);  
        
      $seiten=ceil($anz_zeilen / $nps);  
      $foot = '<table width="400" border="0" cellspacing="0" cellpadding="0" align="center"><tr><td>&nbsp;</td></tr><tr><td align=center>';  
        
      if($a >= $nps) {  
          $back = $a-$nps;  
      $foot .= '<a href="'.$PHP_SELF.'?search_exp='.$search_exp.'&exp_full='.$exp_full.'&exp_capital='.$exp_capital.'&a='.$back.'&bereich='.$bereich.'" class="page_link"><<</a>&nbsp;&nbsp;';  
      }  
        
      if ($anz_zeilen<=$nps) {  
          $foot .= '';  
      }  
      else {  
          for ($i=1; $i<=$seiten; $i++) {  
              $fwd=($i-1)*$nps;  
        
              if ($a==$fwd) {  
              $foot .= '<a href="'.$PHP_SELF.'?search_exp='.$search_exp.'&exp_full='.$exp_full.'&exp_capital='.$exp_capital.'&a='.$fwd.'&bereich='.$bereich.'" class="page_link"><b><u>'.$i.'</u></b></a> ';  
              }  
              else{  
              $foot .= '<a href="'.$PHP_SELF.'?search_exp='.$search_exp.'&exp_full='.$exp_full.'&exp_capital='.$exp_capital.'&a='.$fwd.'&bereich='.$bereich.'" class="page_link">'.$i.'</a> ';  
              }  
        
          }  
      }  
        
      if(($a < $anz_zeilen-$nps) && ($nps<$anz_zeilen)) {  
          $fwd = $a+$nps;  
      $foot .= ' <a href="'.$PHP_SELF.'?search_exp='.$search_exp.'&exp_full='.$exp_full.'&exp_capital='.$exp_capital.'&a='.$fwd.'&bereich='.$bereich.'" class="page_link">>></a>';  
      }  
        
      $foot .= '</td></tr></table></table>';  
        
      return($foot);  
      }  
      #################################################  
      ?>
      
      1. echo $begrüßung;

        Hm, also der Abschnitt für die Blätterfunktion sieht so aus, nachdem mittels Checkbox der $bereich gewählt wurde; Ich wüsste aber nicht, warum es da einen Unterschied zwischen Radiobutton und Checkbox geben sollte.

        Du hast doch da selbst einen Unterschied eingebaut: Im Checkbox-Formular gibt es "bereich" und "bereich2" im Radio-Button-Formular nur "bereich".

        Wenn es mit der einen Variante klappt und mit der andere nicht, müsste es da doch irgendwelche Unterschiede bei der Übergabe geben, oder nicht?

        Ja, prinzipbedingt liegt das in der unterschiedlichen Funktionsweise von Radio-Buttons (bilden Gruppen mit Auswahl 1 aus n) und Checkboxen (können eigenständig auftreten).

        echo "$verabschiedung $name";

        1. Jap, da ist natürlich die if-Abfrage falsch mit den zwei Bereichen. Korrekt siehts dann so aus:

          if((($_POST["bereich"] == "kapitel") AND ($_POST["bereich2"] == "lexikon")) OR ($_GET["bereich"]=="komplett"))  
          {  
            $logfile = "./admin/search_log.txt";   //Pfadangabe zu Logdatei  
            $datenfile = "./admin/search_data.txt";   //Pfadangabe zur Datendatei  
            $bereich = "komplett";  
          }  
          elseif(($_POST["bereich2"] == "lexikon") OR ($_GET["bereich"] == "lexikon") )  
          {  
            $logfile = "./admin/search_log_lex.txt";   //Pfadangabe zu Logdatei  
            $datenfile = "./admin/search_data_lex.txt";   //Pfadangabe zur Datendatei  
            $bereich =  "lexikon";  
          }  
          else  
          {  
            $logfile = "./admin/search_log_main.txt"; //Pfadangabe zu Logdatei  
            $datenfile = "./admin/search_data_main.txt"; //Pfadangabe zur Datendatei  
            $bereich = "kapitel";  
          } 
          

          (Das ganze ist aber nicht auf meinem Mist gewachsen)

          Trotzdem danke für die Unterstützung - hab bei den ganzen Abfragen den Überblick verloren.