Avatar billede Jim-bh Nybegynder
21. april 2009 - 23:55 Der er 15 kommentarer og
1 løsning

Go-kart Heatskema - PHP

Program-sprog: PHP
database: helst ikke
Hej,
Jeg af en ven spurgt om jeg kunne kode et lille heatskema til Go-kart løb. jeg er gået igang, men er desværre gået i stå.

Skemaet kan ses nedenfor. jeg har pt. lavet det sådan at
det tal der indtastes på index siden ($antal) kommer med rundt på alle 3 sider. (via et "hidden" felt i formlerne. I pages/index generes $antal form input felter til indtastning af navn, jeg har lagt en for løkke omkring således at alle felterne får name "driver" plus et tal stigene. jeg bruger pt. Method GET, mit problem kommer på siden pages/vis hvor jeg så skal hente navnene ind, de kommer godt nok rundt. men jeg kan ikke få dem spyttet ud igen. jeg har forsøgt med:

for ($i = 1; $i <= $antal; $i++){
        $driver = $_GET['driver'];
        echo $driver;
    }

Jeg echo 'er den pt bare ud i toppen af siden, indtil den virker.

En der kan hjælpe, muligvis med en bedre fremgangsmåde..

Mit andet problem.
Skemaet som kan ses på billederne nedenfor skal generes således at den spytter dem i den række følge der er vist på billederne
her er jeg helt på bar bund.

Jeg håber nogen kan hjælpe.

Struktur:
+root
-index.php
+pages
  -index.php
  -vis.php

Side det pt ligger på:
http://busterslegestue.dk/blandet/gokart/
billede af skemaet for 4 kører:
http://busterslegestue.dk/blandet/gokart/images/4.gif
Billede af skemaet for 20 kører:
http://busterslegestue.dk/blandet/gokart/images/20.gif
Avatar billede Jim-bh Nybegynder
22. april 2009 - 00:29 #1
Hov, der var lige en fejl.
den korrekte kode er:

for ($i = 1; $i <= $antal; $i++){
        $driver = $_GET['driver$i'];
        echo $driver;
    }
Avatar billede CCodam Nybegynder
22. april 2009 - 00:35 #2
Nu er jeg godt nok ved at være træt, men kan det passe det skal se sådan ud:

for ($i = 1; $i <= $antal; $i++){
        $driver = $_GET['driver'.$i.];
        echo $driver;
    }

' klammerne betyder jo at følgende skal ses som tekst, og $i er en variable...
Avatar billede Jim-bh Nybegynder
22. april 2009 - 00:39 #3
hej igen..

ja, jeg så selv lige fejlen, problemet er blot at den ikke printer noget. jeg tror det er fordi GET prøver at hente "driver$i" og ikke "driver" + resultatet af $i
Avatar billede CCodam Nybegynder
22. april 2009 - 00:44 #4
#3 Ville også give mere mening i følge mit hovede, hvis din Pages/index lavede en Post til Pages/vis når man havde indtastet navnene og trykkede submit :)
Avatar billede Jim-bh Nybegynder
22. april 2009 - 00:51 #5
Hej igen,

Jeg har netop indsat _POST i stedet (på begge sider) også gjort som du skrev; $driver = $_POST['driver'.$i]; og ja det virker!
jeg mindes bare at have prøvet det, dog ikke med med POST, men det kan også være fordi jeg havde skrevet:
$driver = $_POST['driver.$i'];

har du nogen idé om det den anden del?
Avatar billede CCodam Nybegynder
22. april 2009 - 00:57 #6
#5 Super, så skal vi jo bare igang med at lave det ønskede output, vil du selv forsøge dig frem, eller skal du have hjælp hertil?
Avatar billede Jim-bh Nybegynder
22. april 2009 - 01:02 #7
jeg har forsøgt mig så meget som til at jeg kan genere X/Y men ikke indholdet, jeg er helt på bar bund, med hvordan jeg får den til at starte med det sidste tal
Avatar billede CCodam Nybegynder
22. april 2009 - 01:16 #8
#7 Dvs du kan godt lave hele Point tabellen? men ikke den nederste Heat tabel?

Jeg må indrømme jeg heller ikke helt kan se logikken i den?
Ved 4 kørere starter de 1, 4, 2, 3
Ved 20 kørere starter de 1, 20, 18, 15

Hvad hvis det var 10 eller 15 kørere? hvilke formel/metode bruger i til at finde frem til denne orden?
Avatar billede Jim-bh Nybegynder
22. april 2009 - 01:20 #9
Der er faktisk logik i det, på den måde at hver kører vil komme til at køre mod hinanden, og på forskellige starter. Dette var hvad fik, men jeg vil lige prøve at kontakte en klub eller 2 for at se om ikke de kan forklare det.

Indtil videre tak for hjælpen!
Avatar billede CCodam Nybegynder
22. april 2009 - 01:39 #10
#9 Jeg har fundet systemet ;)

Første række starter på 1
Anden række starter på -1
Tredje række starter på -3
Fjerde række starter på -5

Set på den måde at når du trækker fra, så er 0 = det højeste antal (4 eller 20, alt efter hvilket skema)

Dette passer på begge skemaer
Avatar billede Jim-bh Nybegynder
22. april 2009 - 07:52 #11
hej,
jeg kan godt se noget der, men så alligevel ikke.

    $j = -1;
while ($i <= $antal) {

echo "<tr>";
echo "<td>$i</td><td>".$j."</td><td>$k</td><td>$l</td><td>$m</td>";
echo "</tr>";
   
    $j++;
    $i++;
}
Avatar billede CCodam Nybegynder
22. april 2009 - 09:17 #12
#11 Den ved jo ikke automatisk at -1 = 20, -3 = 18, -5 = 15...

Prøv noget lignende:

$i = 1;
$j = $antal - 1;
$k = $antal - 3;
$l = $antal - 5;
if ($l < 0) {  // Ved $antal = 4 -> $l = -1 LAVES om til 4-1 = 3
$l = $antal - $l; }

while ($i <= $antal) {

  echo "<tr>";
  echo "<td>".$i."</td><td>".$j."</td><td>".$k."</td><td>".$l."</td>";
  echo "</tr>";
 
  If ($l == $antal) { // Når $l = $antal, start forfra
    $l = 1;
  } else {
    $l++;
  }
  If ($k == $antal) { // Når $j = $antal, start forfra
    $k = 1;
  } else {
    $k++;
  }
  If ($j == $antal) { // Når $j = $antal, start forfra
    $j = 1;
  } else {
    $j++;
  }
  $i++;
}
Avatar billede Jim-bh Nybegynder
22. april 2009 - 09:41 #13
Jeg kom faktisk på noget lignende, da jeg cyklede på arbejder.
Jeg tjekker det lige i aften.
Avatar billede Jim-bh Nybegynder
22. april 2009 - 18:29 #14
Hej igen

Den virker delvist
Et 4 kører heat ser således ud:
Bane 1 giver 3 4 1 2 (korrekt = 4 1 2 3)
Bane 2 giver 1 2 3 4 (korrekt)
Bane 3 giver 5 6 7 8 (korrekt = 2 3 4 1

Anyway det har jeg fået løst:

$j = 1;
$k = $antal - 0;
$l = $antal - 2;
$m = $antal - 5;


Men problemet er pt. bane4, det virker som om den ikke kan læse:
$m = $antal - 5;

$m = $antal - 5;
if ($m <= 0) {  // Ved $antal = 4 -> $m = -1 LAVES om til 4-1 = 3
    echo $m = $antal - $m;
Avatar billede CCodam Nybegynder
23. april 2009 - 09:00 #15
#14 Kan da vidst godt se jeg, lavede et par små fejl :P
Du har ret i at det skal hedde -0, -2, -5
Derudover så skal det hedde $antal + l i if sætningen, så det kommer til at se sådan her ud:


$antal = 4;

$i = 1;
$j = $antal;
$k = $antal - 2;
$l = $antal - 5;
if ($l < 0) {
$l = $antal + $l; }


while ($i <= $antal) {

  echo "<tr>";
  echo "<td>".$i."</td><td>".$j."</td><td>".$k."</td><td>".$l."</td>";
  echo "</tr>";
  if ($l == $antal) {
    $l = 1;
  } else {
    $l++;
  }
  if ($k == $antal) {
    $k = 1;
  } else {
    $k++;
  }
  if ($j == $antal) {
    $j = 1;
  } else {
    $j++;
  }
  $i++;

}
Avatar billede Jim-bh Nybegynder
23. april 2009 - 17:06 #16
Ja præcist sådan der

Jeg til rettede dog lidt, således at den henter navnene fra point tabellen ned i skemaet.

<?
    $i = 0;
$i = 1;
$j = 1;
$k = $antal - 0;
$l = $antal - 2;
$m = $antal -5;
if ($m <= 0) {  // Ved $antal = 4 -> $m = -1 LAVES om til 4-1 = 3
    $m = $antal + $m;
    echo "<br />";
    echo "<br />";
}
while ($i <= $antal) {

  echo "<tr><td colspan='2' align='center'>";
          echo "&nbsp;".$i;
  echo "</td><td width='20' class='graa'>&nbsp;";
          echo "#".$j;
  echo "</td><td>&nbsp;";
          echo substr($_POST['driver'.$j],'0','6');
  echo "</td><td width='20' class='graa'>&nbsp;";
          echo "#".$k;
  echo "</td><td>&nbsp;";
        echo substr($_POST['driver'.$k],'0','6');
  echo "</td><td width='20' class='graa'>&nbsp;";
          echo "#".$l;
  echo "</td><td>&nbsp;";
          echo substr($_POST['driver'.$l],'0','6');
  echo "</td><td width='20' class='graa'>&nbsp;";
          echo "#".$m;
    echo "</td><td>&nbsp;";
          echo substr($_POST['driver'.$m],'0','6');
  echo "</td></tr>";
 
    If ($j == $antal) { // Når $j = $antal, start forfra
    $j = 1;
  } else {
    $j++;
  }
  If ($k == $antal) { // Når $k = $antal, start forfra
    $k = 1;
  } else {
    $k++;
  }
  If ($l == $antal) { // Når $l = $antal, start forfra
    $l = 1;
  } else {
    $l++;
  }
  If ($m == $antal) { // Når $j = $antal, start forfra
    $m = 1;
  } else {
    $m++;
  }
  $i++;
}
?>
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
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

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