Olen tekemässä itselleni tälläistä uutis-scriptiä ja tarvitsisin hieman neuvoja.
Mysql kannassa on taulu uutiset jossa on 4 saraketta otsikko aika itse uutinen sekä id joka kasvaa jokaiselle uutiselle aina yhdellä.
Nyt olen tekemässä pätkää jolla saisi id:n perusteella näytettyä tietyn uutisen, mutta jostain kummasta syystä se ei tahdo toimia.
<?php $connect = mysql_connect($uutiset_mysql_osoite, $uutiset_mysql_kayttaja, $uutiset_mysql_salasana) or die("Yhdistäminen ei onnistunut!"); mysql_select_db($uutiset_mysql_kanta, $connect) or die("Tietokantaa ei löytynyt!"); $moodi = $_GET['uutiset']; $identti = $_GET['identti']; if (moodi == nayta) { $kysely = "SELECT * FROM $uutiset_mysql_taulu WHERE id = $identti"; $haku = mysql_query($kysely, $connect) or die("Virhe kyselyssä!"); while ($rivi = mysql_fetch_array($haku, MYSQL_ASSOC)) { //muuttujat $otsikko = $rivi["otsikko"]; $aika = $rivi["aika"]; $uutinen = $rivi["uutinen"]; $id = $rivi["id"]; echo '<div style="text-align:center; margin-left:auto; margin-right:auto; border:1px solid black; width:75%; background-color:white;">'; echo '<div style="border-bottom:1px dashed black; padding:0.5%; background-color:#E0E0E0;">'; echo "$otsikko </div>"; echo "<p> $uutinen </p>"; echo '<div style="font-size:0.8em; color:gray; text-align:right;">'; echo "uutinen postattu $aika"; echo '</div></div>'; } } mysql_close($connect); ?>
Tuossa on se pala koodia jonka pitäisi mielestäni toimia muttei sitten toimi.
Onko tuota $uutiset_mysql_taulu määritelty missään?
Juu on mysqliin yhdistää kyllä ja saankin kaikki uutiset ulos mutta ongelmia on tuon kohdan kanssa. Saa tietysti ehdottaa jotain toistakin tapaa tehdä tuo yksittäisen uutisen näyttäminen.
"if (moodi == nayta) { "
muotoon
"if ($moodi == "nayta") { "
Huomaathan muuten että sinulla on mahdollisesti sql-injektion mentävä reikä koodissasi (ellei palvelimella ole käytössä PHP:n Magic Quotesit). Et escapeta (mysql_real_escape) käyttäjän syötteitä missään vaiheessa, joten mahdollisesti käyttäjät voivat tunkea mitä koodia haluavat kyselyynsä tekemällä syötteitä:
http://wiki.mureakuha.com/wiki/SQL-injektio
Kiitos tuosta huomautuksesta tosin ongelma ei selvinnyt vieläkään eli tuo uutinen ei vain tykkää tulostua edelleenkään.
Miltäs $uutiset_mysql_taulu näyttää?
Sitte ihan pikku vinkki, //Muuttujat kohtaa helpottamaan
while (list($otsikko, $aika, $uutinen, $id) = mysql_fetch_array($haku, MYSQL_ASSOC)) { ...
Ja sitten voisit myös koittaa mysql_fetch_assoc jos toimisi paremmin.
Tai sitten yksinkertaisesti, onko tietokannassasi mitään ulostettavaa :D ..? Heittääkö skriptisi jotain takaisin, vai mitään? Debug mielessä voisit laittaa
if (mysql_num_rows($haku) === 0) {
echo 'ei tulostettavaa';
}
Tietokannasta saan tulostettua kyllä nuo kaikki uutiset, mutta ongelmia tulee tämän kanssa kun pitäisi hakea tietty rivi kun ei tunnu toimivan. Scripti ei heitä mitään takaisin ja tuolla ehdottamallasi debug menetelmällä testasin ja ei tulostanut erroriaan eli pitäisi kannassa olla kaikki ok. Ehkäpä sitten tyydyn siihen että käyttäjällä on mahdollisuus nähdä vain pari uusinta "uutista".
Nyt en tiedä mitä tein mutta nyt tämä toimii. Kiitos avuistanne.
Ahaa, nyt muuten tajusin yhen jutun. Jos yhtä riviä tulostat niin mysql_fetch_row on oikea funccari. Kyllä se noinkin jotenkin pitäisi wörrkiä, mutta mutta.
Eli
$tulos = mysql_fetch_row($haku);
list($otsikko, $aika, $uutinen, $id) = $tulos;
Aihe on jo aika vanha, joten et voi enää vastata siihen.