Novo

Forum kao aplikacija na telefonu

Dodajte forum na početni ekran i koristite ga kao aplikaciju, sa menijem na dnu ekrana.

  • 18 odgovora
  • 4.424 pregleda

Najnovija ↓

Izmena konekcije i paginacija 03.07.2013. u 12:52 · pre 162 meseca
izmenjeno 1 put, poslednji put -Godfather- 03.07.2013. u 21:12
  1. -Godfather-03.07.2013. u 21:12zapis iz teksta poruke
#1
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...
Re: Izmena konekcije i paginacija 03.07.2013. u 19:48 · pre 162 meseca #4
Citao sam al nisam uspio srediti...Daleko je to od zanimljivog, rekoh da nista nije tačno jer ne umijem sve napisati kao PDO
Re: Izmena konekcije i paginacija 03.07.2013. u 20:02 · pre 162 meseca #5
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/
Re: Izmena konekcije i paginacija 03.07.2013. u 20:17 · pre 162 meseca #6
Slab sam sa PHP-om treba mi samo ovo za paginaciju zato i trazim pomoc...al lakse je drzati nekom predavanje nego mu pomoci...
Re: Izmena konekcije i paginacija 03.07.2013. u 20:24 · pre 162 meseca #7
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.
Potpis
xxx
mali mali mali kamičak...nebo plave boje.
In Memoriam: Madzone Zeka(15.09.2005-16.09.2005)
Re: Izmena konekcije i paginacija 03.07.2013. u 22:16 · pre 162 meseca #8
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?
Re: Izmena konekcije i paginacija 03.07.2013. u 22:47 · pre 162 meseca #9
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]
Potpis
-A Tpojke su Đuro - šta?
-Osnovne jedinice diverzantskih grupa!
Re: Izmena konekcije i paginacija 03.07.2013. u 23:05 · pre 162 meseca
izmenjeno 1 put, poslednji put -Godfather- 03.07.2013. u 23:20
  1. -Godfather-03.07.2013. u 23:20zapis iz teksta poruke
#10
Nisam ni ja siguran za drugi deo, cini mi se da ne radi....Ne razumem pitanje za korišćenje php code highlight?
Re: Izmena konekcije i paginacija 04.07.2013. u 08:46 · pre 162 meseca #12
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);
Re: Izmena konekcije i paginacija 04.07.2013. u 15:46 · pre 162 meseca #13
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).
Potpis
xxx
mali mali mali kamičak...nebo plave boje.
In Memoriam: Madzone Zeka(15.09.2005-16.09.2005)
Re: Izmena konekcije i paginacija 04.07.2013. u 17:08 · pre 162 meseca
izmenjeno 1 put, poslednji put -Godfather- 04.07.2013. u 17:20
  1. -Godfather-04.07.2013. u 17:20zapis iz teksta poruke
#14
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);
Re: Izmena konekcije i paginacija 04.07.2013. u 18:47 · pre 162 meseca #15
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.
Potpis
xxx
mali mali mali kamičak...nebo plave boje.
In Memoriam: Madzone Zeka(15.09.2005-16.09.2005)
Re: Izmena konekcije i paginacija 04.07.2013. u 21:34 · pre 162 meseca #18
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...
Re: Izmena konekcije i paginacija 04.07.2013. u 22:20 · pre 162 meseca #19
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.
Potpis
xxx
mali mali mali kamičak...nebo plave boje.
In Memoriam: Madzone Zeka(15.09.2005-16.09.2005)
Prijavite se da biste odgovorili u ovoj temi.PrijavaRegistracija

Premeštanje teme