[ -Godfather- @ 03.07.2013. 11:52 ] @
Evo mene ponovo...Pokušavam da izmenim tip konekcije al to mi stvara problem kod paginacije koju koristim
Ranije sam se konektovao sa
db.php
Code:
<?php
$mysql_hostname = "localhost";
$mysql_user = "root";
$mysql_password = "root";
$mysql_database = "messages";
$prefix = "";
$bd = mysql_connect($mysql_hostname, $mysql_user, $mysql_password) or die("Error");
mysql_select_db($mysql_database, $bd) or die("Eror");

?>

a dio koda koji treba za paginaciju izgleda ovako
load_data.php
Code:
$query_pag_data = "SELECT msg_id,message from messages LIMIT $start, $per_page";
$result_pag_data = mysql_query($query_pag_data) or die('MySql Error' . mysql_error());
$msg = "";
while ($row = mysql_fetch_array($result_pag_data)) {
$htmlmsg=htmlentities($row['message']);
    $msg .= "<li></b> " . $htmlmsg . "</li>";
}
$msg = "<div class='data'><ul>" . $msg . "</ul></div>"; // Content for Data


/* --------------------------------------------- */
$query_pag_num = "SELECT COUNT(*) AS count FROM messages";
$result_pag_num = mysql_query($query_pag_num);
$row = mysql_fetch_array($result_pag_num);
$count = $row['count'];
$no_of_paginations = ceil($count / $per_page);

i ovo je radilo odlično.
E sad sam ja promenio konekciju
db_novo.php
Code:
<?php
$prefix = "";
try {
    $pdo = new PDO('mysql:host=localhost;dbname=messages', 'root', 'root');
} catch (PDOException $e){
    exit('Datebase error.');
}
?>

i javlja mi grešku jer ne uspevam da prepravim load_data.php
load_data_novo.php
Code:
$query = $pdo->prepare("SELECT msg_id,message from messages LIMIT $start, $per_page");
$query->bindValue(1, $message);
$msg = "";
while ($row = mysql_fetch_array($result_pag_data)) {
$htmlmsg=htmlentities($row['message']);
    $msg .= "<li></b> " . $htmlmsg . "</li>";
}
$msg = "<div class='data'><ul>" . $msg . "</ul></div>"; // Podaci


/* --------------------------------------------- */
$query = $pdo->prepare("SELECT COUNT(*) AS count FROM messages");
$query->bindValue(1, $row);
$count = $row['count'];
$no_of_paginations = ceil($count / $per_page);


Verovatno da u load_data_novo.php ništa nije tačno pa ako može neko da mi kaže šta da uradim...

[Ovu poruku je menjao -Godfather- dana 03.07.2013. u 21:12 GMT+1]
[ pajaja @ 03.07.2013. 16:35 ] @
Gde ti se izvrsava taj prepared statement?
Najbolje je da procitas manual i pogledas primere, bice ti sve jasno.
[ Mladjox @ 03.07.2013. 16:59 ] @
PDO i mysql_fetch_array, zanimljivo O.o
[ -Godfather- @ 03.07.2013. 18:48 ] @
Citao sam al nisam uspio srediti...Daleko je to od zanimljivog, rekoh da nista nije tačno jer ne umijem sve napisati kao PDO
[ Mladjox @ 03.07.2013. 19:02 ] @
Citat:
-Godfather-: Citao sam al nisam uspio srediti...Daleko je to od zanimljivog, rekoh da nista nije tačno jer ne umijem sve napisati kao PDO


Da si samo 5 min proveo na linku koji je postavio pajaja znao bi o cemu se radi, niko od nas se nije rodio naucen, nadji sam gdje ti je greska i ispravi je, sto se vise budes trudio vise ces znati :)

I evo ti jos mala pomoc

http://net.tutsplus.com/tutori...-phps-pdo-for-database-access/
[ -Godfather- @ 03.07.2013. 19:17 ] @
Slab sam sa PHP-om treba mi samo ovo za paginaciju zato i trazim pomoc...al lakse je drzati nekom predavanje nego mu pomoci...
[ pajaja @ 03.07.2013. 19:24 ] @
Citat:
Citao sam al nisam uspio srediti...Daleko je to od zanimljivog, rekoh da nista nije tačno jer ne umijem sve napisati kao PDO

Ovo su elementarne stvari koje su objasnjene u manualu, dao sam ti link na kome postoje primeri i dao sam ti hint da nemas nigde izvrsavanje prepared statement-a. Da si procitao prvu recenicu sa linka video bi da u njoj pise:
Citat:
Prepares an SQL statement to be executed by the PDOStatement::execute() method.

Ti ne pozivas nigde u svom kodu execute metod.

Da si pogledao primere za PDOStatement::execute() video bi ovako nesto na pocetku:
Code (php):

<?php
/* Execute a prepared statement by binding PHP variables */
$calories = 150;
$colour = 'red';
$sth = $dbh->prepare('SELECT name, colour, calories
    FROM fruit
    WHERE calories < :calories AND colour = :colour'
);
$sth->bindParam(':calories', $calories, PDO::PARAM_INT);
$sth->bindParam(':colour', $colour, PDO::PARAM_STR, 12);
$sth->execute();
?>
 

Na osnovu njega mozes zakljuciti kako se zadaju parametri u prepared statementu (:calories, :colour), kako se vezuju vrednosti za te parametre (bindParam) i na kraju kako se izvrsava prepared statement (execute). Sada bi trebalo da znas kako da prepravis ove dve linije
Code (php):
$query_pag_data = "SELECT msg_id,message from messages LIMIT $start, $per_page";
$result_pag_data = mysql_query($query_pag_data) or die('MySql Error' . mysql_error());

tako da koristis PDO po ugledu na primer iznad. Skoro je identicna stvar. Nakon toga mozes da pogledas i ostale primere da bi video kako se uzimaju rezultati toga sto si uradio i da pitas ako ti nesto nije jasno.
[ -Godfather- @ 03.07.2013. 21:16 ] @
Nije mi baš najjasnije ovo oko bindParam al evo kako to kod mene izgleda
Code:
$query = $pdo->prepare("SELECT msg_id,message from messages LIMIT $start, $per_page");
$query->bindParam(1, $msg_id, PDO::PARAM_INT);
$query->bindParam(2, $message, PDO::PARAM_INT);
$query->execute();
$msg = "";
while ($row = $query->fetch(PDO::FETCH_ASSOC)) {
$htmlmsg=htmlentities($row['message']);
    $msg .= "<li></b> " . $htmlmsg . "</li>";
}
$msg = "<div class='data'><ul>" . $msg . "</ul></div>"; // Podaci

/* --------------------------------------------- */
$query1 = $pdo->prepare("SELECT COUNT(*) AS count FROM messages");
$query1->execute();
$count = $query1->rowCount();
$no_of_paginations = ceil($count / $per_page);

Jel bar nešto tačno?
[ Tpojka @ 03.07.2013. 21:47 ] @
Ne treba da bind-uješ ono što tražiš iz baze već vrijednosti (ili parametre, zavisno od zahtjeva) potrebne query-ju.
Tako da:
Code:

$query = $pdo->prepare("SELECT msg_id,message from messages LIMIT ?, ?");
$query->bindValue(1, $start, PDO::PARAM_INT);
$query->bindValue(2, $per_page, PDO::PARAM_INT);
$query->execute();
$msg = "";
while ($row = $query->fetch(PDO::FETCH_ASSOC)) {
$htmlmsg=htmlentities($row['message']);
    $msg .= "<li></b> " . $htmlmsg . "</li>";
}
$msg = "<div class='data'><ul>" . $msg . "</ul></div>"; // Podaci

/* --------------------------------------------- */
$query1 = $pdo->prepare("SELECT COUNT(*) AS count FROM messages");
$query1->execute();
$count = $query1->rowCount();
$no_of_paginations = ceil($count / $per_page);

S tim da se moraju znati vrijednosti $start i $per_page prije prvog query-ja.
Drugi dio pretpostavljam da radi.

p.s.
[off]Kako koristite php code highlight?[/off]
[ -Godfather- @ 03.07.2013. 22:05 ] @
Nisam ni ja siguran za drugi deo, cini mi se da ne radi....Ne razumem pitanje za korišćenje php code highlight?

[Ovu poruku je menjao -Godfather- dana 03.07.2013. u 23:20 GMT+1]
[ pajaja @ 04.07.2013. 00:01 ] @
Citat:
Kako koristite php code highlight?

[code:php]
[ -Godfather- @ 04.07.2013. 07:46 ] @
Ovaj drugi deo izgleda da nije u redu, samo što ne znam gde grešim. Probao sam i
Code:
$query1 = $pdo->prepare("SELECT COUNT(*) AS `brojac` FROM messages");
$query1->execute();
$row = $query1->fetchAll(PDO::FETCH_ASSOC);
$brojac = count($row);
$no_of_paginations = ceil($brojac / $per_page);
[ pajaja @ 04.07.2013. 14:46 ] @
Najbolje je da posle $row = $query1->fetchAll(PDO::FETCH_ASSOC); uradis var_dump($row) i da vidis kako izgleda ta promenljiva.
U prvom primeru:
Code (php):
$query1 = $pdo->prepare("SELECT COUNT(*) AS count FROM messages");
$query1->execute();
$count = $query1->rowCount();

brojis broj redova koji ce za tvoj query uvek biti jedan. Ne bi trebalo da brojis broj redova vec da iskoristis vrednost koju dobijes kao rezultat query-ja. Isto vazi i za drugi primer:
Code (php):

$query1 = $pdo->prepare("SELECT COUNT(*) AS `brojac` FROM messages");
$query1->execute();
$row = $query1->fetchAll(PDO::FETCH_ASSOC);
$brojac = count($row);
 

Ovde ce ti $row biti asocijativni niz opet sa samo jednim elementom pa ce i $brojac uvek imati vrednost 1. Vrednost koju trazis mozes najlakse videti tako sto ces da uradis var_dump($row) i pogledas strukturu promenjlive. Vrednost koju trazis ovde ce izgledati recimo $row[0]['brojac'] - 0 kao prvi row (zato sto si iskoristio fetchAll() metod) i 'brojac' kao promenljiva ciju vrednost uzimas (zato sto si iskoristio PDO::FETCH_ASSOC).
[ -Godfather- @ 04.07.2013. 16:08 ] @
U pravu si da uvijek ima vrednost 1, al ja se ubih i ne mogu da napravim da mi daje broj redova
Da li može nesto kao što ti reče da iskoristim prvi query
Code:
$count = $query->rowCount();
$no_of_paginations = ceil($count / $per_page);




[Ovu poruku je menjao -Godfather- dana 04.07.2013. u 17:20 GMT+1]
[ pajaja @ 04.07.2013. 17:47 ] @
Gresis u samoj logici ne u php-u. Uzimas broj redova query-ja kojim zahtevas broj unosa u tabeli. COUNT(*) ce uvek imati jedan red i tebi treba ta vrednost a ne broj redova, to je vec izracunato. Dacu ti primer:
Code:

mysql> select count(*) as brojac from ip2c;
+--------+
| brojac |
+--------+
| 108257 |
+--------+
1 row in set (0.01 sec)



Query je isti kao tvoj, i kao sto vidis broj redova ovog query-ja je 1 iako u tabeli postoji 108257 unosa. Da si koristio select * from messages; onda bi uzimao broj redova, ovako uzimas tu vrednost i dodeljujes je promenljivoj $count.
[ -Godfather- @ 04.07.2013. 19:47 ] @
Probao sam sve sto sam nasao na netu al ne ide, ako moze napisi mi ta dva reda...
[ pajaja @ 04.07.2013. 20:05 ] @
Ne znam kakve si primere trazio po internetu ali ja sam ti vec napisao u kojoj liniji ti je greska i objasnio kako da ispravis.
Code (php):

$count = $row[0]['brojac'];
 

[ -Godfather- @ 04.07.2013. 20:34 ] @
Vidim da se trudis da bih naucio, a takodje vidim da mi to slabo ide. Nisam programer samo sam hteo da promenim nesto na sajtu...i pored svih tvojih uputstava opet nisam uspeo
Da li celi kod koji treba da mi izracuna broj redova izgleda
Code (php):
$query1 = $pdo->prepare("SELECT COUNT(*) AS `brojac` FROM messages");
$query1->execute();
$row = $query1->fetchAll(PDO::FETCH_ASSOC);
$brojac = count($row);
$count = $row[0]['brojac'];

mada ne verujem...
[ pajaja @ 04.07.2013. 21:20 ] @
Pa izgleda da jesi uspeo, samo sto imas liniju koda viska ($brojac = count($row);) koja ne bi trebalo da utice na funkcionalnost osim ako ne koristis posle promenljivu $brojac umesto $count. Uglavnom ovo bi trebalo da radi:
Code (php):

$query1 = $pdo->prepare("SELECT COUNT(*) AS `brojac` FROM messages");
$query1->execute();
$row = $query1->fetchAll(PDO::FETCH_ASSOC);
$count = $row[0]['brojac'];
$no_of_paginations = ceil($count / $per_page);
 

Inace ovde broj redova dobijas od baze, ne racunas ti u kodu. Vrednost koju dobijes od SQL query-ja predstavlja broj poruka koje postoje u toj tabeli u bazi.