Kirjautuminen

Haku

Tehtävät

Keskustelu: Nettisivujen teko: Onko liikaa iffiä?

Sivun loppuun

jarspa [04.01.2006 22:42:41]

#

Voisko joku antaa vähän vinkkiä mikä tässä koodissa on kun se ei toimi? Muuten toimii kaikki ihan hyvin mutta tietokantaan tietojen päivittäminen ei rukaa. Olen sen saanut selville että muuttujan tiedot eivät välity viimeiseen if-lauseeseen. Onkohan tässä koodissani mitään järkee... :)

Koodi on aika pitkä, mutta eipä anneta sen haitata tässä vaiheessa opiskeluani php:n kanssa.

<?php
$ottid="$kausi/$viikko/";

if(isset($_POST['hae']))
{
$haku=mysql_query("SELECT closetime,otteluid,joukkue1,joukkue1id,joukkue2,joukkue2id
					FROM ottelut WHERE otteluid LIKE '%$ottid%'");

$lkm=mysql_num_rows($haku);

	if($lkm<3)
	{
	print "<font color=red><br>No bets!!</font>";
	}




else
{
echo "<table border=1>";
echo "<tr><td>S/W/M</td><td><b>W</b></td><td><b>Team 1</b></td><td><b>Goals</b></td><td><b>W</b></td><td><b>Team 2</b></td><td><b>Goals</b></td></tr>";

for ($i = 0; $i < 1; $i++)
{
   $aoid = mysql_result($haku, $i, "otteluid");
   $ateam1 = mysql_result($haku, $i, "joukkue1");
   $ateam1id = mysql_result($haku, $i, "joukkue1id");
   $ateam2 = mysql_result($haku, $i, "joukkue2");
   $ateam2id = mysql_result($haku, $i, "joukkue2id");

   echo "<tr><td align=center>$aoid</td>
   			 <td><input name=\"amatch\" type=\"checkbox\" value=\"$ateam1\"></td>
   			 <td width=\"150\">$ateam1 [<font color=green>$ateam1id</font>]</td>
			 <td align=center><input name=\"ateam1g\" type=\"text\" size=\"5\"></td>
			 <td><input name=\"amatch\" type=\"checkbox\" value=\"$ateam2\"></td>
			 <td width=\"150\">$ateam2 [<font color=green>$ateam2id</font>]</td>
			 <td align=center><input name=\"ateam2g\" type=\"text\" size=\"5\"></td>
			 </tr>";

}
for ($i = 1; $i < 2; $i++)
{
   $boid = mysql_result($haku, $i, "otteluid");
   $bteam1 = mysql_result($haku, $i, "joukkue1");
   $bteam1id = mysql_result($haku, $i, "joukkue1id");
   $bteam2 = mysql_result($haku, $i, "joukkue2");
   $bteam2id = mysql_result($haku, $i, "joukkue2id");

   echo "<tr><td align=center>$boid</td>
   			<td><input name=\"bmatch\" type=\"checkbox\" value=\"$bteam1\"></td>
   			 <td>$bteam1 [<font color=green>$bteam1id</font>]</td>
			 <td align=center><input name=\"bteam1g\" type=\"text\" size=\"5\"></td>
			 <td><input name=\"bmatch\" type=\"checkbox\" value=\"$bteam2\"></td>
			 <td>$bteam2 [<font color=green>$bteam2id</font>]</td>
			 <td align=center><input name=\"bteam2g\" type=\"text\" size=\"5\"></td>
			 </tr>";

}
for ($i = 2; $i < 3; $i++)
{
   $coid = mysql_result($haku, $i, "otteluid");
   $cteam1 = mysql_result($haku, $i, "joukkue1");
   $cteam1id = mysql_result($haku, $i, "joukkue1id");
   $cteam2 = mysql_result($haku, $i, "joukkue2");
   $cteam2id = mysql_result($haku, $i, "joukkue2id");

   echo "<tr><td align=center>$coid</td>
   			<td><input name=\"cmatch\" type=\"checkbox\" value=\"$cteam1\"></td>
   			 <td>$cteam1 [<font color=green>$cteam1id</font>]</td>
			 <td align=center><input name=\"cteam1g\" type=\"text\" size=\"5\"></td>
			 <td><input name=\"cmatch\" type=\"checkbox\" value=\"$cteam2\"></td>
			 <td>$cteam2 [<font color=green>$cteam2id</font>]</td>
			 <td align=center><input name=\"cteam2g\" type=\"text\" size=\"5\"></td>
			 </tr>";

}
}

echo "</table>";
}
?>
  <p>&nbsp;</p><p>
    <input name="bets" type="submit" id="bets" value="Place Bets">
  </p>
</form>
<?php




if(isset($_POST['bets']))
{
mysql_query("UPDATE ottelut SET joukkue1maalit='$ateam1g',
								joukkue2maalit='$ateam2g',
								lopputulos='$amatch'
								WHERE otteluid='$aoid'");

mysql_query("UPDATE ottelut SET joukkue1maalit='$bteam1g',
								joukkue2maalit='$bteam2g',
								lopputulos='$bmatch'
								WHERE otteluid='$boid'");

mysql_query("UPDATE ottelut SET joukkue1maalit='$cteam1g',
								joukkue2maalit='$cteam2g',
								lopputulos='$cmatch'
								WHERE otteluid='$coid'");

require("score.php");
print "<b>Scores is added!</b>";
}

?>

LazyJones [04.01.2006 23:42:23]

#

nuo for-lauseet...todella mielenkiintoisia. Voisiko harkita niiden yhteen niputtamista? Tai käyttää mysql_fetch_array() tms.

Ongelma taitaa olla siinä että ensimmäisen iffin jälkeen (jos hakunappia on painettu) tehdään kysely, mutta tulostukset on jostain syystä else-lohkossa. poistapa koko else ja tutkaile.

Ja varmastinkin kannttaa muuttaa

"$kausi/$viikko/" ->
$_POST['kausi'] .'/' . $_POST['viikko'] . '/';

jarspa [05.01.2006 07:02:22]

#

for-lauseet pilkoin noin, koska pitää saada joka tulostusriviltä omat muuttujat... en keksinyt parempaa ratkaisua tähän hätään. Poistin sen elsen mutta, ei toimi vieläkään---> edelleen muuttujia ei löydy viimeisestä iffistä(bets). Vähän alkaa päätä raavituttaa :)

LazyJones [05.01.2006 09:05:17]

#

sen forin voi kyllä hoitaa näinkin...

for($i=0; $i<3; $i++){...}

Olet onnistunut pilkkomaan koko for-silmukan perusajatuksen :)

Eikä niitä tietenkään löydy niitä muuttujia, kun haku ja sijoitukset tehdään ainoastaan ensimmäisessä if-lohkossa.

Lebe80 [05.01.2006 09:35:31]

#

Jep, eli muuttujien arvot taulukoihin, jolloin noista sun for-lauseista olisi jotain hyötyäkin.

Muutenkin koodia on niin paljon yksinkertaiseen toimenpiteeseen, että olisi voinutkin vain odottaa koska tuo laukeaa käsille.

Eli nyt vaan hieman suunnittelemaan järkevää koodia, ja opettelemaan taulukoiden käyttöä.

arrays + forloop = <3

jarspa [05.01.2006 16:09:04]

#

No yleensä kyllä en pilko tota for-lausetta mut nyt en keksinyt muuta että saan jokaisesta rivistä muuttujat...

LazyJones [05.01.2006 21:31:02]

#

No herttimaas, semmoista varten on taulukot

jarspa [05.01.2006 22:44:54]

#

LazyJones kirjoitti:

No herttimaas, semmoista varten on taulukot

No hö!! Kai niihin sit täytyy tustua :)

jarspa [06.01.2006 10:29:49]

#

En vielä alkanut opettelemaan arrayta vaan tein yksinkertaisen koodin pätkän mysql_fetc_rows funktiolla. Sitä vaan ihmettelen että mikä siinä on jos tietokannasta hakee tietoa ja sen jälkeen käsittelis tiedot toisen if-lauseen sisällä niin muuttujat ei toimi siellä enään...

<?php
if(isset($_POST['get']))
{
$haku=mysql_query("SELECT nickname,firstname,lastname,email FROM testi WHERE nickname='$user'");
$rivi=mysql_fetch_row($haku);
$nickname=$rivi[0];

echo "<form name=\"form1\" method=\"post\" action=\"\">";
echo "<table>";
   echo "<tr><td align=right><b>Nickname:</b></td><td>$rivi[0]</td></tr>
   		 <tr><td align=right><b>Firstname:</b></td><td>$rivi[1]</td></tr>
		 <tr><td align=right><b>Lastname:</b></td><td>$rivi[2]</td></tr>
   		 <tr><td align=right><b>E-mail:</b></td><td><a href=\"mailto:$rivi[3]\">$rivi[3]</a></td></tr>";
   echo "</table>";

echo "<input name=\"remove\" type=\"submit\" id=\"remove\" value=\"Remove user\">";
echo "</form>";
}

if(isset($_POST['remove'])) //<<-----HOMMA KUSEE!
{
echo $nickname;
}
?>

ajv [06.01.2006 11:25:32]

#

Missä kohtaa tuo $nickname on asetettu? Onko $_POST['remove'] varmasti lähetetty? Mietippä miten voi tarkistaa helposti onko se lähetetty.

jarspa [06.01.2006 11:44:14]

#

ajv kirjoitti:

Missä kohtaa tuo $nickname on asetettu? Onko $_POST['remove'] varmasti lähetetty? Mietippä miten voi tarkistaa helposti onko se lähetetty.

$nickname on asetettu edellisessä if-lauseessa jossa kannasta haetaan tiedot ja näiden tietojen perusteella pitäisi poistaa valittu käyttäjä taulusta.

<?php
if(isset($_POST['remove'])) //<<-----HOMMA KUSEE!
{
mysql_query("DELETE FROM testi WHERE nickname='$nickname'");
echo "User <b>$nickname</b> is deleted!";
}
?>

Hmmm... Mitenköhän saan tarkistettua ton $_POST['remove']

Lisäsin formin actioniin tämän:

echo "<form name=\"form1\" method=\"post\" action=\"<?php print $PHP_SELF; ?>\">";

ajv [06.01.2006 12:18:57]

#

Ai katoppas, olihan se asetettuukkin. Toi GETin ja POSTIN käyttäminen sekasin samaan aikaan ei ehkä ole kaikkein paras vaihtoehto.
Mitenköhän voisi tarkistaa POST['remove']:n? No et kovin kaukana ratkaisusta ollut...

<?php
if(isset($_POST['remove'])) {
   echo 'Löytyy';
   //todoo
}else{
   echo 'ei löydy';
}
?>

Ei se niin vaikeeta ole ;)

jarspa [06.01.2006 12:31:02]

#

Nii joo noinhan sen pystyy testaa :) Toi "get" on nappi, ei formin method...

LazyJones [06.01.2006 15:56:07]

#

Ei varmasti löydy $nicknamea. Jos sulla on get ja remove napit, niin missäs vaiheessa tulee tietokantakysely tehtyä, jos on painettu remove-nappia? Eihän sitä ensimmäistä if-lohkoa käydä läpi ollenkaan.


Sivun alkuun

Vastaus

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

Tietoa sivustosta