Permalänk
Medlem

[php] Initiera $_GET-värden

Sweclockers är ett bra, lungt forum tycker jag och jag önskar att det fanns någon tråd som var klistrad här vart man kan ställa enkla frågor och få svar utan att behöva skapa en ny tråd.

Jag själv håller på att lära mig PHP nu och börjat med grunderna jag följer lynda PHP with MYSQL baisc.
och jag lärde mig precis

<?php rand(min, max); ?>

Direkt ville jag testa detta och gjorde en enkel generator

<body> My Super Generator!<br> <form method="GET"> <input type="text" name="random" value="1"> <input type="submit" value="GENERATE!"> </form> <?php $random = $_GET["random"]; echo "Your random numbers are 0 - " . $random; echo "<br>"; echo rand(0, $random); ?> </body>

bara för att testa funktionen, men nu vill jag fråga en enkel sak. Hur kan man på något sätt göra så att när sidan laddas med ett tal i $random.
Nu kommer error
Notice: Undefined index: random in RandomNumbers_tut.php on line 14

eftersom echo rand(0, $random); inte har något värde. Även om jag sätter value="1" i input boxen så blir det error eftersom php koden söker ju efter GET funktionen.

Tack

Visa signatur

Samsung 34'' ultrawide curved
Logitech MX master & Logitech g910
Creative SoundBlaster Katana

Permalänk
Hedersmedlem

Inte för att jag har skrivit php på rätt många år, men kan du inte hantera fallet !isset($_GET["random"]) separat?

För övrigt är den stora fördelen med olika trådar för olika ärenden att det blir möjligt att hitta (även om många användare skriver många inlägg på kort tid).
*rubrik redigerad*

Permalänk
Testpilot

Elgot har rätt, man kan använda isset för att kolla om en variabel finns och isåfall sätta den till ett standardvärde om den inte är definierad.

Däremot är det inte ett error du får utan en notice som man egentligen inte behöver göra något åt det då alla odefinierade variabler i PHP praktiskt nog är tomma. Vill man göra det helt rätt så ska man ju dock se till att sin kod inte ger några notice men oftast (i princip alltid) funkar koden ändå.

Visa signatur

Kolla gärna in min RGB-LED-ljusstake i galleriet
[Gigabyte GA-Z97MX-Gaming 5][Intel Core i5 4690K][Corsair XMS3 16GB][Asus GeForce RTX 2060 Super Dual Evo OC]

Permalänk
Medlem
Skrivet av downup:

Sweclockers är ett bra, lungt forum tycker jag och jag önskar att det fanns någon tråd som var klistrad här vart man kan ställa enkla frågor och få svar utan att behöva skapa en ny tråd.

Jag själv håller på att lära mig PHP nu och börjat med grunderna jag följer lynda PHP with MYSQL baisc.
och jag lärde mig precis

<?php rand(min, max); ?>

Direkt ville jag testa detta och gjorde en enkel generator

<body> My Super Generator!<br> <form method="GET"> <input type="text" name="random" value="1"> <input type="submit" value="GENERATE!"> </form> <?php $random = $_GET["random"]; echo "Your random numbers are 0 - " . $random; echo "<br>"; echo rand(0, $random); ?> </body>

bara för att testa funktionen, men nu vill jag fråga en enkel sak. Hur kan man på något sätt göra så att när sidan laddas med ett tal i $random.
Nu kommer error
Notice: Undefined index: random in RandomNumbers_tut.php on line 14

eftersom echo rand(0, $random); inte har något värde. Även om jag sätter value="1" i input boxen så blir det error eftersom php koden söker ju efter GET funktionen.

Tack

Du skulle kunna skriva något i denna stil:

<?PHP $int_default = 10; $int_max = 100; if ($_GET['my_integer'] == '') { $int_random_result = mt_rand($int_default, $int_max); } else { $int_random_result = mt_rand(intval($_GET['my_integer']), $int_max); } echo($int_random_result); ?>

I enkelhet vad som händer är att om inte GET variabeln har ett värde så används default och max.
Detta var lite snabbt ihop svängt men ska på lunch men du får en uppfattning i varje fall.

Visa signatur

Fractal Design Arc Svart | MSI Z68A-GD55 G3 REV B3 | Intel® Core i7 2600K, 3.4GHz, 8MB | Corsair 16GB (4x4096MB) CL9 1600Mhz VENGEANCE LP | MSI GeForce GTX 670 | Phanteks PH-TC14PE CPU Cooler (vit) | Corsair Power Supply 650W TX M, Modular, ATX, PS/2 | SSD (okänd tillverkare) + 2 äldre SATA2 diskar på 750 Gb, 350 gb. | OS: Microsoft Windows 10 home.

Permalänk
Testpilot
Skrivet av BlueEyes:

Du skulle kunna skriva något i denna stil:

if ($_GET['my_integer'] == '')

I enkelhet vad som händer är att om inte GET variabeln har ett värde så används default och max.
Detta var lite snabbt ihop svängt men ska på lunch men du får en uppfattning i varje fall.

Din kod kommer ge samma notice (Undefined index) eftersom du försöker jämföra en variabel som kanske inte finns, för att undvika det är det som sagt isset som gäller.

if(isset($_GET['random'])){ //GET-variabeln är satt, använd den $random = $_GET['random']; }else{ //GET-variablen är inte satt, använd 100 istället $random = 100; }

Visa signatur

Kolla gärna in min RGB-LED-ljusstake i galleriet
[Gigabyte GA-Z97MX-Gaming 5][Intel Core i5 4690K][Corsair XMS3 16GB][Asus GeForce RTX 2060 Super Dual Evo OC]

Permalänk
Avstängd

<?php if(isset($_GET['random'])){ $random = $_GET["random"]; echo "Your random numbers are 0 - " . $random; echo "<br>"; echo rand(0, $random); } ?>

Så skulle jag gjort

Visa signatur

iPeek #1: AMD 1100T @ 4.8GHz 16GB @H2O
iPeek #1: AMD 1100T @ 4.8GHz 16GB @H2O
iPeek #1: INTEL CELERON @ 2.80GHz 1GB
iPeek #2: INTEL ATOM x8 @ 2.80GHz 4GB
Skollaptop: Macbook AIR 13" 2011, 128GB, 4GB

Permalänk
Medlem
Skrivet av hunden:

Din kod kommer ge samma notice (Undefined index) eftersom du försöker jämföra en variabel som kanske inte finns, för att undvika det är det som sagt isset som gäller.

if(isset($_GET['random'])){ //GET-variabeln är satt, använd den $random = $_GET['random']; }else{ //GET-variablen är inte satt, använd 100 istället $random = 100; }

Det vet jag redan. Men jag tänkte närmare på funktionen som OP var ute efter. Men självklart har du rätt vad gäller notice i sig.

Skickades från m.sweclockers.com

Visa signatur

Fractal Design Arc Svart | MSI Z68A-GD55 G3 REV B3 | Intel® Core i7 2600K, 3.4GHz, 8MB | Corsair 16GB (4x4096MB) CL9 1600Mhz VENGEANCE LP | MSI GeForce GTX 670 | Phanteks PH-TC14PE CPU Cooler (vit) | Corsair Power Supply 650W TX M, Modular, ATX, PS/2 | SSD (okänd tillverkare) + 2 äldre SATA2 diskar på 750 Gb, 350 gb. | OS: Microsoft Windows 10 home.