Tarkoitus olisi tehdä sivuille online-laskuri.
Tälläistä olen viritellyt.
Miksi ei toimi?
tulostaa vaan sen: vieraita:0
jos pistän while-silmukkaan vain print("$kayttaja"), toimii.
Missä vika?
by the way, table online:
(lisatty INT (25) NOT NULL,kayttaja text NOT NULL,ip text NOT NULL)
mysql_connect($mysql_1, $mysql_tunnus, $mysql_salasana); @mysql_select_db($mysql_tietokanta) or die("Tietokantaa ei löydy"); $ip=$REMOTE_ADDR; $time = time(); $vanha = $time - 600; $query="DELETE FROM online WHERE lisatty < '$vanha'"; mysql_query($query); if(isset($session_id)) { $query="SELECT kayttaja FROM online WHERE kayttaja='$oma_tunnus'"; $haku=mysql_query($query); $maara=mysql_num_rows($haku); if($maara == "0") { $query="INSERT INTO online VALUES ('$time','$oma_tunnus','$ip')"; mysql_query($query); } if(!$maara == "0") { $query8="UPDATE online SET lisatty='$time' WHERE kayttaja='$oma_tunnus'"; mysql_query($query8); } } $query="SELECT * FROM online"; $haku=mysql_query($query); $maara=mysql_num_rows($haku); $vieraita = "0"; while ($row = mysql_fetch_array($haku, MYSQL_ASSOC)) { $kayttaja = $row['kayttaja']; if(!$kayttaja == "vieras") { print("$kayttaja"); } if($kayttaja == "vieras") { $vieraita = $vieraita++; } } print("<br><strong>Vieraita:</strong> $vieraita"); mysql_close();
Et ainakaan tuossa koodinpätkässä laita sinne tauluun noita vieraita, eli laitatko ne sinne aikaisemmin? Ja sit muutama tarpeeton huomautus koodista & muista:
- koodiphp -tagit
- käyttäjä- ja ipnro-sarakkeille text lienee turhan massiivinen, varchar lienee parempi.
- $_SERVER-, $_SESSION - taulut
- if($maara==0) / if($maara=="0")
- if($maara!=0) / if(!$maara=="0")
- $vieraita = 0 / $vieraita = "0"
- if($kayttaja!="vieras") / if(!$kayttaja=="vieras")
- $vieraita++ / $vieraita = $vieraita++
- myös else on keksitty
Siinäpä jotain huomioita :)
mikä hemmetti tuo eka mysql_query() oikein on?
Siis öö.. jotain ajatuskatkoksia sinulla.. pahojakin näemmä..
lainaus:
Et ainakaan tuossa koodinpätkässä laita sinne tauluun noita vieraita, eli laitatko ne sinne aikaisemmin?
no sitä en ole vielä kerinnyt tekemään :D
mutta kyllä ton pitäisi näyttää noi rekisteröityneet käyttäjät...
suurin ongelma näyttää olevan tässä pätkässä:
while ($row = mysql_fetch_array($haku, MYSQL_ASSOC)) { $kayttaja = $row['kayttaja']; if(!$kayttaja == "vieras") { print("$kayttaja"); } if($kayttaja == "vieras") { $vieraita = $vieraita++; } }
Jos joku nyt vain kertoisi, miksi se ei toimi!
if($kayttaja != "vieras")
{
print($kayttaja);
}
ja tuo alempi $vieraita onnistuu näin:
$vieraita++;
Kai sen noin pitäis toimia.
edit: olin hidas :)
nyt toimii!
Mistä johtuu ettei toiminut:
Seuraava olis luultavasti toiminu:
Eli tuossa aiemmassa tuo not-operaattori heitti negatiiviseksi tuon $kayttaja-muuttujan arvon. Joku lausukoon sen suomeksi, itse en osaa.
Suomeksi:
Jos ei ole totta että $kayttaja on vieras, tulostetaan $kayttaja (WTF, eikös sen pitäis alkaa laskemaan vieraita eikä tulostaa käyttäjää?)
lainaus:
Suomeksi:
Jos ei ole totta että $kayttaja on vieras, tulostetaan $kayttaja (WTF, eikös sen pitäis alkaa laskemaan vieraita eikä tulostaa käyttäjää?)
Ei. Jos ei ole totta, että $kayttaja on vieras, niin on totta, että $kayttaja ei ole vieras, jolloin $kayttaja on rekisteröitynyt, eli siis voidaan tulostaa se nimi.
Aihe on jo aika vanha, joten et voi enää vastata siihen.