/ Forside / Teknologi / Udvikling / PHP / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
PHP
#NavnPoint
rfh 3959
natmaden 3372
poul_from 3310
funbreak 2700
stone47 2230
Jin2k 1960
Angband 1743
Bjerner 1249
refi 1185
10  Interkril.. 1146
Max forekomster fra mysql
Fra : Mads Madsen


Dato : 30-07-07 08:35

Hej Gruppe
Jeg skal have lavet et udtræk fra en mysqldatabase
Databasen indeholder fangstrapporter om nogle fisk og hvem der har
fanget dem. Jeg skal have lavet sådan en fisker højst må forekomme 3
gange i outputtet
Jeg har følgende:

<?
echo "<center><table border=1 width=481 cellspacing=1
bordercolorlight=#000000 bordercolordark=#000000 style=border-
collapse:collapse>";
echo "<tr><td width=493 colspan=6 align=center><p
align=left><b>Havørred</b></p></td></tr><tr><td width=64
align=center> <p align=left>Placering</p></td><td width=51
align=center><p align=left>Længde</p></td><td width=46 align=center><p
align=left>Vægt</p></td><td width=159 align=center><p
align=left>Jæger</p></td><td width=83 align=center><p align=left>Dato</
p></td><td width=64 align=center><p align=left>Point</p></td></tr>";

$query = "SELECT * FROM konkurrence ORDER BY vaegt DESC, laengde DESC
LIMIT 10";

$result = mysql_query($query);
while($row = mysql_fetch_assoc($result))
{
if ("{$row['art']}" =="Havørred"){

echo "<tr><td width=64 align=center>";
echo $placering++;
echo "</td>";
echo "<td width=51 align=center>{$row['laengde']}</td>";
echo "<td width=46 align=center>{$row['vaegt']}</td>";
echo "<td width=159 align=left>{$row['navn']}</td>";
echo "<td width=83 align=center>{$row['dato']}</td>";
echo "<td width=64 align=center>";
echo $point--;
echo "</td>";
echo "</tr>";
}
}
echo "</table></center>";
?>


 
 
Ukendt (30-07-2007)
Kommentar
Fra : Ukendt


Dato : 30-07-07 08:57

Mads Madsen wrote:
> Hej Gruppe
> Jeg skal have lavet et udtræk fra en mysqldatabase
> Databasen indeholder fangstrapporter om nogle fisk og hvem der har
> fanget dem. Jeg skal have lavet sådan en fisker højst må forekomme 3
> gange i outputtet
> Jeg har følgende:

Vi skal have at vide hvordan tabel-strukturen er indrettet. Den HTML du paster har intet med databasen at gøre.


Mads Madsen (30-07-2007)
Kommentar
Fra : Mads Madsen


Dato : 30-07-07 08:59

> Vi skal have at vide hvordan tabel-strukturen er indrettet. Den HTML du paster har intet med databasen at gøre.

Tabellen indeholder:
Længde
Vægt
Jæger
Dato

Mads


Ukendt (30-07-2007)
Kommentar
Fra : Ukendt


Dato : 30-07-07 09:14

Mads Madsen wrote:
>> Vi skal have at vide hvordan tabel-strukturen er indrettet. Den HTML
>> du paster har intet med databasen at gøre.
>
> Tabellen indeholder:
> Længde
> Vægt
> Jæger

Jæger=Fisker?


Mads Madsen (30-07-2007)
Kommentar
Fra : Mads Madsen


Dato : 30-07-07 09:14


> Jæger=Fisker?

hehe jeps

Mads


Ukendt (30-07-2007)
Kommentar
Fra : Ukendt


Dato : 30-07-07 09:21

Mads Madsen wrote:
>> Jæger=Fisker?
>
> hehe jeps
>
> Mads

OK. En tabel med

> Længde
> Vægt
> Jæger

Den havde vel også

>$row['art']"
>{$row['dato']
>{$row['navn']} ??

Er der ikke et ID?

altså

id
laengde
fisker
navn
vaegt
art
dato

????

Mads Madsen (30-07-2007)
Kommentar
Fra : Mads Madsen


Dato : 30-07-07 09:27

Nu skal jeg nok lige vågne op.

art laengde vaegt navn dato

navn er lig med fisker som var lig med jæger

er det en god ide med id?

Mads


Ukendt (30-07-2007)
Kommentar
Fra : Ukendt


Dato : 30-07-07 09:33

Mads Madsen wrote:
> Nu skal jeg nok lige vågne op.
>
> art laengde vaegt navn dato
>
> navn er lig med fisker som var lig med jæger

Kan du ikke lave et dump af tabellen? En desc min_fiske_tabel ?? Eller hvordan det ser ud i PhpMyAdmin (eller hvad du bruger)

> er det en god ide med id?

Det er altafgørende hvis du ønsker at kunne finde posterne frem igen, med mindre "dato" er et tidsstempel.


Mads Madsen (30-07-2007)
Kommentar
Fra : Mads Madsen


Dato : 30-07-07 09:35

> Kan du ikke lave et dump af tabellen? En desc min_fiske_tabel ?? Eller hvordan det ser ud i PhpMyAdmin (eller hvad du bruger)

CREATE TABLE `konkurrence` (
`art` varchar(20) collate latin1_danish_ci NOT NULL default '',
`laengde` varchar(10) collate latin1_danish_ci NOT NULL default '',
`vaegt` varchar(10) collate latin1_danish_ci NOT NULL default '',
`navn` varchar(30) collate latin1_danish_ci NOT NULL default '',
`dato` varchar(10) collate latin1_danish_ci NOT NULL default ''
) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_danish_ci;

Er det det?

Mads


Ukendt (30-07-2007)
Kommentar
Fra : Ukendt


Dato : 30-07-07 12:06

Mads Madsen wrote:
>> Kan du ikke lave et dump af tabellen? En desc min_fiske_tabel ??
>> Eller hvordan det ser ud i PhpMyAdmin (eller hvad du bruger)
>
> CREATE TABLE `konkurrence` (
> `art` varchar(20) collate latin1_danish_ci NOT NULL default '',
> `laengde` varchar(10) collate latin1_danish_ci NOT NULL default '',
> `vaegt` varchar(10) collate latin1_danish_ci NOT NULL default '',
> `navn` varchar(30) collate latin1_danish_ci NOT NULL default '',
> `dato` varchar(10) collate latin1_danish_ci NOT NULL default ''
> ) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_danish_ci;
>
> Er det det?

Yes.

"Databasen indeholder fangstrapporter om nogle fisk og hvem der har
fanget dem. Jeg skal have lavet sådan en fisker højst må forekomme 3
gange i outputtet"

Altså: Du vil have en liste af fisk, sorteret på fisk (kan jeg forstå udfra $row[art]='havørred') hvor en fisker kun må optræde max 3 gange, indenfor hver fiskeart?

Jeg har prøvet efter alle kunstens regler, men jeg kan ikke få det til at lade sig gøre. Andre kan måske. Der er jo ingen måde at sondre/parre resultaterne på, når det hele ligger i én ikke-indekseret, ikke indekser-bar tabel.

Du må enten gøre det enkeltvis i PHP, som dit eksempel lægger op til, dvs traversere gennem samtlige poster og så holde styr på om en fisker optræder med 3 forekomster indenfor samme fisketype - ELLER, langt at foretrække - normalisere tabellerne. Du får aldrig noget fornuftigt ud af den skitserede struktur. Der vil komme et gigantisk tidsmæssigt og redundant overhead, blot med få poster.

Forslag til bedre tabelstruktur

FISKEART
----------------------------
fiskeart_id
fiskeart_navn

FISKER
----------------------------.
fisker_id
fisker_navn

KONKURRENCE
----------------------------
konkurrence_id
fisker_id
fiskeart_id
konkurrence_vaegt
konkurrence_laengde
konkurrence_dato

på den måde bliver det ingen sag at jonglere rundt med posterne, og f.eks kun vise konkurrence-forekomster af en bestemt fisketype fordelt på fiskere med max 3 konkurrenceforekomster for hver fisker.


Jesper Staun Hansen (30-07-2007)
Kommentar
Fra : Jesper Staun Hansen


Dato : 30-07-07 11:40

Mads Madsen wrote:
> Hej Gruppe
> Jeg skal have lavet et udtræk fra en mysqldatabase
> Databasen indeholder fangstrapporter om nogle fisk og hvem der har
> fanget dem. Jeg skal have lavet sådan en fisker højst må forekomme 3
> gange i outputtet
> Jeg har følgende:
>
> <?
> echo "<center><table border=1 width=481 cellspacing=1
> bordercolorlight=#000000 bordercolordark=#000000 style=border-
> collapse:collapse>";
> echo "<tr><td width=493 colspan=6 align=center><p
> align=left><b>Havørred</b></p></td></tr><tr><td width=64
> align=center> <p align=left>Placering</p></td><td width=51
> align=center><p align=left>Længde</p></td><td width=46 align=center><p
> align=left>Vægt</p></td><td width=159 align=center><p
> align=left>Jæger</p></td><td width=83 align=center><p align=left>Dato</
> p></td><td width=64 align=center><p align=left>Point</p></td></tr>";
>
> $query = "SELECT * FROM konkurrence ORDER BY vaegt DESC, laengde DESC
> LIMIT 10";
>
> $result = mysql_query($query);
> while($row = mysql_fetch_assoc($result))
> {
> if ("{$row['art']}" =="Havørred"){
>
> echo "<tr><td width=64 align=center>";
> echo $placering++;
> echo "</td>";
> echo "<td width=51 align=center>{$row['laengde']}</td>";
> echo "<td width=46 align=center>{$row['vaegt']}</td>";
> echo "<td width=159 align=left>{$row['navn']}</td>";
> echo "<td width=83 align=center>{$row['dato']}</td>";
> echo "<td width=64 align=center>";
> echo $point--;
> echo "</td>";
> echo "</tr>";
> }
> }
> echo "</table></center>";
> ?>
>

Mon SELECT TOP kan nogle tricks?

Ukendt (30-07-2007)
Kommentar
Fra : Ukendt


Dato : 30-07-07 12:07

Jesper Staun Hansen wrote:

> Mon SELECT TOP kan nogle tricks?

Select Top kan ingen tricks i mysql - hvor det hedder limit.


Søg
Reklame
Statistik
Spørgsmål : 177500
Tips : 31968
Nyheder : 719565
Indlæg : 6408509
Brugere : 218887

Månedens bedste
Årets bedste
Sidste års bedste