Toon posts:

[MySQL/PHP] load *

Pagina: 1
Acties:
  • 49 views sinds 30-01-2008

Verwijderd

Topicstarter
Mijn php-script laadt de waarfen een mysql-tabel van ca 600 records in tabellen/forms,maaar of course dit duurt even zeg can 40 seconden,is dit nog in te korten/optimaliseren want wachten daarop is niet echt nuttig...
hij(=PHP) opent in een loop de tabl en leest mbv een teller variable de waarden en zet deze in een bepaalde rij van de tabel.

  • Grum
  • Registratie: Juni 2001
  • Niet online
code? (vergeet de [ php][/php ] tags niet en waag et es un-indented code te pasten >:))

Verwijderd

Topicstarter
PHP:
1
<?[code]        <?$t1=1;$t2=1;$t3=1;$t4=1;$t5=1;$t6=1;$t7=1;$t8=1;$t9=1;$t10=1;$t11=1;$t12=1;$t13=1;include 'infofile.inc';mysql_connect($host,$user,$pwd);mysql_select_db($db)or die ("Database couldn't be found ....");$sql="select * from artikelen";$result=mysql_query($sql);$teller=0;if($info=mysql_fetch_array($result)){do{$o[$teller] = $info[0];$a[$teller] = $info[1];$p[$teller] = $info[2];$v[$teller] = $info[3];echo"<BR>";if($a[$teller] > 0){echo"<font color=\"FFFFFF\">";echo"<tablewidth=\"100%\" height=\"20\" border=\"1\" cellspacing=\"0\" cellpadding=\"0\">";echo"<tr>";echo"<td height=\"20\" bgcolor=\"#99CCFF\" bordercolor=\"#0000CC\">";echo"<formname=\"form1\" method=\"post\" action=\"leesbestelling.php?nummer=$a[$teller]&amp;klantnummer=$klantnummer&amp;naam=$naam&amp;adres=$adres&amp;postcode=$postcode&amp;woonplaats=$woonplaats\">";echo"                <inputtype=\"text\" name=\"t1\" size=\"10\" maxlength=\"10\">";echo"</td>"; echo"<tdheight=\"20\" bgcolor=\"#77ccFF\" bordercolor=\"#0000CC\">";echo"                <inputtype=\"text\" name=\"omschrijving\" size=\"50\" maxlength=\"10\" value=\"$o[$teller]\">";echo"</td>";echo"<td height=\"20\" bgcolor=\"#99CCFF\" bordercolor=\"#0000CC\">";echo"                <inputtype=\"text\" size=\"10\" name=\"omschrijving\" size=\"5\" maxlength=\"10\" value=\"$v[$teller]\">";echo"</td>";echo"<tdheight=\"20\" bgcolor=\"#77ccFF\" bordercolor=\"#0000CC\" >";                echo"                <inputtype=\"text\" name=\"omschrijving\" size=\"6\" maxlength=\"10\" value=\"$p[$teller]\">";echo" ";echo"€";echo" ";echo"&amp;nbsp";echo"</td>";echo"<td height=\"20\" bgcolor=\"#99ccFF\" bordercolor=\"#0000CC\">";echo"<font textcolor=\"000000\">";        echo"        <inputtype=\"submit\" name=\"Bestel\" value=\"Bestel\">              </form>";echo"</td></tr></table>";}$teller=$teller+1;}while($info=mysql_fetch_row($result));}else {echo "Sorry,no data available";}?>             [/code]?>

  • Grum
  • Registratie: Juni 2001
  • Niet online
sorry hier kijk ik niet naar ... unindented + ranzig :P


AAARRRGGGGHHHH

zie ik NU WEER die ranzige

code:
1
2
3
4
5
6
7
8
9
10
11
12
$theResult = mysql_query($theQuery);
if($theRow = mysql_fetch_array($theResult)
{
   do
   {
    // iets geweldigs
   } while($theRow = mysql_fetch_array($theResult));
}
else
{
   // no rows
}

kan je me AUB vertellen waar je die 100% FOUTE en BRAKKE code vandaan hebt ? zodat ik die mensen kan bellen/flamen/aanspreken/doodslaan/etcetcetc

  • spine
  • Registratie: Juni 2001
  • Niet online

spine

VISHUDDHI

wwwwwwwwwwwwwhaaa!!! i'm blind!!

[BSDFreaks.nl] [www.Dark-Future.org] [Alizarin.nl]


  • wasigh
  • Registratie: Januari 2001
  • Niet online

wasigh

wasigh.blogspot.com

help hem dan iig aan de goede code :( :(

Verwijderd

Topicstarter
sorry,
ik zal hem ident-en
PHP:
1
<?        <?$t1=1;$t2=1;$t3=1;$t4=1;$t5=1;$t6=1;$t7=1;$t8=1;$t9=1;$t10=1;$t11=1;$t12=1;$t13=1;include 'infofile.inc';mysql_connect($host,$user,$pwd);mysql_select_db($db)or die ("Database couldn't be found ....");$sql="select * from artikelen";$result=mysql_query($sql);$teller=0;if($info=mysql_fetch_array($result)) {  do  {    $o[$teller] = $info[0];    $a[$teller] = $info[1];    $p[$teller] = $info[2];    $v[$teller] = $info[3];    echo"<BR>";           if($a[$teller] > 0)             {              echo"<font color=\"FFFFFF\">";              echo"<table              width=\"100%\" height=\"20\" border=\"1   \"            cellspacing=\"0\" cellpadding=\"0\">";              echo"<tr>";              echo"<td height=\"20\" bgcolor=\"#99CCFF\"                bordercolor=\"#0000CC\">";              echo"<form              name=\"form1\" method=\"post\"               action=\"leesbestelling.php?nummer=$a               [$teller]   &amp;klantnummer=$klantnummer&amp;naam=$naam&amp;adres=$adres&amp;postcode=$postcode&amp;woonplaats=$woonplaats\">";echo"                <inputtype=\"text\" name=\"t1\" size=\"10\" maxlength=\"10\">";echo"</td>"; echo"<tdheight=\"20\" bgcolor=\"#77ccFF\" bordercolor=\"#0000CC\">";echo"                <inputtype=\"text\" name=\"omschrijving\" size=\"50\" maxlength=\"10\" value=\"$o[$teller]\">";echo"</td>";echo"<td height=\"20\" bgcolor=\"#99CCFF\" bordercolor=\"#0000CC\">";echo"                <inputtype=\"text\" size=\"10\" name=\"omschrijving\" size=\"5\" maxlength=\"10\" value=\"$v[$teller]\">";echo"</td>";echo"<tdheight=\"20\" bgcolor=\"#77ccFF\" bordercolor=\"#0000CC\" >";                echo"                <inputtype=\"text\" name=\"omschrijving\" size=\"6\" maxlength=\"10\" value=\"$p[$teller]\">";echo" ";echo"€";echo" ";echo"&amp;nbsp";echo"</td>";echo"<td height=\"20\" bgcolor=\"#99ccFF\" bordercolor=\"#0000CC\">";echo"<font textcolor=\"000000\">";        echo"        <inputtype=\"submit\" name=\"Bestel\" value=\"Bestel\">              </form>";echo"</td></tr></table>";}$teller=$teller+1;}while($info=mysql_fetch_row($result));}else {echo "Sorry,no data available";}?>             ?>

hmz,lukt niet best in zo'n edit schermpje :)

  • Grum
  • Registratie: Juni 2001
  • Niet online
en voor de 10de keer

het moet ZO
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
$theResult = mysql_query($theQuery);

if(mysql_num_rows($theResult))
{
   while($theRow = mysql_fetch_array($theResult))
   {
    // doe wat ruigs
   }
}
else
{
   // no rows
}

indent em eerst even voor je em post .. dit is echt niet te doen zo..

btw als je em nog es post .. delete dan je eerste brok code even en verwijs naar onderen .. scheelt ruimte en leesergernis :)

Verwijderd

Topicstarter
wat is het verschil dan ?
Maakt dat de code ook sneller zoals ik wil ?

Verwijderd

Verder kan dit:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
$t1=1;
$t2=1;
$t3=1;
$t4=1;
$t5=1;
$t6=1;
$t7=1;
$t8=1;
$t9=1;
$t10=1;
$t11=1;
$t12=1;
$t13=1;

beter zo:
code:
1
$t1=$t2=$t3=$t4=$t5=$t6=$t7=$t8=$t9=$t10=$t11=$t12=$t13=1;

Of nog beter met een forloop:
code:
1
2
for($i=1 ; $i <= 13; $i++)
   ${'t'.$i} = 1;

  • spine
  • Registratie: Juni 2001
  • Niet online

spine

VISHUDDHI

Op zondag 03 maart 2002 12:29 schreef Warezhelp het volgende:
wat is het verschil dan ?
Maakt dat de code ook sneller zoals ik wil ?
dan is het overzichtelijker...
kan je sneller fouten vinden....

dus het scheelt je later weer tijd bij het debuggen/editten

[BSDFreaks.nl] [www.Dark-Future.org] [Alizarin.nl]


Verwijderd

Topicstarter
ok dank,
maar wat is het echt verschil wijzigen van die
fetch_array spul en hoe maakt ik de code sneller uitvoerbaar of heeft dat te maken met die fetch_array wijziging ?

  • Grum
  • Registratie: Juni 2001
  • Niet online
ik snap niet echt wat je wil doen .. maar zover als ik nu kan zien heb ik dit iig op te merken:

1/ je gebruikt t1-13 helemaal niet
2/ je doet select *
3/ je gebruikt DE foutste structuur om records uit een set te trekken
4/ je print wat als $a[$teller] groter dan 0 is .. zo te zien doe je nix met de waardes als dat niet zo is .. nou .. select die dan ook niet :)
5/ je gebruikt 24!! echo om een stukje html op je pagina te krijgen terwijl dat heel anders kan (denk aan php tags sluiten en dan <?=$varname?> te gebruiken of Heredoc methode.
6/ door punt 5 gebruik je ruime 50+ \" wat je code onleesbaar en ranzig maakt :)

[edit]
watvoor internet verbinding heb je btw ?

je spuwt nl nogal wat html uit .. als je server sloom is en je connectie ook (naar de server of gewoon sowieso) dan kan et best 40 sec duren voor jij de pagina binnen hebt.

Verwijderd

Op zondag 03 maart 2002 12:30 schreef Zef het volgende:
Verder kan dit:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
$t1=1;
$t2=1;
$t3=1;
$t4=1;
$t5=1;
$t6=1;
$t7=1;
$t8=1;
$t9=1;
$t10=1;
$t11=1;
$t12=1;
$t13=1;

beter zo:
code:
1
$t1=$t2=$t3=$t4=$t5=$t6=$t7=$t8=$t9=$t10=$t11=$t12=$t13=1;

Of nog beter met een forloop:
code:
1
2
for($i=1 ; $i <= 13; $i++)
   ${'t'.$i} = 1;
Ik heb er allemaal niet zo heel vel verstand van maar met mijn simpele logica denk ik dat dit je wel wat tijd bespaart.

  • Grum
  • Registratie: Juni 2001
  • Niet online
het is niet sneller btw - het ziet er alleen een stuk netter uit (al isset stom dat et gedaan word .. maar ach .. assignments kosten minder dan 1 ms)

Verwijderd

Topicstarter
Op zondag 03 maart 2002 12:33 schreef Grum het volgende:
ik snap niet echt wat je wil doen .. maar zover als ik nu kan zien heb ik dit iig op te merken:

1/ je gebruikt t1-13 helemaal niet :: Niet in dit stukje code maar verop wek
2/ je doet select * :: Omdat alle velden nodig zijn verderop kan ik wel select veld1,veld2 etc doen komt op zelfde niet of niet ? Kan ik ook fout hebben :)
3/ je gebruikt DE foutste structuur om records uit een set te trekken De goede structuur is die zoals gepost hier net iets eerder?
4/ je print wat als $a[$teller] groter dan 0 is .. zo te zien doe je nix met de waardes als dat niet zo is .. nou .. select die dan ook niet :) :: als ie groter 0 is is het goed,rest maakt me niet uit
5/ je gebruikt 24!! echo om een stukje html op je pagina te krijgen terwijl dat heel anders kan (denk aan php tags sluiten en dan <?=$varname?> te gebruiken of Heredoc methode. :: hoe doe ik met die php-tags dan precies heb wel ns lopen zoeken
6/ door punt 5 gebruik je ruime 50+ \" wat je code onleesbaar en ranzig maakt :) :: Das waar :)

[edit]
watvoor internet verbinding heb je btw ?

je spuwt nl nogal wat html uit .. als je server sloom is en je connectie ook (naar de server of gewoon sowieso) dan kan et best 40 sec duren voor jij de pagina binnen hebt.
Connectie is ISDN,server aardig snel...ligt denk aan de query zelf?

  • Grum
  • Registratie: Juni 2001
  • Niet online
Je query is sowieso brak .. omdat je select * gebruikt.
Beter is om 'select veld1,veld2,veld3,etc' te gebruiken

Kijk eens hoe groot de html is die jij krijgt.

Verwijderd

Topicstarter
Ik heb de voorstellen die jullie gedaan hebben doorgevoerd,zit idd stuk netter uit,ben ik mee eens,maar hij er niet sneller van geworden,wat ik ook niet echt had verwacht ?

  • Grum
  • Registratie: Juni 2001
  • Niet online
wat is je code nu dan ? >:)

Let op: ik verwacht nu natuurlijk pico bello code .. netjes indented .. niet meer 25 echo's etc >:)

Verwijderd

Topicstarter
die echo's heb ik nog even gelaten,ident ook
maar de select structuur etc veranderd,
maar toch nog traag,zijn er suggesties?

  • Grum
  • Registratie: Juni 2001
  • Niet online
Op zondag 03 maart 2002 12:42 schreef Grum o.a. het volgende:
Kijk eens hoe groot de html is die jij krijgt.
...

[edit] veel echos maken je code ook onnodig sloom

als jij 25*600 echo's aanroept terwijl dat niet hoeft ... o well you get the picture >:)

  • ACM
  • Registratie: Januari 2000
  • Niet online

ACM

Software Architect

Werkt hier

Op zondag 03 maart 2002 13:00 schreef Warezhelp het volgende:
die echo's heb ik nog even gelaten,ident ook
maar de select structuur etc veranderd,
maar toch nog traag,zijn er suggesties?
Wat nog steeds niet duidelijk is, duurt het 40 seconden voor de pagina bij jou binnen is?

Of 40 seconden om de select uit te voeren :?

Verwijderd

Topicstarter
40 seconden duurt het om de pagina te laden
dan staat de hele form vol met alle waarden uit de tabel,
voor de rest is de pagina zelf niks anders
dan normale pagina dus opmaak ofzo ligt het niet aan.
.php file/html is 11kb

  • D2k
  • Registratie: Januari 2001
  • Laatst online: 31-08 10:19

D2k

http://gathering.tweakers.net/forum/list_message/2123532#2123532
zet dat eens <h3>tactisch</h3> in je code

Doet iets met Cloud (MS/IBM)


  • Grum
  • Registratie: Juni 2001
  • Niet online
oftewel zet boven aan je code (als eerste regel)
code:
1
$time = microtime();

en helemaal onderaan je code
code:
1
print "Total time" . (join('',array_reverse(explode(' ',substr(microtime(),1)))) - join('',array_reverse(explode(' ',substr($time,1)))));

ps die constructie die ik nu gebruik is NIET aan te raden :P maar wel lekker op 1 regel ;)

Verwijderd

Topicstarter
Ik heb even het totale scriptje toegepast en ik schrok nogal :)

87.140459
is de uitkomst :)
Hoe kan dat ? tis wel een tabel met rond de 600-800 records... die hij in form objects zet

Verwijderd

Ten eerste, het "onnodig" veel gebruik maken van echo's maakt je code niet super sloom.

Ten tweede lijkt het me dat je mysql server gewoon goed sloom is want die code stelt niet veel voor (qua berekeningen etc.)

Ten derde: voor het behoud van de goede sfeer in P&W, Grum chill baas, behandel beginners wat liever en netter en zwaai niet iedere keer bij een klein foutje met domme opmerkingen, dit is al de tweede keer deze week. Der is trouwens al een topic in SU geweest over, dus ik ben niet de enigste die er zo over denkt. Je hebt dan misschien wel super leet code skils maar dan kun je je altijd nog een beetje netter gedragen.

Verwijderd

Op zondag 03 maart 2002 13:40 schreef Warezhelp het volgende:
Ik heb even het totale scriptje toegepast en ik schrok nogal :)

87.140459
is de uitkomst :)
Hoe kan dat ? tis wel een tabel met rond de 600-800 records... die hij in form objects zet
maak eens alleen een scriptje met:
PHP:
1
<?$sql="select * from artikelen";$result=mysql_query($sql);while($test = mysql_fetch_array($result)){  echo $test[0]."<br>\n";}?>

En dan met je time scriptje er om heen, het lijkt namelijk dat je mysql server gewoon goed sloom is, of de verbinding tussen webserver en mysql-server

  • Grum
  • Registratie: Juni 2001
  • Niet online
TimD: leer coden voor je tegen me ingaat (en leer wederom smilies) :+

het maakt wel degelijk uit of jij 15000 keer echo aanroept of 600 keer ...

Verwijderd

Op zondag 03 maart 2002 13:48 schreef Grum het volgende:
TimD: leer coden voor je tegen me ingaat (en leer wederom smilies) :+
Ga jij mij hier een beetje de les zitten lezen :z

  • D2k
  • Registratie: Januari 2001
  • Laatst online: 31-08 10:19

D2k

*kuch*
Afbeeldingslocatie: http://gathering.tweakers.net/usericons/26286/GOTno.gif
'nough said

Doet iets met Cloud (MS/IBM)


Verwijderd

Topicstarter
dus het ligt niet aan het script zelf ?
zijn wel ca 800 records maar...
MySQL server is er een van voorheen-WideXS
hosting is ook daar,dus zou da het probleem zijn ? nee toch?

Verwijderd

Op zondag 03 maart 2002 13:56 schreef Warezhelp het volgende:
dus het ligt niet aan het script zelf ?
zijn wel ca 800 records maar...
MySQL server is er een van voorheen-WideXS
hosting is ook daar,dus zou da het probleem zijn ? nee toch?
nee idd je hebt nix te klagen over performence..

  • Grum
  • Registratie: Juni 2001
  • Niet online
code:
1
2
600 x echo van 25 punten = 0.006842017173767s
600 x 25 echo van 1 punt = 0.013561010360718s

verschil: 50% PUH :+

  • Grum
  • Registratie: Juni 2001
  • Niet online
ow nogmaals: hoeveel data krijg je terug van die pagina ? (hoe groot is je pagina?)

zover als ik nu aan je code kan zien is dat ~600-700 bytes per db item: dat komt neer op ~360-560kb aan html

nu mag jij et niet meer gek vinden dat je pagina lang laad >:)

Verwijderd

Topicstarter
.php file zelf is 11Kb.
Wat zou dan voor die lange wachttijden zorgen??

  • Grum
  • Registratie: Juni 2001
  • Niet online
geef de url van die pagina es als je wil ... ik geloof der geen sikkepit van :P

btw de filesize op de server zegt nix over de filesize in je browser:
PHP:
1
<?while(1)echo '.';?>

is een kleine file maar geeft een grote output >:)

Verwijderd

Topicstarter
hoi,
tis inderdaad in de browser nogal wat groter,
idd zon 360kb
maar ja dat is toch niet te verkleinen ? de database bevat maar 800 records van 3 velden per record :(

  • Bart Coppens
  • Registratie: April 2000
  • Laatst online: 25-11-2021
Als je server gzip compressie via PHP ondersteund wel, metd e search is hier wel wat over te vinden :)

Copyright Auteur heeft Tweakers.net BV geen exclusieve licentie op bovenstaande post verleend. Voorafgaande en uitdrukkelijke schriftelijke toestemming van Tweakers.net BV is dus niet noodzakelijk voor het vermenigvuldigen van bovenstaande post


Verwijderd

Topicstarter
hmz zit er nog steeds mee :'(

edit:

tis zon eenvoudige query


kan het ermee te maken hebben dat er geen primary key in zit ?
hoe kan ik een veld toevoegen zeg prim_key autonum die elke huidige record een autonum value geeft?

  • ACM
  • Registratie: Januari 2000
  • Niet online

ACM

Software Architect

Werkt hier

Op zondag 03 maart 2002 14:47 schreef Warezhelp het volgende:
hmz zit er nog steeds mee :'(
360KB/(8KB/s) = 45 seconden...

Kost via jouw isdn lijn dus 45 seconden om die pagina te downloaden.
Zet es alle echo's uit en zorg ervoor dat er geen output komt...
Behalve evt iets als "het kostte 1 seconde".

  • Grum
  • Registratie: Juni 2001
  • Niet online
je zou misschien ook es kunnen denken aan een xml output .. je poept nl wel veel html uit voor weinig info :)

Verwijderd

Topicstarter
kheb een primary key gemaakt en een index,maar beide
maakt totale uitvoer alleen maar hoger (:

  • ACM
  • Registratie: Januari 2000
  • Niet online

ACM

Software Architect

Werkt hier

Lees nou eerst alle reacties van Grum en mij door!

  • Grum
  • Registratie: Juni 2001
  • Niet online
snap je nou al dat je php pagina gewoon teveel data uitpoept om voor jou snel binnen te kunnen halen over je 8kb/s isdn lijntje ? :P

  • D2k
  • Registratie: Januari 2001
  • Laatst online: 31-08 10:19

D2k

Op zondag 03 maart 2002 15:31 schreef ACM het volgende:
Lees nou eerst alle reacties van Grum en mij door!
leuk geweest
wij zijn niet je debughulp
je moet zelf iets meer moeite doen
als je later nog een vraag hebt ben je van harte welkom

Doet iets met Cloud (MS/IBM)

Pagina: 1

Dit topic is gesloten.