| | |
| Stránka: 1 z 1
| [ Príspevkov: 9 ] | |
Autor | Správa |
---|
Registrovaný: 13.05.08 Prihlásený: 07.11.14 Príspevky: 43 Témy: 7 | Napísal eMPiko: 13.05.2008 17:17 | |
|
Mam vytvorenu databazu a vypisujem si z nej pomocou scriptu udaje aj so strankovanim.
Zdrojovy kod SQL + PHP: http://tmn.lupo.sk/empiko/formular/script.txt
Mam na Vas dve prosby:
1) Takto mi vlastne nacitava celu databazu, co po urcitom case nebude vyhovujuce ako pre uzivatela, tak aj pre server. Poprosil by som Vas, aby ste mi ten script modifikovali tak, aby sa nacitali len riadky $start az $start+$rows
(Mozne riesenie: do query pridat LIMIT " . $start . "," . ($start+$rows) )
2) S tymto si taktiez neviem rady. Potreboval by som vytvorit premennu a
nasledne modifikovat kod tak, aby sa mi pri urcitom hypertextovom odkaze, v tvare napriklad http://domena.sk/script.php?premenna=hodnota, (pricom hodnota bude rovna poradiu riadku) vypisal iba urceny riadok databazy, pricom sa vynecha strankovanie.
(Mozne riesenie: do query pridat WHERE number = ".$_GET['show'].")
Avsak s mojimi rieseniami script prestal fungovat. Nenasiel by sa tu clovek ochotny do scriptu zapracovat moje poziadavky?
Moje riesenia som zakomponoval do vylepseneho scriptu: http://tmn.lupo.sk/empiko/formular/script2.txt
Avsak tento nefunguje...
Dakujem za pomoc
|
|
Registrovaný: 21.02.07 Prihlásený: 21.02.10 Príspevky: 3984 Témy: 96 |
skus toto ale ak nepôjde postím sa do toho hlbšie ...
php - kód
Kód: <?php echo "<table>"; $connect = mysql_connect("server", user, pw) or die ("FAILED!!!"); mysql_select_db(db, $connect); $rows=10; $start = 0; $koniec=$start+$rows; if($_GET['show']) $vypis = mysql_query("SELECT * FROM `obrazok_dna` WHERE number = ".$_GET["show"]." ORDER BY number DESC LIMIT " . $start . "," . ($start+$rows), $connect); else $vypis = mysql_query("SELECT * FROM `obrazok_dna` WHERE number = 0 ORDER BY number DESC LIMIT " . $start . ",".$koniec, $connect); if (!isset($max)) { $max = mysql_num_rows($vypis); } if (isset($start)) { $end=$rows+$start; if ($end>$max) {$end=$max;} for ($i=$start ; $i<$end ; $i++) { $number = mysql_result($vypis, $i,"number"); $imageID = mysql_result($vypis, $i,"imageID"); $date = mysql_result($vypis, $i,"date"); $caption = mysql_result($vypis, $i,"caption"); echo "<tr>"; echo "<td width=20% align=left><font face=arial size=1> ".mysql_result($vypis, $i,"number")."</td>"; echo "<td width=20% align=left><font face=arial size=1> ".mysql_result($vypis, $i,"imageID")."</td>"; echo "<td width=20% align=left><font face=arial size=1> ".mysql_result($vypis, $i,"date")."</td>"; echo "<td width=40% align=left><font face=arial size=1> ".mysql_result($vypis, $i,"caption")."</td>"; echo "</tr>"; }
} $num_buttons=intval($max/$rows); if ($num_buttons < ($max/$rows)) { $num_buttons++; }
for ($i = 1; $i <= $num_buttons; $i++) { $y=($i*$rows)-$rows; if ($y==$start){$button.= "<B>";} $button.= "<font face=\"verdana\" size=\"1\"> <a href=\"?end=$end&max=$max&start=$y\">$i</a> </font>"; if ($y==$start){$button.= "</B>";} } echo "</table>"; echo "<br><br>"; echo "$button<br>"; mysql_error(); ?>
|
|
Registrovaný: 13.05.08 Prihlásený: 07.11.14 Príspevky: 43 Témy: 7 | Napísal autor témy eMPiko: 13.05.2008 20:44 | |
|
bohuzial nefunguje, avsak mysql_error nehlasi ziadny chybu, vsetko co sa vsak vygeneruje je <table></table><br><br><br>
Poznamka: Zadefinoval si si premennu koniec, pricom si do nej nacital to co ja do premennej end, teoreticky mozem premennu koniec nahradit, ci nie?
|
|
Registrovaný: 21.02.07 Prihlásený: 21.02.10 Príspevky: 3984 Témy: 96 |
no prakticky hej čítal som povrchne ...
skús ešte toto:
Kód: $connect = mysql_connect("server", "user", "pw") or die ("FAILED!!!"); mysql_select_db("db", $connect);
teda úvodzovky ...
|
|
Registrovaný: 13.05.08 Prihlásený: 07.11.14 Príspevky: 43 Témy: 7 | |
Registrovaný: 30.05.06 Prihlásený: 08.10.14 Príspevky: 1756 Témy: 35 Bydlisko: BA - WESTSIDE | Napísal p360t: 13.05.2008 21:53 | |
|
Skús si to spustiť v prostredí phpMyAdmin, pričom za tie premenné dosaď nejaké rozumné hodnoty. Tam ti vypíše buď chybu (ale to asi nie, keď vravíš že mysql_error() nič nehlási), alebo nulový počet riadkov. Prípadne tie správne riadky a chybu máš niekde inde.
_________________
A. S. Tanenbaum píše: The terms LF, MF, and HF refer to low, medium, and high frequency, respectively. Clearly, when the names were assigned, nobody expected to go above 10 MHz, so the higher bands were later named the Very, Ultra, Super, Extremely, and Tremendously High Frequency bands. Beyond that there are no names, but Incredibly, Astonishingly, and Prodigiously high frequency (IHF, AHF, and PHF) would sound nice. |
|
Registrovaný: 13.05.08 Prihlásený: 07.11.14 Príspevky: 43 Témy: 7 | Napísal autor témy eMPiko: 13.05.2008 22:18 | |
|
No spustil som to, odstranil som par chyb v syntaxy, ale $_GET['show'] tam furt robil nejaky bordel, tak som ho odstranil. Aktualny zdrojak vyzera takto: http://tmn.lupo.sk/empiko/formular/script2.txt
S casti funguje, vypise prvych 10 pozadovanych riadkov, ale strankovanie uz akosi nefunguje, vypisu sa sice tlacitdla, ale prepinanie medzi strankami uz nefunguje. To nacitanie jedneho riadku by som dorobil niekedy inokedy, teraz by som potreboval hlavne co najrychlejsie urobit to strankovanie
|
|
Registrovaný: 30.05.06 Prihlásený: 08.10.14 Príspevky: 1756 Témy: 35 Bydlisko: BA - WESTSIDE | Napísal p360t: 14.05.2008 7:21 | |
|
Ehm, p360t píše: za tie premenné dosaď nejaké rozumné hodnoty , máš pocit, že $_GET['show'] nie je premenná? Je to konštanta? Je to rezervované slovo? Alebo je to komentár???
Počuj, rozumieš vôbec tomu kódu? Skúsim ti to tak slovne opísať, riadok po riadku...
Na začiatku sa pripojíš k databázi, to je OK. Potom z nie celkom pochopiteľného dôvodu vždy nastavíš $rows, $start a de facto aj $end na nejaké pevné hodnoty. Spustíš dva (!!!) dopyty na databázu (načo dva?). Potom, ak nie je nastavená premenná $max, tak sa nastaví ako počet riadkov v tabuľke (tu predpokladám, že direktívu register_globals máš nastavenú na hodnotu "on", inak by sa ti to spustilo pri každom behu skriptu, bohužiaľ je to bezpečnostná trhlina, ktorej by si sa mal vyvarovať a nastaviť RegisterGlobals = off). No a potom, ak je nastavená premenná $start, tak sa vykoná celá vetva výpisu. Lenže, ak si všimneš, na začiatku si dal $start = 0 a teda táto vetva sa vykoná vždy. Riadok if(isset($start)) teda nedáva zmysel. Spôsob, akým vypisuješ výsledok je zbytočne komplikovaný (a to nehovorím o neuzavretom <font> tagu). Lepšie riešenie je toto:
Kód: while($riadok = mysql_fetch_assoc($vypis)) { echo "<tr>"; echo "<td width=20% align=left><font face=arial size=1> ".$riadok['number']."</font></td>"; echo "<td width=20% align=left><font face=arial size=1> ".$riadok['imageID']."</font></td>"; echo "<td width=20% align=left><font face=arial size=1> ".$riadok['date']."</font></td>"; echo "<td width=20% align=left><font face=arial size=1> ".$riadok['caption']."</font></td>"; echo "</tr>"; }
Takto sa ti vypíšu všetky riadky z premennej $vypis (ak chceš robiť obmedzenie počtu riadkov, rob to radšej pri dopyte na databázu, dostaneš tak menej riadkov a teda šetríš pamäť a čas). Tento kód Kód: $num_buttons=intval($max/$rows); if ($num_buttons < ($max/$rows)) { $num_buttons++; } sa dá veľmi jednoducho nahradiť týmto: Kód: $num_buttons=ceil($max/$rows); Zvyšok je relatívne v poriadku, ale práve tu sa nachádza jadro tvojho problému - nefungujúce prepínanie stránok... Každému odkazu dávaš GET parametre, čo je fajn, až na to, že tieto parametre si v skripte prepíšeš (ak máš RegisterGlobals = on) respektíve ich vôbec nepoužiješ (ak máš RegisterGlobals = off). Takže, potrebuješ pracovať s premennými $_GET['end'], $_GET['max'], $_GET['start'] a to tak, že ak nie sú nastavené, tak sa použijú východzie hodnoty (ako teraz, tj $rows = 10, $start = 0, $end=$start + $rows), ale ak sú nastavené, tak sa skontrolujú, či obsahujú rozumné hodnoty, a ak hej tak sa použijú. Ak sa však na ten algoritmus ešte raz lepšie pozrieš, tak zistíš, že $rows, $end, ani $max nie sú potrebné, naopak, vhodným parametrom je len $start. Takže, opravený kód: Kód: CREATE TABLE `obrazok_dna` ( `number` INT UNSIGNED NOT NULL AUTO_INCREMENT , `imageID` CHAR( 255 ) CHARACTER SET ucs2 COLLATE ucs2_slovak_ci NOT NULL , `date` CHAR( 10 ) CHARACTER SET ucs2 COLLATE ucs2_slovak_ci NOT NULL , `caption` MEDIUMTEXT CHARACTER SET ucs2 COLLATE ucs2_slovak_ci NOT NULL , PRIMARY KEY(number) ) ENGINE = MYISAM ;
<?php echo "<table>"; $connect = mysql_connect("mysql.ic.cz", "ic_ripteam", "7896321456321") or die ("FAILED!!!"); mysql_select_db("ic_ripteam", $connect); if (isset($_GET['start']) && ereg("^[0-9]+$", $_GET['start'])) { $start=$_GET['start']; } else { $start=0; } $rows=10; // toto je počet riadkov v každom výpise
$pocet = mysql_query("SELECT COUNT(*) AS c FROM obrazok_dna"); $pocet = mysql_fetch_assoc($pocet); $pocet = $pocet['c']; // $pocet je teraz pocet vsetkych riadkov v databazi $vypis = mysql_query("SELECT * FROM obrazok_dna ORDER BY number DESC LIMIT $start,$rows"); if (mysql_num_rows($vypis) > 0) { while($riadok = mysql_fetch_assoc($vypis)) { echo "<tr>"; echo "<td width=20% align=left><font face=arial size=1> ".$riadok['number']."</font></td>"; echo "<td width=20% align=left><font face=arial size=1> ".$riadok['imageID']."</font></td>"; echo "<td width=20% align=left><font face=arial size=1> ".$riadok['date']."</font></td>"; echo "<td width=20% align=left><font face=arial size=1> ".$riadok['caption']."</font></td>"; echo "</tr>"; } } $num_buttons=ceil($pocet/$rows); $button = ''; for ($i = 1; $i <= $num_buttons; $i++) { $y=($i-1)*$rows; if ($y==$start){ $button.= "<B>"; } $button.= "<font face="verdana" size="1"> <a href="?start=$y">$i</a> </font>"; if ($y==$start){ $button.= "</B>"; } } echo "</table>"; echo "<br><br>"; echo "$button<br>"; echo(mysql_error()); ?>
_________________
A. S. Tanenbaum píše: The terms LF, MF, and HF refer to low, medium, and high frequency, respectively. Clearly, when the names were assigned, nobody expected to go above 10 MHz, so the higher bands were later named the Very, Ultra, Super, Extremely, and Tremendously High Frequency bands. Beyond that there are no names, but Incredibly, Astonishingly, and Prodigiously high frequency (IHF, AHF, and PHF) would sound nice. |
|
Registrovaný: 13.05.08 Prihlásený: 07.11.14 Príspevky: 43 Témy: 7 | Napísal autor témy eMPiko: 14.05.2008 14:55 | |
|
Uf, dakujem velmi pekne
Je pravda ze v tom kode som sa trochu stratil, kedze normalny vypis som nejako zvladol sam, ale potom mi par uprav pomohol jeden moj zname, ako vidim PHP "expert" a hned to neslo, este raz diky.
|
|
| Stránka: 1 z 1
| [ Príspevkov: 9 ] | |
Podobné témy | Témy | Odpovede | Zobrazenia | Posledný príspevok |
---|
| pomoc s vypisom z databázy v PHP, ASP | 2 | 373 | 29.03.2009 15:05 stenley | | PHP,MySQL problem s vypisom v PHP, ASP | 7 | 489 | 18.05.2010 17:10 Ecko | | Potrebujem pomoc s nastavenim PHP serveru a mysql v PHP, ASP | 16 | 2320 | 01.08.2006 20:38 stefo | | MYSQL - premazavanie databazy v Databázy | 3 | 535 | 09.04.2010 10:19 Forty- | | databázy v mysql v PHP, ASP | 1 | 492 | 13.09.2020 16:14 JanoF | | Kódovanie MySQL databázy v PHP, ASP | 2 | 543 | 23.04.2011 18:30 richo9996 | | PHP programátor - PHP, MySQL, jQuery,X)Html/CSS v Ponuka práce | 0 | 1298 | 02.05.2011 12:08 magicmedia | | vyber z databazy mysql v Databázy | 9 | 755 | 15.11.2011 22:35 susedx | | multiple selectlist z mysql databázy v PHP, ASP | 17 | 966 | 23.03.2008 16:14 Tominator | | Export MySQL databázy z phpmyadmin v Databázy | 2 | 426 | 01.08.2018 15:04 BX | | nastavenie crona - automatická optimalizácia mysql databázy v Redakčné systémy | 0 | 1034 | 19.09.2008 1:11 Slivka | | MYSQL, pripojenie k serveru, vytvorenie databazy atd. v Databázy | 12 | 1446 | 05.08.2011 15:48 don jebot | | Tvorca databázy MySQL spustil kampaň na jej záchranu v Novinky | 1 | 616 | 18.12.2009 14:59 Svolo | | Vyber jedneho zaznamu s rovnakym cislom MySQL z databazy v Databázy | 1 | 3303 | 30.12.2018 21:57 SP!DER | | PHP vyplnanie databazy v PHP, ASP | 2 | 331 | 12.10.2014 0:34 doubleR | | Spojazdenie PHP a databazy v Databázy | 4 | 828 | 11.07.2011 11:17 ThePlaky |
| Nemôžete zakladať nové témy v tomto fóre Nemôžete odpovedať na témy v tomto fóre Nemôžete upravovať svoje príspevky v tomto fóre Nemôžete mazať svoje príspevky v tomto fóre
|
|