Kirjautuminen

Haku

Tehtävät

Keskustelu: Nettisivujen teko: Lomakkeen lähetysongelma

Rope [10.04.2010 14:09:04]

#

Hei.

Osaisko joku auttaa , ku mull toi koodi tökkii sen pitäisi lähettää ja tallentaa kaikki tekstit tekstitiedostoon, säilyttää myös vanhat. Noh, tällä hetkellä se ei tallenna vanhasta viestistä kuin kaksi riviä, muuten kaik on iha jees.

Anteeksti, toi lomake ei ole vielä valmis läheskään mut tällainen ongelma tuli eteen.


lomakk.php

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
       <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
       <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"/>
       <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
       <title></title>
</head>
<body>
   <?php
      header('Content-Type: text/html; charset=utf-8');
   ?>
   <?php
      echo "<form action=updatru.php method=post>"."<br>";
      echo "Nimi <input type=text name=nimi size=20>"."<br>"."<br>";
     $ic = 0;
     $ic_max = 2;  // stops after this number of rows
     $handle = fopen("kysymykset.txt", "r");
     while (!feof($handle) && ++$ic<=$ic_max) {
         $buffer = fgets($handle, 4096);
         echo $buffer."<br>";
         echo "<input type=radio name=kysely1 value=Helsinki>Helsinki";
         echo "<input type=radio name=kysely1 value=Tukholma>Tukholma"."<br>"."<br>";
     }
     echo "<input type=submit value=Lähetä> ";
     echo "</form>";
     fclose($handle);
   ?>
</body>
</html>






updatru.php


<?php
                         header('Content-Type: text/html; charset=utf-8');
?>
<?php

				//Luetaan tekstitiedosto jossa on kaikki ruotsi.php:n muuttuva teksti
				//Tallennetaan viestit muuttujaan
				$filename = "ruotsi.txt";
				$filu = fopen($filename, "r");
				$viestit = fgets($filu, filesize($filename));
				fclose($filu);//suljetaan filu operaatio
				$i=0;
				$a=0;
				while(++$i<=2){
			        	if( $_POST['kysely1']==Helsinki){
						$a=$a+1;
						$vastaus="Oikein";
					}
					else{
						$a=$a+0;
						$vastaus="Väärin";
					}
				}
				$ic = 0;
				$ic_max = 2;  // stops after this number of rows
				$handle = fopen("kysymykset.txt", "r");
				while (!feof($handle) && ++$ic<=$ic_max) {
  						 $buffer[$ic] = fgets($handle, 100);
 						  echo $buffer."<br>";
					}
				fclose($handle);
				$ic=1;
				//Tuodaan kysely lomakkeesta tiedot "tiedot" muuttujaan
				$tiedot ='<b>Nimi:</b>' . ' ' . $_POST['nimi'].'<br>'. $buffer[$ic] .           $vastaus.'<br>'.'<br>'. $buffer[$ic+1].'<br>'.$vastaus. '<br>' . $a .'/'.'2'.' oikein'. '<hr>';
					//Avataan käsiteltäväksi oppilas-tekstitiedosto
					//Tallennetaan tiedoston sisältö oppilas-muuttujaan
					//Oppilastiedostossa on käyttäjän antama lukumäärä oppilaista
					//jota verrataan kävijälaskuriin jonka perusteella rajoitetaan
					//lomakkeen käyttöä
					$filu=fopen("oppilas.txt","r");
					$oppilas=fread($filu, filesize("oppilas.txt"));
					fclose($filu);

				//Avataan käsiteltäväksi testi-tekstitiedosto
				//tallennetaan tiedoston sisältö visit muuttujaan
				//testitiedostossa on kävijälaskurin tulos
				$file = fopen( "testi.txt", "r") or die ("Ei oikeuksia! Ilmoita webmasterille!");
				$visit = fread( $file, filesize( "testi.txt" ) );
				fclose($file);

				//Aina kun käyttäjä lähettää lomakkeen, lisätään visit-muuttujaa yhdellä
				$visit = $visit + 1;

				$file = fopen ("testi.txt", "w") or die ("Ei oikeuksia! Ilmoita webmasterille!");
				fputs( $file, $visit );
				fclose($file);

				//Jos käyntrjä on enemmän kun oppilaiden lukumäärä, palautetaan virhe ja viedään
				//lähettäjä toiselle sivulle
				if($oppilas < $visit){
				       header("Location: lomakk.php");
				}
				//jos lähettäjä hyväksytään
				//avataan ruotsi-tekstitiedosto
				//ja tallennetaan siihen lomakkeen tiedot

				else
				{

					$filu=fopen("ruotsi.txt","w");
					fputs($filu, $tiedot);
					fputs($filu, $viestit);
					fclose($filu);
					header("Location: ruotsi.php");
				}

?>





ruotsi.php


 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
      <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
      <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"/>
      <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
      <title></title>
</head>
<body>
      <p><a href="index.php">Kirjaudu ulos</a></p>
      <p><a href="lomakk.php">Tästä lomakkeeseen</a></p>
      <p><a href="lomak.php">Tästä opiskelijamäärien hallintaan</a></p>
      <?php
          // index.php

         session_start();
         // kirjautumisen tarkistus
         if (isset($_SESSION['tunnus'])) {
         } else {
	       header("Location: index.php");
               //echo "<p>Et ole kirjautunut sisään.</p>";
               //echo "<p><a href=\"lomake.php\">Kirjaudu sisään</a></p>";
	   }

        ?>
        <?php
 	     //Avataan ruotsi-tekstitiedosto
	    //ja tuodaan kaikki data näkyville
            $file = 'ruotsi.txt';
           $open = file($file);
           $count = count($open);

           for ($p=0; $p<$count; $p++) {
                 $entry = explode(chr(""), $open[$p]);
                 echo ("$entry[0]");
                 echo "<br>\n";

                }

        ?>

       <?php
            $filu=fopen("ruotsi.txt","r");
           //Jos poista-nappulaa on painettu vaustauslehti tyhjennetään
           if (isset($_GET['poista']) && $_GET['poista'] == true) {
		$filu=fopen("ruotsi.txt","w");
		fputs($filu, " ");
		header("Location: ruotsi.php");
	        }
        /*$file = "ruotsi.txt";
		$filu = fopen($file, "w");
		unlink('ruotsi.txt');
		//touch('ruotsi.txt');
		fclose($filehandle); */

          ?>
<form>
<input type="submit" name="poista"  value="Tyhjennä">
</form>
</body>
</html>







Tämmösen rimpsun ku lisäsin lomakk.php:hen ja updatru.php:hen nii ongelmat synty



$ic = 0;
$ic_max = 2; // stops after this number of rows
$handle = fopen("kysymykset.txt", "r");
while (!feof($handle) && ++$ic<=$ic_max) {
       $buffer[$ic] = fgets($handle, 100);
       echo $buffer."<br>";
}
fclose($handle);

ps. Koodia voi tsekata osoitteessa www.rope1986.com/ruotsi

Tunnus on pepe ja passu on aaa

Eka sivulle avautuu eräänlainen hallintapaneeli johon syötetään luku jonka verran lomakkeita voi lähettää, sen jälkeen painaa lähetä ja ruutuun avautuu todellinen lomake.
Kun valintana on vastaukset niin se on vielä tällä hetkellä vaiheessa, eli kaikki valinnat on vielä yhteydessä toisiinsa kun siinä on neljä valintaa nii käytännössä siinä on vain kaksi jotka se tarkistaa mut mut se ei tosiaan ole se pointi vaan kun silloin ku lähettää sen lomakkeen ja se avaa pohjan missä tulostetaan vastaukset nimet yms. niin se ei vanhasta lomakkkeesta tallenna kuin kaksi riviä vaikka sen pitäisi tallentaa kaikki vanha viesti sekä ylös uusin.


Tuo updatru.php tulee heti lomakkeen lähettämisen jälkee jossa se käsittelee tiedot ja sen jälkeen pistää kaiken tulostettavaksi.

Toivon, että joku voisi vinkata miksi näin.

pistemies [10.04.2010 14:21:39]

#

Vaihda argumentiksi "a"

$handle = fopen("kysymykset.txt", "a");

vehkis91 [10.04.2010 14:29:45]

#

kooditagit, tosta ota muuten mitää selvää... -.-

Rope [10.04.2010 14:30:25]

#

mut silloin se ei näköjään tulosta yhtään mitään tuosta kysymykset.txt:stä

vehkis91 [10.04.2010 14:31:53]

#

$handle = fopen("kysymykset.txt", "a");

Tuo avaa tiedoston tiedon lisäämistä varten, ei lukemista varten. :)

trilog [10.04.2010 14:33:40]

#

Vaikea tosiaan tarkemmin mitään tutkia kun kooditageja ei ole.

Olisiko tällä jotakin merkitystä ongelman kanssa?

$ic_max = 2; // stops after this number of rows

Rope [10.04.2010 14:46:04]

#

noi, ny on kooditagit

Valitettavasti trilog tolla jutulla ei ole vaikutusta.

Toi a:n vaihtaminen toimi, kiitoksia paljon

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta