Natrag   Forum.hr > Informatička tehnologija > Za napredne korisnike > Programiranje

Programiranje Za programere i one koji to žele postati ...

Odgovor
 
Tematski alati Opcije prikaza
Old 11.02.2017., 08:32   #21
Quote:
dado228 kaže: Pogledaj post
Ok pokusavao sam sa ovim al bezuspijesno, uspio sam samo kad ubacim var_dump funkciju poslije while petlje i onda mi kao ispuni tablicu ali LIMIT i dalje ne funkcionira. :/
To je nemoguće, a kad se događaju nemoguće stvari, onda se u pravilu radi o nekoj potpuno glupoj grešci, previdu koji te odvede na krivi trag, pa grešku tražiš na krivom mjestu. Možeš li eksportirati strukturu baze?

Što se tiče ostalog, vidim da neke stvari krivo radiš, pa da te upozorim:
- html - ima dva elementa s istim ID; tfoot ne koristiš, pa nema potrebe ni povećavati veličinu dokumenta praznim tagovima
- korištenje empty funkcije vrlo često upućuje na pogrešan pristup. Znaš koji su ti scenariji prihvatljivi, a koji ne, koju vrijednost varijabla može imati, a koju ne, pa testiraj u skladu s tim. Empty obuhvaća širok spektar vrijednosti, a moguće je da ti nisu sve ispravne. Kod php-a imaš operatore !== i === koji testiraju vrijednost i tip podatka, pa tako "" == false daje true, ali "" === false daje false. Obrati i na to pažnju.
- filtriranje rezultata sa if pokazuje da ti query nije adekvatan. Nepotrebno vadiš podatke iz baze koje ne prikazuješ.

Ovo zadnje je vjerojatno uzrok zašto nemaš rezultata. Ako izvadiš 5 rezultata, može se dogoditi da niti jedan od tih 5 ne zadovoljava uvjet if-a i nemaš nijedan rezultat za prikazati. Zbog toga u queriju koristiš WHERE kojim podatke filtriraš u bazi. Zato baze i služe.

Za početak, uđi u phpMyAdmin i tamo testiraj query dok ne dobiješ one retke koje želiš prikazati, a tek onda to kreni implementirati u PHP-u. Tako ćeš uvijek znati da li ti query radi ili ne i što ti točno vraća, te znati tražiti grešku dalje.

Dodatne napomene: s obzirom da je jasno da se tek učiš, uputio bih te na https://secure.php.net/manual/en/mysqli.prepare.php i općenito na incjection prevention. Mislim da ti je na tom području PDO daleko intuitivniji, konzistentniji i bolje dokumentiran. Naravno, to spada pod subjektivno mišljenje.
MrBlc is offline  
Odgovori s citatom
Old 11.02.2017., 18:23   #22
Rijeseno! Mysql (LIMIT)

Kod:
$query3 = "SELECT * FROM RadniNalog  LIMIT 3 OFFSET 0 ";
                            if (($result3 = mysqli_query($conn,$query3)) === false) {
                                echo mysqli_error ($conn);
                                die();
                            }
                            echo "<table id='tablica1'>";
                            echo "<h3> ISPIS OTVORENIH RADNIH NALOGA</h3>";
                            echo "<thead id='tablica1'>";
                              echo "<tr> <th> ID </th> <th>pogon</th> <th>stroj</th> <th>datum otvaranja</th></tr>";
                              echo "<tbody>";
                              while ($row = mysqli_fetch_assoc($result3))
                              {

                              //ispis samo otvorenih radnih naloga znaci sa statusom == 0 i praznim poljem opisRjesenja
                              if($row['status']==0 && empty($row['opisRjesenja']) && empty($row['koristeniDijelovi']) && empty($row['tip']))
                              var_dump($row);
                                {
                                echo "<tr> <td>" .$row['id']. "</td> <td>" .$row['pogonRN']. "</td>  <td>" .$row['strojRN']. "</td>  <td>" .$row['datumOtvaranja']. "</td> <td><a href='UpdateONalog.php?ONalog=".$row['id']."'>Pregled</a> </td></tr>";
                                }
                              }
                              echo "</tbody>";
                              echo "<tfoot>";
                              echo "</tfoot>";
                             echo "</thead>";
                            echo "</table>";
ovako mi radi dakle poslusao sam savjet i izmijenio funkciju : mysqli_fetch_array sa ovom mysqli_fetch_assoc . A nakon IF() uvjeta stavio funkciju var_dump(). Iskreno jos mi nije tocno jasno zasto ovako radi dali je zbog funkcije koju ranije nisam koristio : var_dump() ako je, nije mi bas jasno zasto ovako radi, a bez nje ne radi LIMIT clause. Ako sam dobro shvatio var_dump funkcija vraca tip i vrijednost varijable.
dado228 is offline  
Odgovori s citatom
Old 11.02.2017., 18:34   #23
Quote:
MrBlc kaže: Pogledaj post
To je nemoguće, a kad se događaju nemoguće stvari, onda se u pravilu radi o nekoj potpuno glupoj grešci, previdu koji te odvede na krivi trag, pa grešku tražiš na krivom mjestu. Možeš li eksportirati strukturu baze?

Što se tiče ostalog, vidim da neke stvari krivo radiš, pa da te upozorim:
- html - ima dva elementa s istim ID; tfoot ne koristiš, pa nema potrebe ni povećavati veličinu dokumenta praznim tagovima
- korištenje empty funkcije vrlo često upućuje na pogrešan pristup. Znaš koji su ti scenariji prihvatljivi, a koji ne, koju vrijednost varijabla može imati, a koju ne, pa testiraj u skladu s tim. Empty obuhvaća širok spektar vrijednosti, a moguće je da ti nisu sve ispravne. Kod php-a imaš operatore !== i === koji testiraju vrijednost i tip podatka, pa tako "" == false daje true, ali "" === false daje false. Obrati i na to pažnju.
- filtriranje rezultata sa if pokazuje da ti query nije adekvatan. Nepotrebno vadiš podatke iz baze koje ne prikazuješ.

Ovo zadnje je vjerojatno uzrok zašto nemaš rezultata. Ako izvadiš 5 rezultata, može se dogoditi da niti jedan od tih 5 ne zadovoljava uvjet if-a i nemaš nijedan rezultat za prikazati. Zbog toga u queriju koristiš WHERE kojim podatke filtriraš u bazi. Zato baze i služe.

Za početak, uđi u phpMyAdmin i tamo testiraj query dok ne dobiješ one retke koje želiš prikazati, a tek onda to kreni implementirati u PHP-u. Tako ćeš uvijek znati da li ti query radi ili ne i što ti točno vraća, te znati tražiti grešku dalje.

Dodatne napomene: s obzirom da je jasno da se tek učiš, uputio bih te na https://secure.php.net/manual/en/mysqli.prepare.php i općenito na incjection prevention. Mislim da ti je na tom području PDO daleko intuitivniji, konzistentniji i bolje dokumentiran. Naravno, to spada pod subjektivno mišljenje.
Slažem se u svemu sto kazes, takodjer nemam potrebe izvlacit podatake iz baze i nakndano ih filtrirat kad vec mogu to na samoj bazi . Jos sam na pocetku sa PHP-om i Mysql-om tako da to ide malo sporo . hvala na savjetu !
dado228 is offline  
Odgovori s citatom
Odgovor


Tematski alati
Opcije prikaza

Kreni na podforum




Sva vremena su GMT +2. Trenutno vrijeme je: 00:32.