Obsah fóra
PravidláRegistrovaťPrihlásenie




Odpovedať na tému [ Príspevkov: 9 ] 
AutorSpráva
Offline

Užívateľ
Užívateľ
Obrázok užívateľa

Registrovaný: 13.05.08
Prihlásený: 07.11.14
Príspevky: 43
Témy: 7
Príspevok NapísalOffline : 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


Offline

Užívateľ
Užívateľ
Obrázok užívateľa

Registrovaný: 21.02.07
Prihlásený: 21.02.10
Príspevky: 3984
Témy: 96
Príspevok NapísalOffline : 13.05.2008 20:33

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>&nbsp;".mysql_result($vypis, $i,"number")."</td>";
echo "<td width=20% align=left><font face=arial size=1>&nbsp;".mysql_result($vypis, $i,"imageID")."</td>";
echo "<td width=20% align=left><font face=arial size=1>&nbsp;".mysql_result($vypis, $i,"date")."</td>";
echo "<td width=40% align=left><font face=arial size=1>&nbsp;".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\">&nbsp;
<a href=\"?end=$end&max=$max&start=$y\">$i</a>&nbsp;</font>";
if ($y==$start){$button.= "</B>";}
}
echo "</table>";
echo "<br><br>";
echo "$button<br>";
mysql_error();
?>


Offline

Užívateľ
Užívateľ
Obrázok užívateľa

Registrovaný: 13.05.08
Prihlásený: 07.11.14
Príspevky: 43
Témy: 7
Príspevok Napísal autor témyOffline : 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?


Offline

Užívateľ
Užívateľ
Obrázok užívateľa

Registrovaný: 21.02.07
Prihlásený: 21.02.10
Príspevky: 3984
Témy: 96
Príspevok NapísalOffline : 13.05.2008 21:10

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 ...


Offline

Užívateľ
Užívateľ
Obrázok užívateľa

Registrovaný: 13.05.08
Prihlásený: 07.11.14
Príspevky: 43
Témy: 7
Príspevok Napísal autor témyOffline : 13.05.2008 21:19

Nefunguje. Novu verziu s par dalsimi (dufam ze nie vyznamnymi) upravami som reupol na: http://tmn.lupo.sk/empiko/formular/script2.txt


Offline

Skúsený užívateľ
Skúsený užívateľ
Pomoc s PHP vypisom MySQL databazy

Registrovaný: 30.05.06
Prihlásený: 08.10.14
Príspevky: 1756
Témy: 35
Bydlisko: BA - WESTSIDE
Príspevok NapísalOffline : 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.
Offline

Užívateľ
Užívateľ
Obrázok užívateľa

Registrovaný: 13.05.08
Prihlásený: 07.11.14
Príspevky: 43
Témy: 7
Príspevok Napísal autor témyOffline : 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


Offline

Skúsený užívateľ
Skúsený užívateľ
Pomoc s PHP vypisom MySQL databazy

Registrovaný: 30.05.06
Prihlásený: 08.10.14
Príspevky: 1756
Témy: 35
Bydlisko: BA - WESTSIDE
Príspevok NapísalOffline : 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>&nbsp;".$riadok['number']."</font></td>";
   echo "<td width=20% align=left><font face=arial size=1>&nbsp;".$riadok['imageID']."</font></td>";
   echo "<td width=20% align=left><font face=arial size=1>&nbsp;".$riadok['date']."</font></td>";
   echo "<td width=20% align=left><font face=arial size=1>&nbsp;".$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>&nbsp;".$riadok['number']."</font></td>";
    echo "<td width=20% align=left><font face=arial size=1>&nbsp;".$riadok['imageID']."</font></td>";
    echo "<td width=20% align=left><font face=arial size=1>&nbsp;".$riadok['date']."</font></td>";
    echo "<td width=20% align=left><font face=arial size=1>&nbsp;".$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">&nbsp;
  <a href="?start=$y">$i</a>&nbsp;</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.
Offline

Užívateľ
Užívateľ
Obrázok užívateľa

Registrovaný: 13.05.08
Prihlásený: 07.11.14
Príspevky: 43
Témy: 7
Príspevok Napísal autor témyOffline : 14.05.2008 14:55

Uf, dakujem velmi pekne :slaver: :slaver: :slaver:
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.


Odpovedať na tému [ Príspevkov: 9 ] 


Podobné témy

 Témy  Odpovede  Zobrazenia  Posledný príspevok 
V tomto fóre nie sú ďalšie neprečítané témy. pomoc s vypisom z databázy

v PHP, ASP

2

375

29.03.2009 15:05

stenley Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. PHP,MySQL problem s vypisom

v PHP, ASP

7

494

18.05.2010 17:10

Ecko Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. Potrebujem pomoc s nastavenim PHP serveru a mysql

v PHP, ASP

16

2328

01.08.2006 20:38

stefo Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. MYSQL - premazavanie databazy

v Databázy

3

539

09.04.2010 10:19

Forty- Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. databázy v mysql

v PHP, ASP

1

499

13.09.2020 16:14

JanoF Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. Kódovanie MySQL databázy

v PHP, ASP

2

548

23.04.2011 18:30

richo9996 Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. PHP programátor - PHP, MySQL, jQuery,X)Html/CSS

v Ponuka práce

0

1304

02.05.2011 12:08

magicmedia Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. vyber z databazy mysql

v Databázy

9

762

15.11.2011 22:35

susedx Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. multiple selectlist z mysql databázy

v PHP, ASP

17

973

23.03.2008 16:14

Tominator Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. Export MySQL databázy z phpmyadmin

v Databázy

2

433

01.08.2018 15:04

BX Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. nastavenie crona - automatická optimalizácia mysql databázy

v Redakčné systémy

0

1039

19.09.2008 1:11

Slivka Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. MYSQL, pripojenie k serveru, vytvorenie databazy atd.

v Databázy

12

1452

05.08.2011 15:48

don jebot Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. Tvorca databázy MySQL spustil kampaň na jej záchranu

v Novinky

1

623

18.12.2009 14:59

Svolo Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. Vyber jedneho zaznamu s rovnakym cislom MySQL z databazy

v Databázy

1

3401

30.12.2018 21:57

SP!DER Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. PHP vyplnanie databazy

v PHP, ASP

2

337

12.10.2014 0:34

doubleR Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. Spojazdenie PHP a databazy

v Databázy

4

833

11.07.2011 11:17

ThePlaky Zobrazenie posledných príspevkov


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

Skočiť na:  

Powered by phpBB Jarvis © 2005 - 2024 PCforum, webhosting by WebSupport, secured by GeoTrust, edited by JanoF
Ako väčšina webových stránok aj my používame cookies. Zotrvaním na webovej stránke súhlasíte, že ich môžeme používať.
Všeobecné podmienky, spracovanie osobných údajov a pravidlá fóra