2011-01-05 6 views
0

Ich habe eine Funktion, die eine $ _SESSION-Variable setzt und löscht, je nachdem, was von dem Formular auf meiner Hauptseite gesendet wurde.PHP-Wert für HTML Checkbox

Funktion if-Anweisung:

$_SESSION['search'] = true; 
if($_POST['searchtv']){ 
    $_SESSION['searchtv'] = true; 
} else { 
    unset($_SESSION['searchtv']); 
} 
if($_POST['searchmovie']){ 
    $_SESSION['searchmovie'] = true; 
} else { 
    unset($_SESSION['searchmovie']); 
} 

Die searchtv und searchmovie $ _POST Variablen durch die folgenden Kontrollkästchen gesetzt:

<input type="checkbox" name="searchmovie" value="movie" <? echo isset($_SESSION['searchmovie']) ? 'checked' : ''; ?>"/> 

jedoch das aufgegebene Wert immer falsch und zeigt 'zu sein scheint', so Kein "Häkchen" ist gesetzt, um das Häkchen in der Box anzuzeigen.

Ich weiß, dass die Variable $ _SESSION korrekt eingestellt ist, weil ich in der gleichen Datei eine andere IF-Anweisung (unten) habe, die 100% funktioniert.

if(isset($_SESSION['searchtv'])){ 
    $database->searchTV($_GET['show'], $session->uid); 
} 
           if(isset($_SESSION['searchmovie'])){ 
    $database->searchMovies($_GET['show'], $session->uid); 
} 
           if(!isset($_SESSION['searchtv']) && !isset($_SESSION['searchmovie'])){ 
    $database->searchTV($_GET['show'], $session->uid); 
    $database->searchMovies($_GET['show'], $session->uid); 
} 

Wenn ich nur die searchtv Checkbox es läuft nur die searchTV Funktion und so weiter .. so ich weiß, es wird gesetzt und arbeitet .. einfach nicht die Rückmeldung an das Kontrollkästchen Ja, es aktiviert wurde zu sagen bekommen wenn die Suchschaltfläche ausgewählt wurde.

Antwort

3

@medoix: Versuchen Sie, diese

<input type="checkbox" name="searchmovie" value="movie" <? echo isset($_SESSION['searchmovie']) ? 'checked' : ''; ?>"/> 

dieser

<input type="checkbox" name="searchmovie" value="movie" <?php if (isset($_SESSION['searchmovie'])) { echo 'checked="checked" '; } ?>/> 
+0

Ja, du brauchst 'checked = 'checked'' oder' checked =' ''. Im Moment wiederholst du nur "checked". – Ben

+1

funktioniert ein Genuss! ich danke dir sehr. Es ist erstaunlich, wie so ein kleines Ding mir in den Sinn kommen kann! – medoix

0

Sie erkennen, dass der Teil des Codes, der $_SESSION['searchtv'] && $_SESSION['searchmovie'] in der Nähe der Unterseite überprüft, beide sind! Es wird nur ausgeführt, wenn beide nicht überprüft werden, und nicht wenn sie es sind.

+0

ändern, die ein guter Punkt ist, habe ich Entwurf es auf diese Weise, weil standardmäßig sind die beiden Boxen nicht überprüft. Wenn Sie dies jedoch aufbringen, wird die Option angezeigt, wenn beide Kästchen ausgewählt sind. Aber dann, wenn beide überprüft werden, wird jede Funktion trotzdem unabhängig voneinander ablaufen. – medoix

+0

Scheint ein bisschen seltsam. Eigentlich sollte eine if/else if/else if/else Struktur sein. Wenn beides eingestellt ist, dann mache beide, sonst wenn der Fernseher eingestellt ist, laufe TV, sonst wenn Film eingestellt ist, laufe Film, sonst "Bitte wähle eine Suchmethode". Dann haben beide standardmäßig überprüft, was genau so ist, als ob beide in der aktuellen Methode deaktiviert wären. Natürlich müssen Sie sie auf "false" setzen, anstatt sie zu deaktivieren, wenn die Kontrollkästchen nicht aktiviert sind, und dann prüfen, ob sie === "Wahr" oder "Falsch" und nicht "Versetzt" sind, um dies zu tun. – Phoenix

Verwandte Themen