Kirjautuminen

Haku

Tehtävät

Keskustelu: Nettisivujen teko: ongelmia uutisscriptin kanssa

Sivun loppuun

mylvari [29.04.2007 12:29:22]

#

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.

Blaze [29.04.2007 13:06:42]

#

Onko tuota $uutiset_mysql_taulu määritelty missään?

mylvari [29.04.2007 13:30:27]

#

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.

kayttaja-2791 [29.04.2007 13:45:07]

#

"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

mylvari [29.04.2007 15:21:17]

#

Kiitos tuosta huomautuksesta tosin ongelma ei selvinnyt vieläkään eli tuo uutinen ei vain tykkää tulostua edelleenkään.

Dramo [29.04.2007 19:32:23]

#

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';
}

mylvari [29.04.2007 19:41:06]

#

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".

mylvari [29.04.2007 23:20:41]

#

Nyt en tiedä mitä tein mutta nyt tämä toimii. Kiitos avuistanne.

Dramo [30.04.2007 12:58:57]

#

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;


Sivun alkuun

Vastaus

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

Tietoa sivustosta