Toon posts:

loop msql records

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

Verwijderd

Topicstarter
Ik heb denk ik een erg lastige vraag, ik zit met het volgende probleem, ik wil graag een pagina maken waarbij de records per vier in een rij worden gezet, in vier kolommen dus. Als hij dus een vijfde heeft wil ik die in een volgende rij hebben, dat is denk ik nog niet heel erg lastig maar daarna wil ik dat hij ze allemaal gaat sorteren op alfabetische volgorde van artiest en daarna wil ik dat hij alleen de laatste honderd weergeeft. Ik heb de volgende velden: een artiest, titel, afbeeldingssrc, dateadded en id veld.
Wie helpt me uit de brand want ik kom er niet uit.

  • whoami
  • Registratie: December 2000
  • Laatst online: 10:59
Je data ophalen dmv SQL (je laat SQL die records sorteren).
De output moet je niet proberen te verwezenlijken met SQL, dat moet je met je client-code doen.

https://fgheysels.github.io/


Verwijderd

Topicstarter
het sorteren is geen probleem en de records ophalen ookniet maar het is juist de output waar het om gaat. ik begrijp niet wat je met client code bedoelt. er zal denkik ook iets van een telling in voor moeten komen om te zorgen dat ze per vier in een rij staan...

[ Voor 27% gewijzigd door Verwijderd op 09-11-2004 16:08 ]


  • NMe
  • Registratie: Februari 2004
  • Laatst online: 15-04 22:07

NMe

Quia Ego Sic Dico.

Zoals whoami al zegt: dat is voer voor je scripting- of programmeertaal. Voor PHP zijn daarvoor voldoende tutorials te vinden op internet die je op weg helpen. In de FAQ staan geloof ik ook wat links.

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


  • whoami
  • Registratie: December 2000
  • Laatst online: 10:59
De output doe je dus niet in SQL, maar in PHP / Delphi / C# / whatever.

Daar ga je idd bijhouden hoeveel items je op 1 rij gezet hebt, en als je aan 4 komt (of als je teller deelbaar is door 4), dan neem je een andere rij.

pseudo-code:
code:
1
2
3
4
5
6
int teller = 0;
foreach( record in resultSet )
{
      Console.Write (record);
       if( teller % 4 == 0 ) Console.Write ("\n");
}

https://fgheysels.github.io/


  • pjotrk
  • Registratie: Mei 2004
  • Laatst online: 15-07-2025
Dit is volgens mij dezelfde vraag als in het volgende topic? :?
(php en mysql, herleid ik dan dus ook hieruit, wellicht onterecht)
SQL Eerst laatste records selecteren en die vervolgens alfab

Ophalen van het resultaat kan zo:
PHP:
1
2
3
4
5
6
7
8
$sql = "SELECT *
        FROM (
            SELECT * 
            FROM yormusic 
            ORDER BY id DESC 
            LIMIT 0, 100) as lastArtists 
        ORDER BY artiest";
$result = mysql_query($sql);
of (bij mysql < 4.1)
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
<? 
$sql = "CREATE TEMPORARY TABLE tmp
        SELECT * 
        FROM yormusic 
        ORDER BY id DESC 
        LIMIT 0, 100";
mysql_query($sql); 
$sql = "SELECT *
        FROM tmp
        ORDER BY artiest";
$result = mysql_query($sql);
$sql = "DROP TABLE tmp"; 
mysql_query($sql); 
?>

Het scriptgedeelte moet dan zoiets doen:
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
<? 
$columns = 5; 
$curCol = 0; 

echo '<table>'; 

while ( $row = mysql_fetch_assoc($result) ) 
{ 
    // bij de eerste kolom openen 
    if ( $curCol++ == 0) 
    { 
        echo '<tr>'; 
    } 

    echo '<td>' . $row['artiest'] . '</td>'; // aanpassen naar gewenste inhoud

    // bij de laatste kolom sluiten en opnieuw beginnen met tellen 
    if ( $curCol == $columns  ) 
    { 
        echo '</tr>'; 
        $curCol = 0; 
    } 
} 
// maak de laatste rij af 
if ( $curCol != 0 ) 
{ 
    echo str_repeat( '<td></td>', $columns - $curCol ); 
    echo '</tr>'; 
} 

echo '</table>'; 
?> 

  • jvdmeer
  • Registratie: April 2000
  • Laatst online: 05-05 21:36
Ik heb even zin in een compleet FOUT antwoord, maar ik vond het een leuke uitdaging. Onder MS-SQL 2000 geeft de volgende code volgens mij de resultaten die jij zoekt:

SQL:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
select top 25 * from
  (
  SELECT  
     (SELECT COUNT(*) FROM tbl975048 e2 WHERE e2.artiest <= e.artiest) AS rij,
     Artiest, 
     Titel
   FROM tbl975048 e
  ) kolom1,
  (
  SELECT  
     (SELECT COUNT(*) FROM tbl975048 e2 WHERE e2.artiest <= e.artiest) AS rij,
     Artiest, 
     Titel
   FROM tbl975048 e
  ) kolom2,
  (
  SELECT  
     (SELECT COUNT(*) FROM tbl975048 e2 WHERE e2.artiest <= e.artiest) AS rij,
     Artiest, 
     Titel
   FROM tbl975048 e
  ) kolom3,
  (
  SELECT  
     (SELECT COUNT(*) FROM tbl975048 e2 WHERE e2.artiest <= e.artiest) AS rij,
     Artiest, 
     Titel
   FROM tbl975048 e
  ) kolom4

where kolom1.rij=kolom2.rij-25 and
      kolom1.rij=kolom3.rij-50 and
      kolom1.rij=kolom4.rij-75
order by kolom1.rij


Hierbij heb ik de volgende testdata gebruikt:
voor het maken van de tabel:
SQL:
1
2
3
4
5
CREATE TABLE [Tbl975048] (
    [ID] [int] IDENTITY (1, 1) NOT NULL ,
    [Artiest] [varchar] (50),
    [Titel] [varchar] (50)
) ON [PRIMARY]


voor het vullen van de tabel:
SQL:
1
2
3
4
5
WHILE (SELECT count(*) FROM tbl975048) < 150
BEGIN
  INSERT INTO Tbl975048 ([Artiest], [Titel])
  VALUES( convert(varchar(50), NEWID()), convert(varchar(50), NEWID()))
END


met als eindresultaat de top 100 in 4 kolommen gesorteerd op artiest.

[DISCLAIMER]
Ik ben van mening dat dit de meest slechte oplossing is, en dat je de opmaak door je programma moet laten doen i.p.v. door het DBMS.
[/DISCLAIMER]

  • dusty
  • Registratie: Mei 2000
  • Laatst online: 21-02 00:06

dusty

Celebrate Life!

Ik heb denk ik een erg lastige vraag
Iedereen heeft een erg lastig probleem, je geeft niet aan welke database je wilt gebruiken, welke programmeertaal je kent en wilt gebruiken.

Je geeft niet aan wat je zelf al hebt geprobeerd, maar bij mij komt het over dat je een script wilt hebben dat iemand anders voor je moet maken, wat bij mij weer overkomt als een scriptrequest, wat weer duidelijk laat zien dat jij waarschijnlijk niet de FAQ hebt gelezen, anders had je geweten dat scriptrequest niet mogen. En dan had je ook geweten wat WEL in je topic start had moeten staan.

Welkom op Got :)

Back In Black!
"Je moet haar alleen aan de ketting leggen" - MueR

Pagina: 1

Dit topic is gesloten.