[ 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 | 7
NapísalOffline : 13.05.2008 17:17 | Pomoc s PHP vypisom MySQL databazy

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: 3991
Témy: 96 | 96
NapísalOffline : 13.05.2008 20:33 | Pomoc s PHP vypisom MySQL databazy

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 | 7
Napísal autor témyOffline : 13.05.2008 20:44 | Pomoc s PHP vypisom MySQL databazy

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: 3991
Témy: 96 | 96
NapísalOffline : 13.05.2008 21:10 | Pomoc s PHP vypisom MySQL databazy

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 | 7
Napísal autor témyOffline : 13.05.2008 21:19 | Pomoc s PHP vypisom MySQL databazy

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: 1772
Témy: 35 | 35
Bydlisko: BA - WESTSIDE
NapísalOffline : 13.05.2008 21:53 | Pomoc s PHP vypisom MySQL databazy

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 | 7
Napísal autor témyOffline : 13.05.2008 22:18 | Pomoc s PHP vypisom MySQL databazy

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: 1772
Témy: 35 | 35
Bydlisko: BA - WESTSIDE
NapísalOffline : 14.05.2008 7:21 | Pomoc s PHP vypisom MySQL databazy

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 | 7
Napísal autor témyOffline : 14.05.2008 14:55 | Pomoc s PHP vypisom MySQL databazy

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.


 [ Príspevkov: 9 ] 


Pomoc s PHP vypisom MySQL databazy



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

207

29.03.2009 15:05

stenley

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

PHP,MySQL problem s vypisom

v PHP, ASP

7

296

18.05.2010 17:10

Ecko

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

Potrebujem pomoc s nastavenim PHP serveru a mysql

v PHP, ASP

16

2040

01.08.2006 20:38

stefo

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

Kódovanie MySQL databázy

v PHP, ASP

2

317

23.04.2011 18:30

richo9996

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

MYSQL - premazavanie databazy

v Databázy

3

356

09.04.2010 10:19

Forty-

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

vyber z databazy mysql

v Databázy

9

453

15.11.2011 22:35

susedx

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

815

02.05.2011 12:08

magicmedia

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

multiple selectlist z mysql databázy

v PHP, ASP

17

537

23.03.2008 16:14

Tominator

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

843

19.09.2008 1:11

Slivka

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

MYSQL, pripojenie k serveru, vytvorenie databazy atd.

v Databázy

12

1047

05.08.2011 15:48

don jebot

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

381

18.12.2009 14:59

Svolo

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

PHP vyplnanie databazy

v PHP, ASP

2

94

12.10.2014 0:34

doubleR

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

Spojazdenie PHP a databazy

v Databázy

4

506

11.07.2011 11:17

ThePlaky

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

Link v PHP z databázy

v PHP, ASP

4

306

14.09.2008 18:59

chvosty

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

zmazanie riadku s databazy v php

v Databázy

2

783

18.12.2006 20:12

arzzen

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

vlozit cez PHP hodnotu NULL do databazy

v PHP, ASP

2

330

30.07.2009 15:13

tomast7



© 2005 - 2017 PCforum, edited by JanoF