Avatar billede floetti Nybegynder
10. maj 2003 - 20:30 Der er 49 kommentarer og
1 løsning

Vandret istedet for lodret

Videre udbygning af et spørgsmål som jeg har sat før...

Her var spørgsmålet, hvordan jeg får resultatet at stå vandret istedet for lodret.

<?php
$i = 1;
$sql = mysql_query("Select * from gallery");
while($row = mysql_fetch_array($sql)){
echo "$row[Image]";
if($i == 2){
echo "<br/>";
$i = 0;
}
$i++;
}
?>

Det virker fint.. men nu er problemet at jeg gerne vil have scriptet at skrive en ny kolonne i en tabel.... forstår du ???

Så må det være noget med,

<table>
<?php
bla bla bla......
?>
</table>

-> floetti
Avatar billede roenving Novice
10. maj 2003 - 20:55 #1
Et forsøg -- PHP er ikke noget jeg kan, men:

<table>
<?php
$i = 1;
$sql = mysql_query("Select * from gallery");
while($row = mysql_fetch_array($sql)){
if($i ==1){
echo "/tr>";
}
echo "<td>"
echo "$row[Image]"
echo "</td>";
if($i == 2){
echo "</tr>";
$i = 0;
}
$i++;
}
?>
</table>
Avatar billede roenving Novice
10. maj 2003 - 20:55 #2
Ikke

echo "/tr>";

Men

echo "<tr>";
Avatar billede nicklasb Nybegynder
10. maj 2003 - 21:06 #3
roenving -> tror desværre ikke at den holder. Hvad sker der hvis den sidste post ender med at få tilknyttet $i-værdien 1 ?? Så kommer der en td for lidt, og der kommer til at mangle en </tr>.. gør der ikk??

prøv denne:

<table>
<?php
$i = 1;
$kolonner = 3;
while($row = mysql_fetch_array($sql)){

    if ($i == 1) {
        echo " <tr>";
    }
   
    echo "  <td>$row[Image]</td>";
    $i = $i++;
   
    if ($i == $kolonner) {
        echo " </tr>";
        $i = 1;
    }
}

if ($i < $kolonner) {
    for ($a = $i; $a <= $kolonner; $a++) {
        echo "  <td>&shy;</td>";
    }
echo " </tr>";
}
?>
</table>

Jeg ved ikke om det virker.. Har ikke testet. (skrev den bare her i vinduet)..
men også mest for at vise hvad jeg mener..
den kan garanteret også gøres LANGT bedre, og kortere. Men det kan der arbejdes videre på hvis den virker..

/Nicklas B.
Avatar billede fangel Nybegynder
10. maj 2003 - 21:08 #4
jeg har tidligere brugt denne kode...

<?php

$brede = 2; // antal billeder på en række...
$brede_paa_table=400; // brede på tabellen

$DB = mysql_connect("localhost","user","paswd")or die(mysql_error());
mysql_select_db("db",$DB)or die(mysql_error());

$query = mysql_query("SELECT * FROM gallery")or die(mysql_error());
while($data = mysql_fetch_array($query)){
  $indhold[] = $data['image'];
}

if(mysql_num_rows($query) == 0){
  echo "desværre ingen billeder endnu";
}
else{
  $i=0;
  $ii=0;
  echo "<table width=$brede_paa_table>\n <tr>\n";
  while($brede*(ceil(count($indhold)/$brede))>$i){
    if($ii == $brede){
      echo " </tr>\n <tr>\n";
      $ii=0;
    }
    if(isset($indhold[$i])){
      echo "  <td width=\"" . round($brede_paa_table / $brede,1) . "\">
    " . $indhold[$i] . "
    </td>\n";
    }
    else{
      echo "  <td width=\"" . round($brede_paa_table / $brede,1) . ">&nbsp;</td>\n";
    }

    $i++;
    $ii++;
  }
  echo " </tr>\n</table>";
}
?>

Morten
Avatar billede roenving Novice
10. maj 2003 - 21:12 #5
>>nicklasb

Du har helt ret, den glemte jeg, selvom det var meningen den skulle med ;-[
Avatar billede nicklasb Nybegynder
10. maj 2003 - 21:13 #6
hvorfor SÅ meget ??

Hvis du ikke skal bruge det til andet er der da igen grund til at skulle tælle alle posterne ??
  while($brede*(ceil(count($indhold)/$brede))>$i){ //Sku godt fundet på .. ;)

og så har du en MASSE variabler der hele tiden skal skiftes.. Der kan du vel også nøjes med en??
(ved godt jeg til gængælde slutter af med en for-løkke.. meeen..
og hvis det er bredden der gør det kan den også saktens sættes ind..

    echo "  <td style=\"width: 100px;\">$row[Image]</td>";

;)
Avatar billede fangel Nybegynder
10. maj 2003 - 21:15 #7
PS, skal lige siges at mit er testet og lavet så det stiller kildekoden pænt op... (alle række bliver også lige brede, og hvis breden er et kommetal bliver disse afrundet...)

koden ville kunne laves lidt kortere ved at benytte en for løkke... men gad ikke lige ændre det...

Morten
Avatar billede nicklasb Nybegynder
10. maj 2003 - 21:20 #8
dea_pg -> Min er RIGTIG pæn når den kommer op.. ;)
og der kan du også vælge bredden på alle cellerne.. men vel egentlig ikke det der er det væsenligste??

hvis du vil rundet den op kan du også bare lave en

$cellbrede = 100;
$cellbrede = ceil($cellbrede);

og så lave en

echo "  <td style=\"width: ". $cellbrede . "px;\">$row[Image]</td>";

men det jeg var ude efter var alle dine udregninger, variabler osv..

hvis det endelig skal være, kan du også bruge denne i stedet for for-løkken

while ($i <= $kolonner) {
    echo "  <td>&shy;</td>
";
    $i++;
}

har ikke lige sat mig ind i hvad der er bedst i dette tilfælde.. :D
Avatar billede nicklasb Nybegynder
10. maj 2003 - 21:21 #9
væsentligste even..
Avatar billede fangel Nybegynder
10. maj 2003 - 21:22 #10
jeg vil lige forbedre den lidt... her er en lidt kortere version...

<?php

// settings

$brede = 2; // antal billeder på en række...
$brede_paa_table=400; // brede på tabellen i pixel
$mhost = "localhost"; // mysql host
$muser =  "user"; // mysql bruger
$mpaswd = "paswd" // mysql password
$mdb = "db"; // mysql database
$mquery = "SELECT * FROM gallery"; // mysql query'et

// kode

$DB = mysql_connect($mhost,$muser,$mpaswd)or die(mysql_error());
mysql_select_db($mdb,$DB)or die(mysql_error());
$query = mysql_query($mquery)or die(mysql_error());
$antal_posts = mysql_num_rows($query);
if($antal_posts == 0){
  echo "desværre ingen billeder endnu";
}
else{
  echo "<table width=$brede_paa_table>\n <tr>\n";
  for($i=0,$ii=0; $brede*(ceil($antal_posts)/$brede))>$i; $i++, $ii++){
    if($ii == $brede){
      echo " </tr>\n <tr>\n";
      $ii=0;
    }
    if($data = mysql_fetch_array($query)){
      echo "  <td width=\"" . round($brede_paa_table / $brede,1) . "\">
    " . $data['image'] . "
    </td>\n";
    }
    else{
      echo "  <td width=\"" . round($brede_paa_table / $brede,1) . ">&nbsp;</td>\n";
    }
  }
  echo " </tr>\n</table>";
}
?>

Morten
Avatar billede nicklasb Nybegynder
10. maj 2003 - 21:24 #11
og hvis det er fordi linierne fortsætter langt ud, kan du jo bare fra linie 8 formatere det således:

        echo " <tr>
";
    }
   
    echo "  <td>$row[Image]</td>
";
    $i = $i++;
   
    if ($i == $kolonner) {
        echo " </tr>
";
        $i = 1;
    }
}

if ($i < $kolonner) {
    for ($a = $i; $a <= $kolonner; $a++) {
        echo "  <td>&shy;</td>
";
    }
echo " </tr>
";

Så står den som den skal..
men det er jo bare formateringen af outputtet.. det kan altid rettes til..
Avatar billede nicklasb Nybegynder
10. maj 2003 - 21:26 #12
dea_pq -> Der er da stadig optællinger.. bare i form af en mysql_num_rows($query); i stedet.. ?!?

og der er da stadig også en hav af variabler..
Avatar billede nicklasb Nybegynder
10. maj 2003 - 21:27 #13
og ikke for at træde i det... men nu har du også en for-sætning.. hvad er det der er så meget bedre ved den helvedes lange kode??
Avatar billede floetti Nybegynder
10. maj 2003 - 21:29 #14
Ok .... dea_pg

Mange linjer... men ser spændende ud. Hvad nu hvis jeg f.eks. vil have hver række skal have to kolloner ...

<tr>
<td>
text
</td>
<td>
text
</td>
</tr>

forstår du ???

-> floetti
Avatar billede nicklasb Nybegynder
10. maj 2003 - 21:32 #15
floetti -> Har du prøvet det jeg rettede.. så kommer dne til at stå mindst lige så pænt..
Avatar billede nicklasb Nybegynder
10. maj 2003 - 21:38 #16
altså så den kommer til at blive

<table>
<?php
$i = 1;
$kolonner = 3;
while($row = mysql_fetch_array($sql)){

    if ($i == 1) {
        echo " <tr>
";
    }
   
    echo "  <td>$row[Image]</td>
";
    $i = $i++;
   
    if ($i == $kolonner) {
        echo " </tr>
";
        $i = 1;
    }
}

if ($i < $kolonner) {
    for ($a = $i; $a <= $kolonner; $a++) {
        echo "  <td>&shy;</td>
";
    }
echo " </tr>
";
}
?>
</table>

sig til hvis den kommer med fejl..
Avatar billede fangel Nybegynder
10. maj 2003 - 21:47 #17
her lige testet mit og det virker,  det laver de 2 rækker som du spørger om...

nicklasb, jeg har fjernet den ene variabel... glad? og jeg bruger alligevel optællingen til at tjekke om der er nogen billeder

<?php
// settings
$brede = 2; // antal billeder på en række...
$brede_paa_table=400; // brede på tabellen i pixel

$mhost = "localhost"; // mysql host
$muser =  "user"; // mysql bruger
$mpaswd = "paswd"; // mysql password
$mdb = "db"; // mysql database
$mquery = "SELECT * FROM gallery"; // mysql query'et

// kode

$DB = mysql_connect($mhost,$muser,$mpaswd)or die(mysql_error());
mysql_select_db($mdb,$DB)or die(mysql_error());
$query = mysql_query($mquery)or die(mysql_error());
$antal_posts = mysql_num_rows($query);
if($antal_posts == 0){
  echo "desværre ingen billeder endnu";
}
else{
  echo "<table width=$brede_paa_table>\n <tr>\n";
  for($i=0; $brede*(ceil($antal_posts/$brede))>$i; $i++){
    if($i % $brede == 0){
      echo " </tr>\n <tr>\n";
    }
    if($data = mysql_fetch_array($query)){
      echo "  <td width=\"" . round($brede_paa_table / $brede,1) . "\">
    " . $data['image'] . "
    </td>\n";
    }
    else{
      echo "  <td width=\"" . round($brede_paa_table / $brede,1) . ">&nbsp;</td>\n";
    }
  }
  echo " </tr>\n</table>";
}
?>

Morten
Avatar billede floetti Nybegynder
10. maj 2003 - 21:49 #18
Hej nicklasb !

Billederne kommer stadigt at ligge lodret :(
Avatar billede nicklasb Nybegynder
10. maj 2003 - 22:00 #19
har lige prøvet at sætte det op, og der var lige et par enkelte fejl.. men ideen var der, og der er altså overhovedet ikke brug for så mange udregninger heller..
prøv dette:

<table>
<?php
$i = 0;
$kolonner = 3;
while($row = mysql_fetch_array($sql)){

    if ($i == 0) {
        echo " <tr>
";
    }

    echo "  <td>$row[Image]</td>
";
    $i = $i+1;

    if ($i == $kolonner) {
        echo " </tr>
";
        $i = 0;
    }
}

if ($i < $kolonner) {
    for ($i = $i; $i < $kolonner; $i++) {
        echo "  <td>&shy;</td>
";
    }
echo " </tr>
";
}
?>
</table>

og kom evt med en fejlmeddelelse hvis der kommer en.. ;)
og dea_pq -> Det handler SLET ikke om at jeg skal være glad.. Jeg er faktisk rigtig glad lige nu.. men ikke pga. du lavede dit script om.. Jeg er bare ude efter at det skal være en holdbar og GOD løsning frem for alt.
Hvis det er pga. de skide point, du spørger, kan du bare tage dem. jeg er bedøvende lige glad med dem.. ;)
Avatar billede nicklasb Nybegynder
10. maj 2003 - 22:06 #20
og hvis det endelig er, kan du også lave din for-løkke om så der stå:

    for ($i; $i < $kolonner; $i++) {
        echo "  <td>&shy;</td>
";
    }

Det går en micro-del hurtigere.. meget meget lidt.. hehe.. (der er ingen grund til at navngive samme variabel, med dens egen data.. hehe.. )

hvis der stadig er problemer, kan det evt skyldes din
  echo "  <td>$row[Image]</td>

skal der ikke lige et par '' om?!?
Avatar billede nicklasb Nybegynder
10. maj 2003 - 22:07 #21
og problemet jeg har rettet med en $i = $i+1; kunne også bare have været rettet med en $i++ .. ved ikke hvad jeg har tænkt på siden jeg har skrevet $i = $i++ ;) hehe..
Avatar billede fangel Nybegynder
10. maj 2003 - 22:08 #22
nicklasb => næ... har 5k point... og hvad skal jeg bruge dem til? så jeg er somend også lige glad med pointene... (glemte at sætte et ;) bagefter for at antyde det var ironi... sorry)

men jeg tvivler på at det vil tage mange ex. milisek. at lave de få udregninger... den mest tidskrævende er nok mysql_num_rows, og den bruges jo til at afgøre om der skal stå "ingen billeder"...
men lad os dog lave lidt tidstagning... finder lige et script til at lave "execution time"... så kan vi se om mit faktisk er så meget langsommere... (jeg giver mig gerne hvis fakta siger at jeg har uret)

Morten
Avatar billede fangel Nybegynder
10. maj 2003 - 22:09 #23
<btw>
hvis det skal være endnu hurtigere kan du faktisk skrive

for (; $i < $kolonner; $i++)
</btw>
Avatar billede floetti Nybegynder
10. maj 2003 - 22:11 #24
Helló ;)

Det virker fint med den sidste retting fra nicklasb, SUPER

lige et spørgsmål til vedr. scriptet !

om jeg vil lægge en <tr> i !!! skal jeg bare skrive sådan eller hvad ?

<table>
<?php
$i = 0;
$kolonner = 3;
while($row = mysql_fetch_array($sql)){

    if ($i == 0) {
        echo " <tr>
";
    }

    echo "  <td>$row[Image]</td>
";
    echo "  <td>$row[Description]</td>
";
    $i = $i+1;

    if ($i == $kolonner) {
        echo " </tr>
";
        $i = 0;
    }
}

if ($i < $kolonner) {
    for ($i = $i; $i < $kolonner; $i++) {
        echo "  <td>&shy;</td>
";
    }
echo " </tr>
";
}
?>
</table>

-> floetti
Avatar billede floetti Nybegynder
10. maj 2003 - 22:12 #25
selvfølgelig skal det være

<table>
<?php
$i = 0;
$kolonner = 3;
while($row = mysql_fetch_array($sql)){

    if ($i == 0) {
        echo " <tr>
";
    }

    echo "  <td>$row[Image]</td>
";
    echo "</tr><tr>"
";
    echo "  <td>$row[Description]</td>
";
    $i = $i+1;

    if ($i == $kolonner) {
        echo " </tr>
";
        $i = 0;
    }
}

if ($i < $kolonner) {
    for ($i = $i; $i < $kolonner; $i++) {
        echo "  <td>&shy;</td>
";
    }
echo " </tr>
";
}
?>
</table>

ik ?
Avatar billede roenving Novice
10. maj 2003 - 22:14 #26
Næh, du bliver nødt til at lave en anden struktur, da du vil skrive kommentar til billede 1 *efter* du har skrevet billede 2 -- så kan det være at Mortens array vil være smart ...
Avatar billede nicklasb Nybegynder
10. maj 2003 - 22:25 #27
er ked af det.. ;) http://home.hammering.dk/nb/index2.php

hvorfor ikke bare klare den med en :

  <td>[billedet her]<br>[teksten her]</td>

altså <br>

Den kommer den jo automatisk ned på næste linie.. og deler også, da der er max-bredde på cellen.. ;)
Avatar billede nicklasb Nybegynder
10. maj 2003 - 22:26 #28
da du bare kan sætte en max-bredde på even.. (lige som jeg viste tidligere med style)
Avatar billede fangel Nybegynder
10. maj 2003 - 22:30 #29
nicklasb => jeg fik ellers mit til at være hurtigst...

scriptet kørt på et database udtræk med 5 rækker i... hvert script kørt 10 individuelle gange... tiderne noteret og lavet et gennemsnit...

resultater:

Dea_PG: (mit)
0.011908
0.011085
0.008285
0.009927
0.009540
0.008567
0.008566
0.008500
0.010154
0.010198

avg: 0.0097495

NicklasB
0.010235
0.008208
0.009086
0.008659
0.009600
0.009971
0.009857
0.008434
0.008790
0.011722
0.009545

avg: 0.0104107

FORSKEL: Dea_PGs (mit) er 0.0006612 sek hurtigere

ganrentere ikke for ujævt belastning af serveren eller forkert indtastning da jeg skulle finde gennemsnit...

Morten
Avatar billede nicklasb Nybegynder
10. maj 2003 - 22:34 #30
hmm.. mystisk.. jeg kørte den nu bare engang hver. og så med en microtime ud over.. dem trækkede jeg så fra hinanden.. og det er hvad du kan se på den side.. der kan du også bare opdatere.. (fejler vel ikke hele tiden.. ;)

men ok.. det er ikke meget. Men er aligevel ikke i tvivl om hvilken jeg ville vælge.. (SLET ikke)
Avatar billede floetti Nybegynder
10. maj 2003 - 22:44 #31
Jo... det kunne man nok finde ud af !!

Tak for svarene... det blev man da klogere af ;)

Så er det point, hvem skal betales ??? :o

-> floetti
Avatar billede fangel Nybegynder
10. maj 2003 - 22:56 #32
Nicklasb => lavede lige et PHP script der kaldte hver side 50 gange, to resultatet og lavede en lille statestik...

her er resultaterne...

Nicklasb = 0.0086252
Dea_PG = 0.0088457

så du fører med 0.0002 sek... ;)

(hvis du vil se resulteterne ligger den en cached version her:
http://mfa.ath.cx/chached.html

og den der kører sciptet ligger her: (tager lang tid, da den jo laver 100 requests...)
http://mfa.ath.cx/sammenligning.php

Morten
Avatar billede tipsen Nybegynder
11. maj 2003 - 01:05 #33
dea: Gider du teste en kodestump fra mig senere - jeg er altid så glad for at optimere kode og vil se om jeg har været i stand til at optimere din!
Avatar billede tipsen Nybegynder
11. maj 2003 - 01:24 #34
dea+nicklasb: Hvis I vil lave en reel sammenligning af koden, skal I lave et eller andet der printer 500-1000 billeder ud i en html-tabel - da det udelukkende er den proces der varierer i metoderne - problemet hvis man tester med for lille et datamateriale er at den brugte tid domineres af db-operationerne og dermed primært afhænger af det load db-serveren har på det tidspunkt! Dvs. den ene metode til at generere html-tabellen kan sagtens være overlegen, men hvis datamaterialet ikke er stort nok kan det ikke ses af tidsforbruget.
Avatar billede tipsen Nybegynder
11. maj 2003 - 01:44 #35
Her er mit forslag til en optimeret udgave af koden - glæder mig til at høre resultatet, hvis en af jer gider teste det med en tabel med 300-400 celler/billeder!

<?php
$kolonner  = 2;                                // antal billeder pr række
$tablewidth = 400;                              // pixelbredde på tabellen
$cellwidth  = (int) ($tablewidth / $kolonner);  //cellebredde

$mhost      = 'localhost';                      // mysql host
$muser      = 'user';                          // mysql bruger
$mpaswd    = 'paswd';                          // mysql password
$mdb        = 'db';                            // mysql database

$mquery    = 'SELECT image FROM gallery';      // mysql query'et

$DB = mysql_connect($mhost, $muser, $mpaswd)or die(mysql_error());
mysql_select_db($mdb, $DB)or die(mysql_error());
$query = mysql_query($mquery)or die(mysql_error());
$antalimgs = mysql_num_rows($query);
if(!$antalimgs) {
  echo 'Desværre ingen billeder!';
}
else {
  $tmp = "<table width=$tablewidth>\n\t<tr>\n";
  for($i=0; $i < $antalimgs; $i++){
    if(!($i%$kolonner) && $i>0) { //problem med tom startrække fikset
      $tmp .= "\t</tr>\n\t<tr>\n";
    }
    list($image) = mysql_fetch_row($query);
    $tmp .= "\t\t<td width=\"$cellwidth\">$image</td>\n";
  }
  for($i=0;$i<$kolonner-($antalimgs%$kolonner);$i++) {
    $tmp .= "\t\t<td width=\"$cellwidth\">&nbsp;</td>\n";
  }
  $tmp .= "\t</tr>\n</table>";
  echo $tmp;
}
?>
Avatar billede tipsen Nybegynder
11. maj 2003 - 01:49 #36
Lige en enkelt rettelse:

    if(!($i%$kolonner) && $i>0 && $i<$antalimgs) { //problem med tom startrække og potentiel tom slutrække fikset

-hvis antallet af billeder passede perfekt til antallet af celler, ville den tidligere kodestump slutte af med en tom række - det er ikke længere tilfældet.
Avatar billede tipsen Nybegynder
11. maj 2003 - 01:50 #37
og det skulle endda have været:

    if(!($i%$kolonner) && $i>0 && $i<$antalimgs-1) { //problem med tom startrække og potentiel tom slutrække fikset
Avatar billede fangel Nybegynder
11. maj 2003 - 11:08 #38
så... nu er scriptene testet... se cachede resultater her:

http://mfa.ath.cx/cached_v2.html

Hurtig opsumering:
---
Hvert script kørt 50 gange, op mod en database med 453 poster...
Nicklasb = 0.02653204
Dea_PG = 0.0307763
Tipsen = 0.01761364
---

Morten
Avatar billede fangel Nybegynder
11. maj 2003 - 11:10 #39
tipsen => dog ligner det at der er en fejl i din, da sidste <tr> blev som denne

    <tr>
        <td width="200">[indhold]</td>
        <td width="200">[indhold]</td>
        <td width="200">[indhold]</td>
        <td width="200">&nbsp;</td>
    </tr>

Morten
Avatar billede nicklasb Nybegynder
11. maj 2003 - 11:41 #40
jeg må give mig.. ;)
har lige lavet samme forsøg, og fik meget tæt på same resultater som dea_pq gjorde 11/05-2003 11:08:44
Dog var dea_pq's selv, en smule langsommere (0,3923239)

SÅ skal min optimeres.. :D.. ej.. gidder ikke selv nu.. tror den er kommet langt nok ned, med tipsens forslag.. hehe.. ;)

(Jeg har pillet siden ned, da der er en eller anden der har requestet siden over 1100 gange.. (Selv om jeg ikke lige kan se hvad det skal bruges til..:) men pyt.. min egen server = min egen skyld = er lige glad nu, efter en reboot..
Hvis der er nogle der skal se mere på den, må i endelig bare sige til.. så kommer den op igen..
Avatar billede fangel Nybegynder
11. maj 2003 - 11:55 #41
(det gav også lige 600 ekstra requests i min log fil at jeg lavede de tests... min server kører bare fra min normale arbejdscomp (se stats for den på mfa.ath.cx). Min linux server køre nemli' ik så godt endnu... og den larmer for meget til at jeg gidder have den stående)

har også taget de ikke cachede sider ned nu, lavede en
header("LOCATION: cached_v2.html");
på de ikke cachede... hvis I vil have jeg skal køre testene igen, så kan jeg godt gøre det.. men ellers må i nøjes med de cachede resultater...

og nu er det jo ikke fordi at 0.02 sek er lang tid... for 450 poster... ;) der kommer jo nok en LIMIT ind på et tidspunkt...

Morten
Avatar billede nicklasb Nybegynder
11. maj 2003 - 12:02 #42
gangede det med 10.. for flere decimaler.. ;) så kun 0,01.. men de andre var langt hurtigere end i din test, hvis man kigger sådan på det..
jeg stillede samme krav for dem alle.. så håber da det er godt nok..

neeej.. det var såmendt i nat, der var en der havde reloaded 1100 gange (2200 kald på hver post)

men tror også den er GODT optimeret nu.. altså med de 0.01752467 fra tipsens.
(Godt nok meget jeg har fået rodet os ud i, for at lave et lille script der lister et par poster fra en database.. tihi.. ;)
Avatar billede fangel Nybegynder
11. maj 2003 - 12:05 #43
hva fann... man lære kun når man bliver presset... ;)
Avatar billede tipsen Nybegynder
11. maj 2003 - 12:38 #44
Den primære optimering i min er at udelade de mange kald til echo - det betyder meget! Jeg kan ikke lige overskue det med den sidste linie, hvorfor det kikser og jeg gider vist heller ikke bruge mere tid på det :-)

dea: Tak fordi du gad teste det!
Avatar billede nicklasb Nybegynder
11. maj 2003 - 12:48 #45
godt tip.. :) Har aldrig rigtig prøvet at optimere så langt ned, da det er min egen server det går ud over.. så jeg er lidt lige glad..
er der egentligt noget problem i at skrive $etellerandet = "    tekst"; //mellemrum i streng??
og $etellerandetandetenddetdervarderfør = "tekst
tekst

tekst"; // Linieskift??

eller er det bare for syns skyld?? (NU vil jeg lærer det en gang for alle..!)
Avatar billede tipsen Nybegynder
11. maj 2003 - 13:57 #46
nicklasb: Der er ikke noget galt i det - jeg synes bare det er pænere med \n\r\t i stedet for - men min metode kræver så også, at strengen omkranses af "" og ikke '', da strengen skal parses af php for at lave escape-koderne om til linieskift, tabulatorstop osv. I dit eksempel ovenfor kan strengen godt omkranses af '', hvilket er hurtigere end "" da php ikke behøver at bruge tid på at kigge strengen igennem for at se om der er escape-koder og variable der skal behandles!
Avatar billede otis Nybegynder
12. maj 2003 - 17:26 #47
Her er noget kode jeg har brugt til at lave en dvdliste, jeg håber at du selv kan rette det til.
<?php
$result = "<table>\n";
$moviequery = mysql_query("
    SELECT
        name, path, imdb
    FROM
        dvd
    ORDER BY
        name
    ASC");
$i_tmp = 1;
$i_antal = 2;
while($movieinfo = mysql_fetch_array($moviequery)) {
    if($i_tmp == 1)
        $result .= "\t<tr>\n";
    $result .= "\t\t<td class=\"dvd\">\n\t\t\t<a href=\"http://us.imdb.com/Title?".$movieinfo['imdb']."\"><img src=\"".str_replace("&","&amp;",$movieinfo['path'])."\" align=\"left\" width=\"104\" height=\"140\" alt=\"".$movieinfo['name']."\" border=\"0\"></a>\n\t\t</td>\n";
    if($i_tmp == $i_antal)
        $result .= "\t</tr>\n";
    $i_tmp = ($i_tmp == $i_antal ? 1 : $i_tmp+1);
}
$result .= "</table>\n";
print $result;
?>
Avatar billede tipsen Nybegynder
12. maj 2003 - 19:16 #48
otis: Du glemmer også at fylde tomme celler på, hvis antallet af billeder ikke går op... - og så er det heller ikke sikkert, at din kode husker at afslutte sidste række ordentligt... - standard-fejl som er ryddet af vejen i de øvrige udgaver her på siden.
Avatar billede floetti Nybegynder
04. juli 2003 - 16:57 #49
Fik selv lavet den, men tak for de gode forslag ;)
Avatar billede fangel Nybegynder
04. juli 2003 - 18:16 #50
floetti => det er ikke bare gode forslag, det er nok bedre forslag en du selv ville have fundet på (ikke for at sige noget ondt om dig)! alle forslag er testet og optimeret så meget at de er rigtigt gode og hurtige... de sørre for at stille koden pænt op, og får afsluttet alt hvad der skal afsluttes...

så jeg synes det var rigtigt dumt af dig at lukke spørgsmålet sådanne!

---

og for at følge exp.dk's regler, så skal dit løsning vises så andre kan drage nytte af den!

---

!nørd

Morten
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester