webForumDet fria alternativet

Ibland fastnar POST-värdet... ??? (PHP)

2 svar · 258 visningar · startad av aasah

aasahMedlem sedan mars 20034 471 inlägg
#1

Det här felet går långt över huvudet på mig... Jag har helt enkelt inte tillräcklig vana av att felsöka i PHP-kod för att fatta vad som händer. Jag är helt ställd. :x Jag försökt själv i två dar, men jag fattar ingenting!!!

Problemet
Jag har ett antal ledtrådar (till korsord). Framför varje är en checkbox och tanken är att om du kryssar i en (eller flera) så ska sidan laddas om med en ledtråd för de ikryssade. När sidan laddar om, är de inte längre ikryssade och inga ledtrådar syns! :(

Längst ner sitter en till checkbox. Kryssar du i den ska alla ledtrådar visas. (För enkelhetens skull.) DETTA fungerar däremot!!! Kryssar man här så fungerar det, kryssar man ur den, så försvinner ledtrådarna. Klockrent!

MEN, ALLA checkboxar skapas i samma metod, ALLA checkboxar kollas i samma metod!!! Hur ända in i ..... kan det då funka för EN och inga andra????!!!!

Jag har förenklat koden så mycket jag kan (vågar) utan att tappa funktionalitet, så sidan är ful som stryk. Blir ändå en hel del rader är jag rädd...

//dummy.php - sidan som skrivs in i webbläsaren

<?php
include_once("/home/aasah/www/dummyTakeCW.php");

error_reporting(E_ALL);

$name = "My very first Crossword <BR>";
$idea = "me";
$about = "<u>CW Theme:</u> Pets & Friends <BR>";

$CW = "http://www.tydal.nu/aasah/FirstEver.jpg";
$corrCW = "fil.jpg"; //hidden from www-root /home/aasah pre-pends later

$clues = array( "a" => "ACROSS",
                "A 9-10" => "A clue.",
                "B 1-8 " => "Another clue",
                "d" => "DOWN",
                " 2 B-L" => "Clue down",
                " 4 G-J" => "Clueless");

$hints = array( "a" => "ACROSS",
                "A 9-10" => "Hint 1.",
                "B 1-8 " => "Hint 2.",
                "d" => "DOWN",
                " 2 B-L" => "Hint 3.",
                " 4 G-J" => "Last Hint.");

$corrs = array( "a" => "ACROSS",
                "A 9-10" => "!",
                "B 1-8 " => "?",
                "d" => "DOWN",
                " 2 B-L" => "CS",
                " 4 G-J" => "FD");

printCW($name, $idea, $about, $CW, $corrCW, $clues, $hints, $corrs);
?>
</body></html>

//dummyTakeCW.php - sidan som gör jobbet
<head>
<meta name="robots" content="noindex">
<title> Solve a crossword! </title>
</head>
<body><?php

function wasChosen($name, $val) {
   return (isSet($_POST["$name"]) && $_POST["$name"] == $val);
}

function inCheckBox($pos) {
   if (wasChosen($pos, 1))
      return "<INPUT TYPE=CHECKBOX NAME=".$pos." VALUE=1 checked>";
   else return "<INPUT TYPE=CHECKBOX NAME=\"$pos\" VALUE=1 >";
}

//Funkar för all men inte för övriga!!! ???
function printCW($name, $idea, $about, $CW, $corrCW, $clues, $hints, $corrs) {

   $me = $_SERVER['PHP_SELF'];
   

   echo "<H1>$name</H1>";
   echo "Crossword created by <b>$idea</b>. <BR><BR>";
   echo "<i>$about</i><BR><BR>";
   

   $hintsWanted = FALSE;
   if (wasChosen("shyCW", 1)) { //Blev ju vald indirekt
      if (wasChosen("Hint", "Get hints! "))
         $hintsWanted = TRUE;
      if (wasChosen("A 9-10", 1))
         echo "Wants clues for A 9-10";
      if (wasChosen("4 G-J", 1))
         echo "Wants clues for 4 G-J";
      if (wasChosen("all", 1))
         echo "Wants clues for all.";
   }

   echo "<P><img src=\"$CW\"><BR><BR>";

   echo "<FORM METHOD=POST ACTION=\"$me\" >";
   foreach ($clues as $pos => $clue) {
      if ($pos == "a" || $pos == "d")
         echo "</P><P><b>$clue</b><BR>";
      else {
         echo inCheckBox($pos)." $pos : $clue<BR>";
         if (wasChosen($pos, 1) || wasChosen("all", 1))
            echo "<i>$hints[$pos]</i><BR>";
      }
   }
   echo "</p>";
   echo "<P>".inCheckBox("all")."Hints wanted on every clue, please!</P>";
   echo "<INPUT TYPE=HIDDEN NAME=\"shyCW\" VALUE=1>";
   
   echo "<i>Is the crossword too hard? Are you stuck?
         By checking the box in front of any number of clues, and hitting the
         button below, you'll get some additional hints to the checked clues.
         Checking the last box <b>SHOULD BE </b> equivalent to 
checking all clues.</i><BR>";
   echo "<INPUT TYPE=SUBMIT NAME=\"Hint\" VALUE=\"Get hints! \"><BR><BR>";
   echo "</form><BR>";

  echo "<BR><BR><BR>";
   echo "<P>All coding, text, crosswords, quizzes as well as the chosen layout and
         graphics are copyright (c) this site, unless
         otherwise clearly stated.
Ingen bra formulering ... senare problem.</P>";

}

?>

Tacksam för hjälp! :x

Red: Plockade bort lite ":)":r som gjorde texten orimligt bred.

MatteMedlem sedan aug. 20002 975 inlägg
#2

Du kan inte ha mellanslag i name för dina checkboxar.
Nu ser det ut typ NAME=" 2 B-L".

Sedan, något jag inte är helt säker på, kan du för PHP:s skull inte ha en siffra i början av ditt name.

Teasta att ändra det först.

aasahMedlem sedan mars 20034 471 inlägg
#3

Tusen TACK!!! :D :birp

130 ms totalt · 3 externa anrop · v20260731065814-full.3ab8d573
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
127 ms — hämta tråd, inlägg och bilagor (db)