10. august 2005 - 21:41Der er
14 kommentarer og 1 løsning
Optimering af kode - vha. løkker
Jeg har følgende kode, som jeg gerne vil have optimeret. Det eneste den gør, er at tage A, B, C, D osv.. (indtil der ikke er flere i DB) Så tænkte at man måske kunne COUNT'e antallet i DB og så lave en FOR-løkke, som starter med A?
--code--
open(); $query = mysql_query("SELECT * FROM text WHERE cat='A' ORDER BY sub_cat") or die(mysql_error()); while($row = mysql_fetch_array($query)){ echo '+ <a href="index.php?page=av_red_tekst&id='. $row[id] '.">'. $row[menu] .'</a><br>'; }
$query = mysql_query("SELECT * FROM hostel_text WHERE cat='B' ORDER BY sub_cat") or die(mysql_error()); while($row = mysql_fetch_array($query)){ echo '+ <a href="index.php?page=av_red_tekst&id='. $row[id] '.">'. $row[menu] .'</a><br>'; }
$query = mysql_query("SELECT * FROM hostel_text WHERE cat='C' ORDER BY sub_cat") or die(mysql_error()); while($row = mysql_fetch_array($query)){ echo '+ <a href="index.php?page=av_red_tekst&id='. $row[id] '.">'. $row[menu] .'</a><br>'; }
open(); $query = mysql_query("SELECT * FROM text WHERE cat='A' ORDER BY sub_cat") or die(mysql_error()); while($row = mysql_fetch_array($query)){ echo '+ <a href="index.php?page=av_red_tekst&id='. $row[id] '.">'. $row[menu] .'</a><br>'; }
$query = mysql_query("SELECT * FROM text WHERE cat='B' ORDER BY sub_cat") or die(mysql_error()); while($row = mysql_fetch_array($query)){ echo '+ <a href="index.php?page=av_red_tekst&id='. $row[id] '.">'. $row[menu] .'</a><br>'; }
$query = mysql_query("SELECT * FROM text WHERE cat='C' ORDER BY sub_cat") or die(mysql_error()); while($row = mysql_fetch_array($query)){ echo '+ <a href="index.php?page=av_red_tekst&id='. $row[id] '.">'. $row[menu] .'</a><br>'; }
mysql_query("SELECT íd, menu FROM text WHERE cat IN ['A', 'B', 'C'] ORDER BY cat ASC, sub_cat") or die(mysql_error()); while ($row = mysql_fetch_assoc($query)) { $output .= '+ <a href="index.php?page=av_red_tekst&id=' . $row[id] . '>' . $row[menu] . '</a><br>'; }
$query = mysql_query("SELECT íd, menu FROM text WHERE cat IN ['A', 'B', 'C'] ORDER BY cat ASC, sub_cat") or die(mysql_error()); while ($row = mysql_fetch_assoc($query)) { $output .= '+ <a href="index.php?page=av_red_tekst&id=' . $row[id] . '>' . $row[menu] . '</a><br>'; }
Det koster jo noget performance, fordi at man så også skal trække "cat" ud af tabellen, samt at man så skal supplere med nogle if-tjek. Men det kunne da se sådan her ud:
$output = "";
open();
$query = mysql_query("SELECT id, menu, cat FROM text ORDER BY cat ASC, sub_cat") or die(mysql_error());
$oldCat = ""; while ($row = mysql_fetch_assoc($query)) { $newCat = $row["cat"]; if ($newCat != $oldCat) { if ($oldCat != "") $output .= "<br>"; $oldCat = $newCat; }
Brugte faktisk bare din kode.. så tak for hjælpen :)
Synes godt om
Ny brugerNybegynder
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.