Som läget är nu ska fem hästar ut i start. 3st. den 15:e och 2st den 19:e, men det skrivs ut att alla startar den 15:e.
Har det något att göra med att webhotellet uppgraderat både Mysql och php?
Det här felet har inte dykt upp tidigare, men jag minns inte om det matats in lopp tidigare som har olika datum, men samma bana så det kanske är där felet ligger.
Den här koden har fungerat länge nu, men det verkar som att den inte bryr sig om olika datum längre om banan är den samma.... Som läget är nu ska fem hästar ut i start. 3st. den 15:e och 2st den 19:e, men det skrivs ut att alla startar den 15:e.
Har det något att göra med att webhotellet uppgraderat både Mysql och php?
Det här felet har inte dykt upp tidigare, men jag minns inte om det matats in lopp tidigare som har olika datum, men samma bana så det kanske är där felet ligger.
Hummm.... är du helt säker på att datumen är rätt inmatade i databasen för alla hästar? I så fall vore det bra om vi fick se den SQL du matar in till databasen. Hur ser $query ut?
Jag misstänker nu att samma sak händer om man matar in samma datum men på olika banor också. Men här är hela koden ut.
<?php
$query = "SELECT s. * , b.namn as bana, stad, l. * , k.enamn, fnamn, h.namn as namn, t. *
FROM starta s
JOIN lopp l ON s.loppID = l.loppID
JOIN bana b ON l.banID = b.banID
JOIN kusk k ON s.kuskID = k.kuskID
JOIN hest h ON s.stallID = h.stallID
JOIN lopptyp t ON l.typID = t.typID
LEFT JOIN resultat r ON l.loppID = r.loppID
WHERE r.loppID is null
ORDER BY l.datum, bana, l.loppNr";
$result = mysql_query($query);
$curr_date = "";
$curr_track = "";
while ($r = mysql_fetch_array($result)){
if ($r['datum'] != $curr_date && $r['bana'] != $curr_track)
{
echo "<p><span class=\"nytt\">Start: ".$r['bana']." ".date('j/n',strtotime($r['datum']))." </span><br /></p>";
$curr_date = $r['datum'];
$curr_track = $r['bana'];
}
echo "<p><span class=\"fet\">".$r['namn']."</span> <br /> Lopp:".$r['loppNr']." Nummer:".$r['sparNr']." ".$r['stracka']."".$r['starttyp']." ".$r['typ']." ".$r['fnamn']." ".$r['enamn']." <br /></p>";
}
?>
Så jag misstänker att jag måste tänka om helt.
Men jag vet inte hur.
Och ja jag är helt säker på att datumen är rätt i databasen.
$query = "SELECT s. * , b.namn as bana, stad, l. * , k.enamn, fnamn, h.namn as namn, t. *
FROM starta s
JOIN lopp l ON s.loppID = l.loppID
JOIN bana b ON l.banID = b.banID
JOIN kusk k ON s.kuskID = k.kuskID
JOIN hest h ON s.stallID = h.stallID
JOIN lopptyp t ON l.typID = t.typID
LEFT JOIN resultat r ON l.loppID = r.loppID
WHERE r.loppID is null
ORDER BY l.datum, b.banID, l.loppNr"; //<-----Här!
bana är ju en tabell, du måste ordna efter kolumnnamnet inte tabellnamnet
Prova att byta ut bana mot b.banID enligt koden ovan.
Nej det fungerade inte heller.
Om jag testade med flera lopp på samma bana men med olika datum så hamnade alla lopp under det första datumet.
Om jag hade samma datum men på olika banor så hamnar alla lopp under samma bana, men den som blev sist inmatad.
Nej det fungerade inte heller.
Om jag testade med flera lopp på samma bana men med olika datum så hamnade alla lopp under det första datumet.
Om jag hade samma datum men på olika banor så hamnar alla lopp under samma bana, men den som blev sist inmatad.
Då är det något mycket konstigt med dina inmatade data! :q (Eller möjligen med JOIN-villkoren.) SQL-koden ovan ska sortera först alla likadana datum, därefter allt på samma bana och slutligen efter samma loppNr.
Det är med all säkerhet så som du säger... men efter ett dygns testande och sidan ligger skarpt och förvirrar besökarna, så fungerar det i alla fall tills vidare med olika datum på samma bana.
Men det blir problem om hästarna går ut samma dag på olika banor, då klumpas alla loppen in på samma bana. Jag har försökt att se om jag skulle kunna joina på annat sätt, men inte lyckats.
Håller på lokalt nu och testar men har inte kommit på vad jag ska ändra... :OO
Men det blir problem om hästarna går ut samma dag på olika banor, då klumpas alla loppen in på samma bana. Jag har försökt att se om jag skulle kunna joina på annat sätt, men inte lyckats.
Håller på lokalt nu och testar men har inte kommit på vad jag ska ändra... :OO
Humm, jag skulle börja med att kolla att alla värden i databasen verkligen är rätt inlagda.
Om det verkar stämma får du posta db-struktur och exempeldata om du vill ha hjälp.
Eftersom jag inte vet om det är databasen det är fel på så har jag matat in ett lopp som går samma datum, men på annan bana som två andra lopp, för att få fram felet.
Kan du se på bilderna om datan är rätt inlagda. Jag tycker det ser ut så. Men outputen blir som det bilden visar.
Är det inte if-satsen som är fel?
Jo, det verkar vara fel på if-satsen. Dock borde du bara ta ut de kolumner som är av intresse ur megajoinen - inte minst blir det mer lättläst då. Nu har du ju tex två kolumner med loppID.
Jag har tänkt sant fram och tillbaka men :( det blir ingen ny "header". Det blir precis likadant som bilden även med ditt förslag. 2 lopp på fel bana.
Blir snurrig...
Nu ändrade jag Selecten också. Tack så jättemycket för påminnelsen... :)
SELECT s. stracka, sparNr , b.namn as bana, stad, l. datum, loppNr, k.enamn, fnamn, h.namn as namn, t. typ, starttyp
FROM starta s
osv som tidigare.
$query = " SELECT s. stracka, sparNr , b.namn as banNamn, stad, l. datum as dag, loppNr, k.enamn, fnamn, h.namn as namn, t. typ, starttyp
FROM starta s
JOIN lopp l ON s.loppID = l.loppID
JOIN bana b ON l.banID = b.banID
JOIN kusk k ON s.kuskID = k.kuskID
JOIN hest h ON s.stallID = h.stallID
JOIN lopptyp t ON l.typID = t.typID
LEFT JOIN resultat r ON l.loppID = r.loppID
WHERE r.loppID is null
ORDER BY dag, banNamn, l.loppNr";
Jag är osäker på om en del av problemet möjligen kan vara att ditt kolumnalias för b.namn sammanfaller med ett tabellnamn. Så vi undanröjer varje tvivel med ett annat alias, banNamn. Detta ändras i SELECT och ORDER BY.
Du vill ha en ny header för varje ny kombination av dag och banNamn?
$result = mysql_query($query);
//De värden vi hade förra varvet i while
$oldDag = "";
$oldBanNamn = "";
while ($r = mysql_fetch_array($result)){
if ($r['dag'] != $oldDay || $r['banNamn'] != $oldBanNamn) {
echo "<p><span class=\"nytt\">Start: ".$r['banNamn']." ".date('j/n',strtotime($r['dag']))." </span><br /></p>";
$oldDag = $r['dag'];
$oldBanNamn = $r['banNamn'];
}
echo "<p><span class=\"fet\">".$r['namn']."</span> <br /> Lopp:".$r['loppNr']." Nummer:".$r['sparNr']." ".$r['stracka']."".$r['starttyp']." ".$r['typ']." ".$r['fnamn']." ".$r['enamn']." <br /></p>";
}
?>
Ja jag vill ha en ny header för varje kombination av bana och datum och nu ser det ut som det fungerar, ska kolla med lite fler kombinationer.
Ska nu försöka ge mig på att separera html och php... :)
Tack så jattemycket. :bire :bire
380 ms totalt · 4 externa anrop · v20260731065814-full.1dc6f849