Kirjautuminen

Haku

Tehtävät

Keskustelu: Nettisivujen teko: Vieraskirja vastaa samaan viestiin

Sivun loppuun

Jorgga [01.06.2006 19:44:18]

#

joo nyt olen tuon edellisen keskustelun avulla saanut vieraskirjan adminpaneelin toimimaan melkein mutta nyt kun yritän vastata viestiin se vastaa aina viestiin joka on ensimmäisenä kirjoitettu
Adminpaneeli:

<?php
$viestit = file("viestit.txt");
$viestit = array_reverse($viestit);
$viestimaara = count($viestit);
$luku = $viestimara;
echo "Yhteensä: <b>" . $viestimaara . "</b> viestiä.<p>";
$viestimaara2 = $viestimaara - 1;
for ($i = 0, $j = $viestimaara2; $i < $viestimaara; $i++, $j--) {
$tiedot = explode("|", $viestit[$i], 5);
$nimi = $tiedot[0]; $email = $tiedot[1]; $aika = $tiedot[2]; $viesti = $tiedot [3]; $vastaus = $tiedot[4];
echo "<font color=\"#8C7853\">Lähettäjä:</font> <a href=\"mailto:$email\">$nimi</a><br>";
echo "<font color=\"#8C7853\">Aika:</font> $aika<br>";
echo "<font color=\"#8C7853\">Viesti:</font><br>$viesti<br>";
if ($vastaus == "") {
echo "<font color=\"#8C7853\">Vastaus:</font><br> Ylläpito ei ole vastannut vielä.";
} else{
echo "<font color=\"#8C7853\">Vaataus:</font><br>$vastaus";
}
echo "<br><FORM ACTION=\"vastaa.php\" METHOD=\"GET\">";
echo "<input type=hidden name=\"rivi\" value=\"$j\">";
echo "Vastaus: <INPUT TYPE=\"text\" NAME=\"vastaus\" SIZE=\"30\" MAXLENGTH=\"255\">";
echo "<INPUT TYPE=submit value=\"Vastaa\"><br>";
echo $j;
echo "<hr>";
$luku--;
}
?>

vastaa.php:

<?php
$vastaus = $_GET["vastaus"];
$rivi = $_GET["rivi"];
$vastaus = htmlspecialchars($vastaus);
$rivit = file("viestit.txt");
$rivit = array_map("trim", $rivit);
$rivit[$rivi] = $rivit[$rivi] . "|" . $vastaus;
$tt = fopen("viestit.txt", "w");
for ($i=0; $i<count($rivit); $i++)
fwrite($tt, $rivit[$i]."\r\n");
fclose($tt);
?>

joku mättää taas kerran toivottavasti jollakin on ideoita.

Antti Laaksonen [01.06.2006 20:20:57]

#

Voit selvittää ongelmaa itsekin tulostamalla muuttujien arvoja sopivissa kohdissa. Milloin rivinumero muuttuu vääräksi?

Jorgga [01.06.2006 20:29:16]

#

tulostin rivinumerot kolmessa kohtaa ja sain tuloksia:
0
0
0
käytin muuttujien tulostuskohtina:

<?php
$vastaus = $_GET["vastaus"];
$rivi = $_GET["rivi"];
echo $rivi . "1<br>";
$vastaus = htmlspecialchars($vastaus);
$rivit = file("viestit.txt");
$rivit = array_map("trim", $rivit);
$rivit[$rivi] = $rivit[$rivi] . "|" . $vastaus;
echo $rivi . "2<br>";
$tt = fopen("viestit.txt", "w");
for ($i=0; $i<count($rivit); $i++)
fwrite($tt, $rivit[$i]."\r\n");
fclose($tt);
echo $rivi . "3<br>";
?>

Eli näyttäisi että tuo formi ei lähetä tuota numeroa oikein.

Antti Laaksonen [01.06.2006 20:34:52]

#

Näin ongelma alkaa ratketa. Tee sitten vastaava tutkimus lähetyssivulla.

Jorgga [01.06.2006 20:39:33]

#

lähetyssivulla on jo se ja se kyllä näyttää oikein se löytyy for:ista kohtaa:

echo "<br><FORM ACTION=\"vastaa.php\" METHOD=\"GET\">";
echo "<input type=hidden name=\"rivi\" value=\"$j\">";
echo "Vastaus: <INPUT TYPE=\"text\" NAME=\"vastaus\" SIZE=\"30\" MAXLENGTH=\"255\">";
echo "<INPUT TYPE=submit value=\"Vastaa\"><br>";
echo $j;
echo "<hr>";

se kyllä näyttää oikein.

Antti Laaksonen [01.06.2006 20:42:50]

#

Näkyykö rivinumero kussakin kohdassa oikein, jos katsot sivun HTML-koodia selaimen kautta?

Jorgga [01.06.2006 20:46:45]

#

näyttäisi näkyvän

Edit:

Siis toisessa näkyy:
2
1
0
ja toisessa
0
0
0
html koodissa

Antti Laaksonen [01.06.2006 20:58:38]

#

Nytpä taisi juttu selvitä, neuvoin etsimään aivan väärin. Lomakkeista puuttuu sulkeva form-tagi, ja kun sen laittaa silmukan päätteeksi, skripti tuntuisi toimivan. Tällaisessa lomakkeessa lähetystavaksi sopii muuten paremmin "post" kuin "get".

Jorgga [01.06.2006 21:02:58]

#

Katsoppas vain siinä se vika olikin Kiitos

Enkä tiedä miksi itse olen niin tottunut käyttämään tuota get:tiä jotenkin vaan pinttynyt tapa :)


Sivun alkuun

Vastaus

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

Tietoa sivustosta