Avatar billede tif12345 Nybegynder
08. maj 2005 - 23:29 Der er 22 kommentarer og
2 løsninger

1 forespørgsel delt ud i 3 kolonner

Hvordan kører jeg 1 forespørgsel der trækker 99 resultater ud, og deler 33 resultater op i hver af disse 'kolonner'?

<div id="cont1">Resultat 0-33</div>
<div id="cont2">Resultat 33-66</div>
<div id="cont3">Resultat 66-99</div>

Forespørgsel;
$res = mysql_query(select * from tabel limit 0,99)
Avatar billede barklund Nybegynder
08. maj 2005 - 23:41 #1
Du laver en for-løkke til at hive 33 ud af gangen - vel?

$res = mysql_query(select * from tabel limit 0,99);
print "<div id='cont1'>';
for($i = 0; $i < 33 && $row = mysql_fetch_assoc($res); $i++) {
  print $res['flaf'];
}
print "</div><div id='cont2'>';
for($i = 0; $i < 33 && $row = mysql_fetch_assoc($res); $i++) {
  print $res['flaf'];
}
print "</div><div id='cont3'>';
for($i = 0; $i < 33 && $row = mysql_fetch_assoc($res); $i++) {
  print $res['flaf'];
}
print "</div>';

Eller noget i den stil :)

--
Morten Barklund
Avatar billede hmortensen Nybegynder
09. maj 2005 - 02:01 #2
Kan gøres sådan her:

<?php

//connect

$sql = mysql_query("SELECT * FROM tabel LIMIT 99") or die(mysql_error());

echo '<div id="cont1">';

for ($x = 0; $x < 33; $x++)
{
    $row = mysql_fetch_array($sql);
    echo $row['felt'];
}

echo '</div><div id="cont2">';

for ($x = 0; $x < 33; $x++)
{
    $row = mysql_fetch_array($sql);
    echo $row['felt'];
}

echo '</div><div id="cont3">';

for ($x = 0; $x < 33; $x++)
{
    $row = mysql_fetch_array($sql);
    echo $row['felt'];
}

echo '</div>';

?>
Avatar billede Slettet bruger
09. maj 2005 - 09:15 #3
<?php
$res = mysql_query("SELECT * FROM tabel LIMIT 0, 100");
for ($n = 1; $n <= 3; $n++) {
    echo "<div id=\"cont" . $n . "\">";
    for ($m = 0; $row = mysql_fetch_assoc($res) && $m < 33; $m++) {
        echo $row['field'];
    }
    echo "</div>";
}
?>
Avatar billede tif12345 Nybegynder
09. maj 2005 - 10:37 #4
Har nu prøvet de forskellige ting igennem.

Har fået barklunds bidrag til at virke efter hensigten og det virker helt upåklageligt, men jeg er nu meget interesseret i også at få gartzens til at fungere.
Problemet er bare at $row['field'] ikke bliver trukket ud? Når jeg kører scriptet fremkommer der ingen resultater.

"<div id=\"cont" . $n . "\">"; - bliver sat op lige præcist som det skal,- alt ser ud som det skal, der mangler bare resultater fra databasen :)
Avatar billede Slettet bruger
09. maj 2005 - 10:40 #5
Du skal jo lige rette $row['field'] til navnet på det felt du vil have udskrevet...?
Avatar billede tif12345 Nybegynder
09. maj 2005 - 10:41 #6
det har jeg selvfølgelig gjort :)

mit echo ser således ud;
echo "<a href=\"$root/view.php?link=$link\" class=\"contlink\">$row[name]</a><br>\n";
Avatar billede barklund Nybegynder
09. maj 2005 - 10:41 #7
Du har vel rettet field til det rette navn? Dog kan jeg ikke se, hvad der skulle være galt med den - det er jo helt ligetil...
Avatar billede barklund Nybegynder
09. maj 2005 - 10:42 #8
Kommer der ingenting i den indre løkke eller kommer der 33 tomme links?
Avatar billede Slettet bruger
09. maj 2005 - 10:43 #9
Men barklunds burde IKKE virke???
Der skrives $res['flaf'] ud, og $ras er type = resource... Det skal rettes til $row['flaf']
Avatar billede Slettet bruger
09. maj 2005 - 10:44 #10
Og du har også rettet ´tabel´ til det rigtige tabel-navn?
Avatar billede barklund Nybegynder
09. maj 2005 - 10:47 #11
Nåja, jeg tror vi snakker koncept mere end vi snakker faktisk kode her. Han har bygget det op som min pseudo-kode, og det virker, men kan ikke få det strukturet, som du foreslår. Hvis spørgeren er lidt klog (som mange desværre ikke er), kan han godt abstrahere fra det faktisk skrevne og fange de generelle tendenser :)
Avatar billede tif12345 Nybegynder
09. maj 2005 - 10:47 #12
Barklunds rettede jeg til følgende og fik det til at virke;
print "<a href=\"$root/view.php?link=$link\" class=\"contlink\">$row[name]</a><br>\n";
---
I kan lige få det hele med, så kan i se hvordan det ser ud.. Jeg kan bare ik se nogen fejl..

<?
        $res = mysql_query("SELECT artist_name FROM personinfo GROUP BY name ORDER BY hits DESC limit 0,98") or die(mysql_error());

for ($n = 1; $n <= 3; $n++) {
    echo "<div id=\"cont" . $n . "\">\n";
    for ($m = 0; $row = mysql_fetch_assoc($res) && $m < 33; $m++) {

$link = str_replace(" ", "_", $row["name"]);
$link = str_replace("/", "~", $link);
$link = str_replace("&", "|and|", $link;
$link = str_replace(".", "|dot|", $link);

          echo "<a href=\"$root/view.php?link=$link\" class=\"contlink\">$row[name]</a><br>\n";
    }
    echo "</div>\n";
}
    ?>

Dette er hvad kommer ud;
<div id="cont1">
<a href="http://www.lyricsaremusic.com/view.php?link=" class="contlink"></a><br>
Avatar billede Slettet bruger
09. maj 2005 - 10:54 #13
barklund -> Det kan man jo aldrig vide ;-)

tif12345 ->
Jeg kan ikke se andre fejl and at du mangler en parentes i $link = str_replace("&", "|and|", $link;

Hvad sker der hvis du gør sådan her:

<?php
$res = mysql_query("SELECT artist_name FROM personinfo GROUP BY name ORDER BY hits DESC limit 0,98");
for ($n = 1; $n <= 3; $n++) {
    echo "<div id=\"cont" . $n . "\">";
    for ($m = 0; $row = mysql_fetch_assoc($res) && $m < 33; $m++) {
        print_r($row);
    }
    echo "</div>";
}
?>
Avatar billede barklund Nybegynder
09. maj 2005 - 10:55 #14
det virker lidt spøjst... hvis du kan hente $row ud som assoc det ene sted, burde det da være identisk det andet sted? Prøv at var_dump'e $row i starten af den indre løkke:

<?
$res = mysql_query("SELECT artist_name FROM personinfo GROUP BY name ORDER BY hits DESC limit 0,98") or die(mysql_error());
for ($n = 1; $n <= 3; $n++) {
    echo "<div id=\"cont" . $n . "\">\n";
    for ($m = 0; $row = mysql_fetch_assoc($res) && $m < 33; $m++) {
        var_dump($row);
        $link = str_replace(" ", "_", $row["name"]);
        $link = str_replace("/", "~", $link);
        $link = str_replace("&", "|and|", $link;
        $link = str_replace(".", "|dot|", $link);
        echo "<a href=\"$root/view.php?link=$link\" class=\"contlink\">$row[name]</a><br>\n";
    }
    echo "</div>\n";
}
?>

Og se om det giver noget - og helst ikke NULL :)

--
Morten Barklund
Avatar billede Slettet bruger
09. maj 2005 - 10:55 #15
Got it:
$row[name] skal skiftes ud med $row[artist_name]

;)
Avatar billede Slettet bruger
09. maj 2005 - 10:58 #16
Du skal forresten lige vide at man kan parse et array til str_replace..
Så det kommer til at se sådan ud:

<?php
$res = mysql_query("SELECT artist_name FROM personinfo GROUP BY name ORDER BY hits DESC limit 0,98") or die(mysql_error());
for ($n = 1; $n <= 3; $n++) {
  echo "<div id=\"cont" . $n . "\">\n";
  for ($m = 0; $row = mysql_fetch_assoc($res) && $m < 33; $m++) {
        $link = str_replace(array(" ", "/", "&", "."), array("_", "~", "|and|", "|dot|"), $row['name']);
    echo "<a href=\"$root/view.php?link=$link\" class=\"contlink\">$row[name]</a><br>\n";
  }
  echo "</div>\n";
}
?>
Avatar billede Slettet bruger
09. maj 2005 - 10:59 #17
I mit sidste indlæg skal $row[name] lige skiftes ud med $row[artist_name] igen.. Sorry.. (C'n'P)
Avatar billede tif12345 Nybegynder
09. maj 2005 - 11:03 #18
----
$row[name] skal skiftes ud med $row[artist_name]
---

det var desværre ikke lige det. det var en fejl fra min da jeg kopierede ind.

Barklund > var_dump giver en masse : bool(true)

Gartzen >  print_r($row); giver; 111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111 ..
Tak for tippet til sidst :)

Men hmmm .. det er mærkeligt .. ser ik lige umiddelbart ud til at det kommer til at virke sådan her, Barklunds var også udemærket, var bare mindre kode i Gartzens..
Avatar billede Slettet bruger
09. maj 2005 - 11:10 #19
Det virker lidt underligt...!
Prøv lige sådan her:

<?php
$res = mysql_query("SELECT artist_name FROM personinfo GROUP BY name ORDER BY hits DESC limit 0,98") or die(mysql_error());
for ($n = 1; $n <= 3; $n++) {
  echo "<div id=\"cont" . $n . "\">\n";
  for ($m = 0; (($row = mysql_fetch_assoc($res)) && ($m < 33)); $m++) {
    $link = str_replace(array(" ", "/", "&", "."), array("_", "~", "|and|", "|dot|"), $row['artist_name']);
    echo "<a href=\"$root/view.php?link=$link\" class=\"contlink\">$row[artist_name]</a><br>\n";
  }
  echo "</div>\n";
}
?>
Avatar billede barklund Nybegynder
09. maj 2005 - 11:12 #20
Ah ja, operator præcedens... && binder stærkere end =... I mit script havde jeg byttet om på rækkefølgen af betingelserne, og så virkede det...

Parenteser er vist svaret :)
Avatar billede tif12345 Nybegynder
09. maj 2005 - 11:21 #21
Gartzen > der ramte du sgu rigtigt! ;)

Helt suverænt, det virker som det skal nu..

Mange tak for en god indsats. Smid begge et svar, så får i lidt points :)
Avatar billede Slettet bruger
09. maj 2005 - 11:23 #22
Det var så lidt :) Det er utroligt som det altid er dumme småfejl man bøvler mest rundt med..
Avatar billede barklund Nybegynder
09. maj 2005 - 11:23 #23
Mjæs :)
Avatar billede barklund Nybegynder
09. maj 2005 - 11:29 #24
Tark for points ;)
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