Even HEEEEL kort door de bocht


deze $_Get code werkt.


if(isset(
	{$season_name = $_GET[id];}
  else 
	{$season_name=show_season_name($as_present_season_id);}


De input komt uit een Varchar (9) veld

Daar in staan de waardes
2024-2025
2023-2024
2022-2023
etc

Deze waardes worden echter niet al string behandeld maar als numeriek

Hoe kan ik er voor zorgen dat $_Get en verderop in het script de input niet als numerieke waardes worden behandeld?
Waarom niet een veld valid_to met een 2025-01-01?
Dat lijkt mij simpeler en logischer.

Verder zie ik niet echt wat het probleem is? In GET wordt alles altijd als een string behandelt.
een voetbal seizoen heet "seizoen 2023-2024" etc

wat er verderop in het script gebeurd is dat 2023-2024 klaarblijk als som wordt gezien.



$prev_season_id = show_season_id($season_name) > 0 ? 


Als $season_name de waarde 2024-2025 heeft (of welke ander seizoen dan ook) is het resultaat 1 dus groter dan 0

dit is overigens de aangeroepen function

function show_season_id($season_name)
{
global $dbconnection_as;	
$sql_season_id = mysqli_query
($dbconnection_as ,"SELECT
s.as_season_id AS seasonid
FROM as_seasons s
WHERE s.as_season_name='".$season_name."'");
print("FOUT!: ".mysqli_error($dbconnection_as)."\n");


while($record = mysqli_fetch_array($sql_season_id))
{
$season_id = $record['seasonid'];
return $season_id;
}
}
Wat meldt een echo van je query?
$prev_season_id = show_season_id($season_name) > 0

hier staat:
( show_season_id($season_name) > 0 )
Vergelijk de uitkomst van de functie show_season_id met het getal 0.
Wel, als die uitkomst luidt: "2025-2026", dan wordt daarvan een getal gemaakt: 2024

Dat vergelijk jij met 0 en je vraagt of 2024 groter is dan 0 (ja)
Dus TRUE.

TRUE en 1 zijn uitwisselbaar in veel gevallen in PHP, dus daar zou je 1 vandaan kunnen komen.

----

prev_season_id:
dat is niet per se het id van de huidige - 1.

Als je ze niet op volgorde invoert, dan kan dat een random id zijn, misschien wel groter dan de huidige.
Vergelijk dus op waarde, datum of een volgordenummer. Maar nooit op ID.

de tabel as_seasons ziet er (ongeveer) zo uit

as_season id | season_name
120 | 2024-2025
119 | 2023-2024
118 | 2022-2023
117 | 2021-2022

de $_get krijg dus een waarde 2024-2025 binnen. En daar ga ik mee aan de slag

als ik het script start met een $_Get

$_GET[2024-2025]
ECHO"$season_name" 
ECHO"$season_id"
ECHO"prev_season_id"


krijg ik:
2024-2025
120
1

Alles werkt dus perfect.

behalve dat in

$prev_season_id = show_season_id($season_name) > 0 ? 


wat ik als resultaten zou willen zien is

119 = show_season_id(2024-2025)=2023-2024 - 1 ? 




De waarde '2024-2025' als berekening wordt gezien.
een 2024-2025 = 1
net zoals alle ander season_name's

Als season_name niet uit getallen had bestaan dan ging het volgen mij wel goed.

maak van 2023-2024 eens 2099-2024

in jouw logica zou er dan 75 - 1 = 74 uit moeten komen.

Maar volgens mij is jouw "1" een true.

Hoe dan ook: ik vind dat jouw "prev_season_id" moet komen uit.

SELECT s.as_season_id AS seasonid
FROM as_seasons s
WHERE s.as_season_name < '".$season_name."'"
ORDER BY s.as_season_name DESC
LIMIT 1


Als jij nu namelijk ook nog een seizoen 2020-2021 invoert, krijgt die id = 121 en gaat alles onderuit.
Een ID heeft geen numerieke betekenis.
"Toevallig" zijn dit opvolgende getallen, maar het had net zo goed moeten werken met een reeks:
begin = 1
+4 = 5
-1 = 4
+4 = 8
-1 = 7
+4 = 12
-1 = 11

Dat zijn allemaal unieke aanduidingen.
Net als jouw BSN: geen enkele volgorde aan te bekennen of een relatie met je familie of geboortejaar.
Ivo je hebt hebt helemaal gelijk! het is en 1 van "true"
net even de tabel met seasons aangepast naar

120 | 2020-2025
119 | 2019-2030
en dan ook krijg ik een 1

Thanks!

maar zou dit werken?

SELECT s.as_season_id AS seasonid
FROM as_seasons s
WHERE 2021-2022 < 2022-2023
ORDER BY s.as_season_name DESC
LIMIT 1 


Weet je wat ik ga het gewoon ff proberen

NB
de table seasons is over nagedacht, en id en name zijn altijd opvolgend

1905-1906 id = 1
1906-1907 id = 2
1907-1908 id = 3
..
..
2024-2025 id = 120



[size=xsmall]Toevoeging op 20/09/2024 12:55:05:[/size]

Helaas

WHERE 2021-2022 < 2022-2023

werkt niet

as_seasonname is tekst een je kan dus niet testen of waarde-1 > dan waarde-2


[size=xsmall]Toevoeging op 20/09/2024 14:03:35:[/size]

alle op een aanmerking hebben geholpen!!

Ik heb het nu zoals ik wil

Allemaal bedankt voor de PHPhulp


je kunt wel degelijk strings vergelijken met > of <

deze worden dan alfabetisch vergeleken

Mar kla op 20/09/2024 12:05:00

WHERE 2021-2022 < 2022-2023


Geinig.

Dit wordt:
WHERE -1 < -1 geeft altijd FALSE

Reageren