Avatar billede overgreat Forsker
11. juli 2004 - 11:01 Der er 10 kommentarer og
1 løsning

tælle rækker? og få dem vist 1,2,3 osv.

Hej Alle

Jeg roder lidt rundt med om jeg kan få php til at vise følgende.....

Når jeg laver en forespørgsel med en where restriktion får jeg et antal rækker der passer til dette.....

Kan Jeg få vist antal rækker i en talrække fra 1 og til antallet af rækker..... altså 1,2,3,4.......

Kan Count eller skal jeg have fat i noget andet.

På forhånd tak
Avatar billede expnet Seniormester
11. juli 2004 - 11:18 #1
jeg forstår dig ikke helet noget med rækker og tal??? :D

//expnet
Avatar billede jakoba Nybegynder
11. juli 2004 - 11:33 #2
Det du får tilbage fra en mysql query er en tabel. det vil sige en eller flere rækker hvor hver række indeholder det samme antal felter. Det er vigtigt at huske at alle rækkerne indehoder de samme felter. Og det betyder så også at du ikke kan få BÅDE rækker og en overordnet værdi. det er enten eller.

SELECT COUNT(*) FROM dintabel WHERE ...
    giver dig een række med eet felt (antallet) af rækker den WHERE betingelse finder

SELECT * FROM dintabel WHERE ...
    giver dig alle de rækker den WHERE betingelse finder (men ikke antallet af rækker)

I php kan du så benytte funktionen  mysql_num_rows( $resultatsæt ) til at tælle rækkerne og give dig antallet. Det vil nok være den bedste her.
  http://dk.php.net/manual/en/function.mysql-num-rows.php

mvh JakobA
Avatar billede overgreat Forsker
11. juli 2004 - 12:51 #3
Hej

Det jeg har brug for... er ikke en samlet optælling af at der er 40 rækker i forespørgselen.

Hvis der f.eks. er 30 rækker har jeg brug for at kunne udtrække 1,2,3,4....29,30 (er der 10 skal det være 1,2,3,4....9,10) osv.

Kan man ikke det?
Avatar billede jakoba Nybegynder
11. juli 2004 - 13:02 #4
Ok, så er det LIMIT du skal bruge:

SELECT * FROM dintabel WHERE ... LIMIT fra_nr, antal

dvs at
  SELECT * FROM dintabel WHERE ... LIMIT 0, 10    giver de 10 første
  SELECT * FROM dintabel WHERE ... LIMIT 5, 10    giver dig 10 fra og med den 6'te

mvh JakobA
Avatar billede schaefner Juniormester
11. juli 2004 - 13:14 #5
<?php
/* Configuration */
$range = 7; // Antal resultater pr. side
$output = ''; // Sætter variablen
$pages_each_way = 5; // Antal sider hver vej
$db_tbl_name = 'guestbook'; // Tabellen hvorfra vi henter vores data

/* Calculation */
$offset = isset($_GET['offset']) ? $_GET['offset'] : 0;
$total = mysql_result(mysql_query("SELECT COUNT(*) FROM ".$db_tbl_name.""), 0);
$start_point = ($offset-($pages_each_way*$range) < 0) ? 0 : $offset-($pages_each_way*$range);
$end_point = ($offset+($pages_each_way*$range) > $total) ? $total : $offset+($pages_each_way*$range);
$page_number = ($start_point/$range)+1;

/* Fetching result */
$query = mysql_query("SELECT * FROM ".$db_tbl_name." ORDER BY id DESC LIMIT ".$offset.",".$range."") or die(mysql_error());
while ($row = mysql_fetch_array($query, MYSQL_ASSOC)) {
    $output .= $row['field'];
}

$output .= ($offset >= $range) ? '<a href="?offset='.($offset-$range).'">Forrige</a> ' : 'Forrige ';
for ($start=$start_point; $start<$end_point; $start=$start+$range) {
    $output .= ($offset == $start) ? '<b>'.$page_number++.'</b> ' : '<a href="?offset='.$start.'">'.$page_number++.'</a> ';
}
$output .= ($total > $offset+$range) ? '<a href="?offset='.($offset+$range).'">Næste</a>' : 'Næste';

// Udskriver variablen
echo $output;
?>

Et eksempel kan ses her: http://schaefner.dk/?context=guestbook
Avatar billede boomshanka Nybegynder
14. juli 2004 - 10:37 #6
Er det ikke forholdsvis straight forward :-)

$sql = "min sql sætning";
$result = executeSQL($sql);
if(mysql_num_rows($result) > 0
        echo ("1");
for($i = 2; $i <= mysql_num_rows($result), $i++) {
    echo(","$i);
}
Avatar billede boomshanka Nybegynder
14. juli 2004 - 10:38 #7
ubs - du får lige en rigtig kode:

$sql = "min sql sætning";
$result = executeSQL($sql);
if(mysql_num_rows($result) > 0)
        echo ("1");
for($i = 2; $i <= mysql_num_rows($result), $i++) {
    echo(","$i);
}
Avatar billede overgreat Forsker
18. juli 2004 - 19:16 #8
Hej

Jeg har desværre været væk nogle dage... har leget med boomshakas eksempel...

Den giver mig følgende fejlmeddelse:

Parse error: parse error, unexpected ')', expecting ';' in c:\www\henrik\gdo\henrikprojekt\igen.php on line 25

Er der nogen der kan se hvad der går galt?

----------------------

<?



include("cms/config.php");

$db = mysql_connect($server, $user, $pass);

mysql_select_db($database, $db);

$sql = "SELECT smaatbill, id, serienavn, overgruppenavn FROM produkt_moebel WHERE `serienavn` = '$serienavn' AND `overgruppenavn` = '$overgruppenavn'";

$result = executeSQL($sql);
if(mysql_num_rows($result) > 0)
        echo ("1");
for($i = 2; $i <= mysql_num_rows($result), $i++) {
    echo(","$i);
}

}
?>
Avatar billede overgreat Forsker
21. juli 2004 - 20:49 #9
Hej schaefner

Ad lidt omveje med blindgyder kom jeg tilbage til dit eksempel. Det virker perfect, så sender du et svar.....

Mange tak for hjælpen!
Avatar billede schaefner Juniormester
22. juli 2004 - 11:11 #10
ok
Avatar billede overgreat Forsker
22. juli 2004 - 12:00 #11
Håber schafner ser denne besked.....

Jeg har et spørgsmål til outputtet....
Jeg har en variabel der er $nummer. Kan denne på en måde sættes ind i outputtet i stedet for pagenumber. Nu har jeg at den går 1,2,3,4,5,6.... kan denne talrække laves om til $nummer så jeg får produktnumrene i stedet for. Linket skal være det samme!

Der er selvfølgelig 30 ekstra point for en hjælp!
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