Kirjautuminen

Haku

Tehtävät

Keskustelu: Nettisivujen teko: Tiedos käsittely

Sivun loppuun

make3003 [07.03.2006 14:57:47]

#

Nyt on pari kysymystä. Miten tämän koodin saisi niin että se kirjottaisi aina uuden uutisen omalle riville.

<?php
if(isset($_POST['add']) && isset($_POST['viesti'])){

	$add = get_magic_quotes_gpc() ? $_POST['add'] : mysql_real_escape_string($_POST['add']);
	$viesti = get_magic_quotes_gpc() ? $_POST['viesti'] : mysql_real_escape_string($_POST['viesti']);
	$aika = time();

//avataan tiedosto kirjoitustilassa
$tt = fopen("news.txt", "w+");

//kirjoitetaan tiedostoon kolme riviä; \n tarkoittaa rivinvaihtoa
fwrite($tt, "$add|$viesti|$aika\n");

//suljetaan tiedosto
fclose($tt);
}
?>
<form method="POST" action="addnews.php" />
<table>
<tr>
<td>Lähettäjä: </td><td><input type="text" name="add" /></td>
</tr>
<tr>
<td>Viesti</td><td><textarea rows="5" style="width:450px;" name="viesti" /></textarea></td>
</tr>
<tr>
<td><input colspan="2" type="submit" value="Lähetä" /></td>
</tr>
</table>
</form>

Ja tämän niin että se lukusi aina kolme uusinta.

<?php
$uutiset = @file("news.txt");


echo "<table Width='100%'>";
//tulostetaan rivit
for($i=0; $i<count($uutiset); $i++) {
$uutinen = explode("|", $uutiset[$i]);

   echo "<tr style='background-color: #C5C5C5;'><td>".$uutinen[0]."  [".date("d.m.Y H:i:s", $uutinen[2])."]</td></tr>";
   echo "<tr><td>".$uutinen[1]."</td></tr>";
}
echo "</table>";
?>

edit:Ja miten nuo koodit pitäisi olla oikea oppisesti.

str4nd [07.03.2006 15:13:49]

#

make3003 kirjoitti:

//avataan tiedosto kirjoitustilassa
$tt = fopen("news.txt", "w+");

Muutetaan:

//avataan tiedosto lisäystilassa
$tt = fopen("news.txt", "a");

make3003 kirjoitti:

for($i=0; $i<count($uutiset); $i++) {

Muutetaan:

$uutiset = array_reverse($uutiset);
for($i=0; $i<3; $i++) {

make3003 kirjoitti:

edit:Ja miten nuo koodit pitäisi olla oikea oppisesti.

On nuo aika hyvin, paitsi tableja ei kannattaisi käyttää :)

Lisäksi kannattaisi katsoa funktio, minkä lisäsin:
https://www.php.net/manual/fi/function.array-reverse.php

Ja tietenkin sinun pitää lukea opas:
https://www.ohjelmointiputka.net/oppaat/opas.php?tunnus=phpj
* https://www.ohjelmointiputka.net/oppaat/opas.php?tunnus=phpj5
* https://www.ohjelmointiputka.net/oppaat/opas.php?tunnus=phpj6

Edit: Mikäli et lue oppaita, niin lisäneuvonta tekee 3€/min.

make3003 [07.03.2006 15:20:48]

#

Jos ei tableja niin mitä sitten?
Olisi hyvä tietää jos siihen on jokin hyvä syy.

str4nd [07.03.2006 15:26:15]

#

make3003 kirjoitti:

Jos ei tableja niin mitä sitten?

Divejä esimerkiksi.

make3003 kirjoitti:

Olisi hyvä tietää jos siihen on jokin hyvä syy.

http://www.aimedia.fi/stupid_tables/

Lisäksi voisit vaikkapa kirjoittaa vaihteeksi otsikon oikein: "Tiedos käsittely" => "Tiedoston käsittely"

Tämä maksaa nyt 1,25€ :P

sooda [07.03.2006 15:34:15]

#

str4nd kirjoitti:

make3003 kirjoitti:

Jos ei tableja niin mitä sitten?

Divejä.

Ei välttämättä. Semanttisesti korrekteja elementtejä, sanoisin.

str4nd [07.03.2006 15:40:43]

#

sooda kirjoitti:

Ei välttämättä. Semanttisesti korrekteja elementtejä, sanoisin.

En väitä vastaan :)

tsuriga [07.03.2006 15:43:53]

#

Ei kannata kääntää koko taulukkoa kun tässä tahdotaan vain kolme uusinta. Mieluummin näin:

<?php
$i = 0;
$uutisia = count($uutiset);

while(++$i<4) {
  $uutiset[$uutisia-$i];
  }
?>

..tai vastaavalla tavalla hakien taulukon viimeiset kolme alkiota. Itse taisin joskus puhua array_reversen puolesta selkeydellä perustellen. Tässä tehdään kuitenkin paljon turhaa työtä jos on yhtään isompi taulukko ja käännetään se kokonaan vain kolmen rivin vuoksi.

make3003 [08.03.2006 12:04:40]

#

Kiitos vastauksista.


Sivun alkuun

Vastaus

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

Tietoa sivustosta