Hoe $_GET gebruiken als string

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Mar kla

mar kla

19/09/2024 22:59:01
Quote Anchor link
Even HEEEEL kort door de bocht


deze $_Get code werkt.

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
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?
Gewijzigd op 20/09/2024 08:46:23 door - Ariën -
 
PHP hulp

PHP hulp

20/09/2024 15:35:41
 
- Ariën  -
Beheerder

- Ariën -

19/09/2024 23:03:36
Quote Anchor link
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.
 
Mar kla

mar kla

19/09/2024 23:35:17
Quote Anchor link
een voetbal seizoen heet "seizoen 2023-2024" etc

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


Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
$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
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
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;
}
}
 
- Ariën  -
Beheerder

- Ariën -

19/09/2024 23:45:59
Quote Anchor link
Wat meldt een echo van je query?
 
Ivo P

Ivo P

20/09/2024 09:11:52
Quote Anchor link
$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.
 
Mar kla

mar kla

20/09/2024 09:38:56
Quote Anchor link
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
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
$_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
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
$prev_season_id = show_season_id($season_name) > 0 ?


wat ik als resultaten zou willen zien is
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
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.
Gewijzigd op 20/09/2024 10:07:24 door mar kla
 
Ivo P

Ivo P

20/09/2024 11:46:24
Quote Anchor link
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.
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
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.
 
Mar kla

mar kla

20/09/2024 12:05:00
Quote Anchor link
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?
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
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



Toevoeging op 20/09/2024 12:55:05:

Helaas
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
WHERE 2021-2022 < 2022-2023

werkt niet

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


Toevoeging op 20/09/2024 14:03:35:

alle op een aanmerking hebben geholpen!!

Ik heb het nu zoals ik wil

Allemaal bedankt voor de PHPhulp
Gewijzigd op 20/09/2024 12:21:37 door mar kla
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.