Tässä olen yrittänyt saada toimintaan tietokannasta haettuja uutisia jotka näytettäisiin kymmenen ryppäissä jaettuna eri sivuille.
koodin pätkän olen täältä sivuilta joskus napannut ja sitä muunnellut. ensimmäisen (keikkailmoitus taulun) kanssa toimi moitteetta mutta kun yritin soveltaa samaa koodia tähän niin saan vain seurakseni seuraavanlaisen virheilmoituksen:
Warning: mysql_result(): supplied argument is not a valid MySQL result resource in /home/stagerad/public_html/news.php on line 29
rivillä 29 siis teksi:
$maara = mysql_result(mysql_query("SELECT COUNT(*) FROM news"), 0);
<?php require("config.php"); require("header.php"); $dbhost = 'localhost'; $dbuser = 'username'; $dbpass = 'password'; $arvot = array(); $conn = mysql_connect($dbhost, $dbuser, $dbpass) or die ('Error connecting to mysql'); $dbname = 'news'; // yhdellä sivulla olevien viestien määrä $vps = 10; // luetaan osoitteen mukana tullut sivunumero if (isset($_GET['sivu'])) { $sivu = $_GET['sivu']; } $sivu = intval($sivu); // haetaan näytettävät viestit tietokannasta $viestit = mysql_query("SELECT date, text, headline FROM news ORDER BY date DESC LIMIT ".($sivu * $vps).", {$vps}"); // selvitetään viestien määrä $maara = mysql_result(mysql_query("SELECT COUNT(*) FROM news"), 0); // luodaan sivunumerolista, jos sivuja on useampia if ($maara > $vps) { echo "<p>"; for ($i = 0; $i < $maara / $vps; $i++) { // tulostetaan pystyviivat sivunumeroiden väliin if ($i <> 0) { echo " | "; } // jos tämä sivu näytetään, tulostetaan sivun numero lihavoituna if ($sivun == $i) { echo "<b>".($i + 1)."</b>"; // muussa tapauksessa luodaan linkki toiselle sivulle } else { echo "<a href=\"{$_SERVER['PHP_SELF']}?sivu={$i}\">".($i + 1)."</a>"; } } echo "</p>"; } // tulostetaan tietokannasta luetut viestit for ($i = 0; $i < $vps; $i++) { // varmistetaan, että viimeisellä sivulle ei tule ylimääräistä if ($i + $sivu * $vps < $maara) { // tulostetaan viestin tiedot yksinkertaisesti muotoiltuna $aika = mysql_result($viestit, $i, 0); $nimi = mysql_result($viestit, $i, 1); $teksti = mysql_result($viestit, $i, 2); echo "<p><b>$date</b> kirjoitti <b>".date("d.m.y H:i", $headline)."</b>:<br> <i>{$text}</i></p>"; } } ?>
käytin samaa pohjaa toiseen samankaltaiseen sivuun joka toimi hyvin. mutta tähän se ei sitten enään toiminutkaan. missä vika??
(jos jotain muutakin epäolennaista näkyy niin saa korjata :)
Näyttäisi herjaavan tätä riviä:
$maara = mysql_result(mysql_query("SELECT COUNT(*) FROM news"), 0);
Veikkaan, että tietokannasta ei löydy yhtää riviä ja siksi tuo ilmoittaa virheen.
Avuksi tulee mysql_free_result
Jos taulussa ei ole yhtään riviä, COUNT(*) palauttaa 0, eikä se aiheuta virhettä.
lisäsin tietokantaan rivejä mutta vika ei poistu..
en tiedä vaikuttaako asiaan mutta missä muodossa olisi järkevintä pitää taulukon kenttien tyypit .. (text, date) .. tällä hetkellä on päivämäärässä tuo date ja muissa text
Onko toi nyt ihan varmasti täsmälleen se koodi mitä olet käyttänyt. Näyttäisi todennäköiseltä, että "SELECT COUNT(*) FROM news" olisi jotain kirjoitettuna väärin tms, niin että kysely vaan palauttaisi virheen. Silloin tosin aikaisemmallakaan rivillä ei pitäisi toimia.
Sinulta puuttuu ainakin alusta
mysql_select_db($dbname, $conn) or die ("Tietokannan valitseminen epäonnistui");
Ja kyselyn jälkeen perinteinen
<?php echo mysql_error(); ?>
Saattaa kertoa hyvinkin tarkkaan missäpäin virhe majailee. Luultavamminkin date saattaa aiheuttaa ongelmia, koska se on kuitenkin varattu sana...
Suosittelisin käyttämään echo error
:n tilalla Exceptioneita, esimerkki.
Testasin itse tuota date hommaa ja toimi ihan moitteetta.
Kiitoksen avuista .. tosiaan lisäsin mysql_select_db:n ja hieman siistin koodia ja johan lähti pelittämään!
kumarrus
Aihe on jo aika vanha, joten et voi enää vastata siihen.