Avatar billede macho Praktikant
04. juli 2004 - 16:20 Der er 14 kommentarer og
1 løsning

Hjælp til søgning på resultatliste ønskes

Jeg er ved at bygge en resultatliste over et motionsløb. Den resultatliste har har jeg lavet i php og det ser sådan her ud:

<?php
$db = mysql_connect("adresse.dk", "navn", "password");
mysql_select_db("navn",$db);
$result = mysql_query("SELECT * FROM tabel WHERE gruppe='3-K' AND sluttid<>'00:00:00' ORDER BY sluttid ASC, foedeaar DESC",$db);
echo "<table cellpadding=4 cellspacing=0 border=0><tr><td><b><u>Ranking</u></b></td><td><b><u>Start no.</u></b></td><td><b><u>Last Name</u></b></td><td><b><u>First Name</u></b></td><td><b><u>Year of Birth</u></b></td><td><b><u>Club</u></b></td><td><b><u>Country</u></b></td><td align=center><b><u>Time</u></b></center></td></tr>";
$alternate = "2";
for ($i=1; $myrow = mysql_fetch_row($result); $i++) {
$field1 = $myrow["9"];
$field2 = $myrow["3"];
$field3 = $myrow["2"];
$field4 = $myrow["8"];
$field5 = $myrow["11"];
$field6 = $myrow["7"];
$field7 = $myrow["1"];
$field8 = $myrow["0"];

if ($alternate == "1") {
$color = "#ffffff";
$alternate = "2";
}
else {
$color = "#eaeaea";
$alternate = "1";
}
echo "<tr bgcolor=$color><td align=center><b>$i</b></center></td><td align=center>$field8</center></td><td>$field2</td><td>$field3</td><td>$field4</td><td>$field5</td><td>$field6</td><td><center><b>$field7</b></center></td></tr>";
}
echo "</table>";
?>

Det jeg nu gerne vil have lavet, er et søgefelt, hvor man kan indtaste sit startnummer, hvorefter der vil blive vist en tabel, hvori der står det samlede samlede resultat i distancen, samt resultat i én egen klasse.

Nogen, der kan hjælpe her?
Avatar billede jaw Nybegynder
04. juli 2004 - 16:49 #1
lav dit søgefelt:

<form action='soeg.php' method='post'>
Startnr: <input type='text' name='startnummer'><br>
<input type='submit' name='submit' value='Søg'>

-- soeg.php --

$q = mysql_query("SELECT * FROM tabel WHERE startnr = '".$_POST['startnummer']."'");
while($row = mysql_fetch_array($q)) {

echo "Dit ene resultat: " . $row['felt1'];
echo"<br>Dit andet resultat: " . $row['felt2'];

Eller noget i den stil :)
Avatar billede macho Praktikant
04. juli 2004 - 17:06 #2
jaw (hej igen) ->

Nu er det sådan, at jeg i DB'en ikke har placeringen i forvejen. Jeg har KUN felterne "sluttid", "distance" og "gruppe" at gå efter, så det må være noget med udregning af placering i forhold til "time" kontra "distance" og "gruppe".

Altså nok en mere kompliceret sag?
Avatar billede jaw Nybegynder
04. juli 2004 - 17:08 #3
Hey, hey :)

Nah, det er nok ikke så slemt. Men hvad er regnestykket? Du må så lige prøve at forkare beregningen af de info du vil have, så må vi jo se om det kan lade sig gøre.
Avatar billede macho Praktikant
04. juli 2004 - 17:26 #4
Dejligt, hvis du har mod på det her osse!

Jo, en nærmere forklaring er nok nødvendig:
Efter indtastning af startnummer i søgefeltet, skal udregningen ske således:

Der skal vises data for navn, nummer, placeringen på distancen, samt placering i gruppen (distancen er opdelt i flere grupper).
I DB'en har jeg feltet "time" med sluttider for samtlige løbere, så en løber skal kunne vises f.eks. på denne måde:

--------------------------------------------------------------------------
| Fornavn | Efternavn | Sluttid  | Placering totalt | Placering gruppe  |
--------------------------------------------------------------------------
| Hans    | Hansen    | 03:20:12  |      13          |        9        |
--------------------------------------------------------------------------

Håber det er nok oplysninger, ellers skal jeg forsøge mig endnu mere hardcore!!
Avatar billede jaw Nybegynder
04. juli 2004 - 18:13 #5
Hmmm, tjah, tjoh... Jeg forstår godt hvad det er du vil have vist, men nok ikke lige hvordan det skal komme frem.

Hvordan er grupperne opdelt? Hvis man skal finde stillingen i en gruppe, skal vi jo vide hvem der ellers hører til den gruppe, og hvem der ikke gør...
Avatar billede macho Praktikant
04. juli 2004 - 18:30 #6
Hieraki på distance:

1. distance: Marathon
  a. gruppe MA-M1 (mænd)
  b. gruppe MA-M2 (mænd)
  c. gruppe MA-M3 (mænd)
  d. gruppe MA-K1 (kvinder)
  e. gruppe MA-K2 (kvinder)

2. distance: Halv marathon
  a. gruppe HA-M1 (mænd)
  b. gruppe HA-M2 (mænd)
  c. gruppe HA-M3 (mænd)
  d. gruppe HA-K1 (kvinder)
  e. gruppe HA-K2 (kvinder)

Grupperne (f.eks. MA-M1) ligger i DB'en under feltet "gruppe". Hver post er altså tildelt en eller anden gruppe.

osv. med flere distancer og grupper!
Der skal udregnes placering i den enkelte gruppe (f.eks. MA-M1) og total-placering for "Marathon - Mænd".
Jeg har også et felt med "køn" i DB'en, så ved visning af total-placering for "Marathon - Mænd", skal udregnes på "sluttid" kontra distance/køn.
Ved visning af placering i gruppe, skal der så udregnes på "sluttid" kontra gruppe.
Avatar billede jaw Nybegynder
04. juli 2004 - 19:03 #7
Jeg skal lige smide den op så der ikke bliver for mange fejl, så vender tilbage senere :)
Avatar billede jaw Nybegynder
04. juli 2004 - 19:34 #8
Det var faktisk lidt mere avanceret end jeg lige havde regnet med :/ Og det kan nok også gøres smukkere/hurtigere/nemmere end det jeg har fået lavet, men jeg tror nu nok mit vil virke:

$startnummer = $_POST['startnummer'];

//deltagerens gruppe
$gruppe = mysql_query("SELECT navn, gruppe FROM tabel WHERE startnr = '$startnummer'");
$gruppe = mysql_fetch_array($gruppe);

//totale placering
$q = mysql_query("SELECT * FROM tabel ORDER BY sluttid ASC");
$i = 1;
while($row = mysql_fetch_array($q)) {
  if($row['startnr'] == $startnummer){
      $total_placering = $i;
  }
  $i++;
}

//placering i gruppen
$q = mysql_query("SELECT * FROM tabel WHERE gruppe = '$gruppe[gruppe]' ORDER BY sluttid ASC");
$i = 1;
while($row = mysql_fetch_array($q)) {
  if($row['startnr'] == $startnummer){
      $gruppe_placering = $i;
  }
  $i++;
}

echo $gruppe['navn'] . " " . $gruppe['startnr'] . " " . $total_placering . " " . $gruppe_placering;


...men vi er sådan set over i PHP nu, hvis vi skal følge kategorierne firkantet... Håber det kan bruges :)
Avatar billede macho Praktikant
04. juli 2004 - 20:33 #9
Jo jo - det kommer skam MEGET tæt på nu!

Der er kun problemer med "total placering". Hvis jeg følger det du skriver, så bliver det ganske vist en total placering, men en totalplacering for SAMTLIGE distancer og køn. Denne "Total placering" skal gælde placering i distancen og for eget køn.

Tror du, at du kan fikse det?

Det med gruppe placeringen virker helt fint!
Avatar billede jaw Nybegynder
04. juli 2004 - 20:41 #10
Nåå ja, det havde jeg faktisk glemt... Bliver køn gemt som M, F eller hvad?
Avatar billede jaw Nybegynder
04. juli 2004 - 20:43 #11
...og hvad hedder feltet?
Avatar billede jaw Nybegynder
04. juli 2004 - 20:57 #12
Prøv den her:
$startnummer = $_POST['startnummer'];

//deltagerens gruppe
$gruppe = mysql_query("SELECT koen, navn, gruppe FROM tabel WHERE startnr = '$startnummer'");
$gruppe = mysql_fetch_array($gruppe);

//totale placering
$q = mysql_query("SELECT * FROM tabel WHERE koen = '$gruppe[koen]' ORDER BY sluttid ASC");
$i = 1;
while($row = mysql_fetch_array($q)) {
  if($row['startnr'] == $startnummer){
      $total_placering = $i;
  }
  $i++;
}

//placering i gruppen
$q = mysql_query("SELECT * FROM tabel WHERE gruppe = '$gruppe[gruppe]' ORDER BY sluttid ASC");
$i = 1;
while($row = mysql_fetch_array($q)) {
  if($row['startnr'] == $startnummer){
      $gruppe_placering = $i;
  }
  $i++;
}

echo $gruppe['navn'] . " " . $gruppe['startnr'] . " " . $total_placering . " " . $gruppe_placering;

De steder jeg har skrevet "koen" udskifter du jo bare med det felt der indeholder kønnet og så burde den være der :)
Avatar billede macho Praktikant
04. juli 2004 - 21:48 #13
Felter hedder, som du gætter, "koen". Køn bliver gemt som "Male" og "Female".

Hvis jeg bruger dit sidst forslag, er det desværre stadig ikke total-placering for distancen (f.eks. marathon/kvinder), men derimod total-placering for alle distancer: (f.eks.: alle distancer/kvinder).

Jeg har forsøgt flere ting selv, men jeg kan dælme ikke selv få det til at gøre som jeg ønsker!
Avatar billede macho Praktikant
04. juli 2004 - 21:58 #14
Det lykkedes alligevel med nogle ændringer:


$startnummer = $_POST['startnummer'];

//deltagerens gruppe
$gruppe = mysql_query("SELECT name, koen, gruppe, distance FROM tabel WHERE startnr = '$startnummer'");
$gruppe = mysql_fetch_array($gruppe);

//totale placering
$q = mysql_query("SELECT * FROM tabel WHERE koen = '$gruppe[koen]' AND distance = '$gruppe[distance]' ORDER BY sluttid ASC");
$i = 1;
while($row = mysql_fetch_array($q)) {
  if($row['startnr'] == $startnummer){
      $total_placering = $i;
  }
  $i++;
}


//placering i gruppen
$q = mysql_query("SELECT * FROM tabel WHERE gruppe = '$gruppe[gruppe]' ORDER BY sluttid ASC");
$i = 1;
while($row = mysql_fetch_array($q)) {
  if($row['startnr'] == $startnummer){
      $gruppe_placering = $i;
  }
  $i++;
}



//echo $gruppe['name'] . " " . $gruppe['startnr'] . " " . $total_placering . " " . $gruppe_placering;

Skide godt - tusind tak for hjælpen. Endnu en gang.

Smid et svar, jaw!
Avatar billede jaw Nybegynder
05. juli 2004 - 01:44 #15
Det var da så lidt :) Og jeg takker også...
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
Computerworld tilbyder specialiserede kurser i database-management

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