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> </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>"; } ?>
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'] . '/';
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 :)
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.
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
No yleensä kyllä en pilko tota for-lausetta mut nyt en keksinyt muuta että saan jokaisesta rivistä muuttujat...
No herttimaas, semmoista varten on taulukot
LazyJones kirjoitti:
No herttimaas, semmoista varten on taulukot
No hö!! Kai niihin sit täytyy tustua :)
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; } ?>
Missä kohtaa tuo $nickname on asetettu? Onko $_POST['remove'] varmasti lähetetty? Mietippä miten voi tarkistaa helposti onko se lähetetty.
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; ?>\">";
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...
Ei se niin vaikeeta ole ;)
Nii joo noinhan sen pystyy testaa :) Toi "get" on nappi, ei formin method...
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.
Aihe on jo aika vanha, joten et voi enää vastata siihen.