Permalänk
Medlem

HTML <select> till PHP If-sats

Okej nu är det så här, i går natt satt jag och kodade lite på en hemsida, jag började med att testa att göra en drop-down lista med <select> och det gick ju finfint, sedan skulle ja göra så en IF-sats kollade vilket alternativ som var valt då kom problemet.
Jag har gjort detta innan för någon vecka sedan, men jag kunde inte komma på hur.

<select> koden:

<select name="amdkort"> <option value="6950">6950</option> <option value="6970">6970</option> </select>

Jag har även testat med:

<select name="amdkort"> <option value="6950">6950</option> <option value="6970">6970</option> <input type="submit" name="amdsubmit" value="Submit" /> </select>

PHP kod:

<?php if(isset($_POST["6950"])){ print '6950 chosen'; } else if(isset($_POST["6970"])){ echo "6970 chosen"; } else{ print '1'; exit; } ?>

Men jag lyckas inte få den att välja något av alternativen, utan den går bara till "else"..

Hur är det jag ska göra? Jag har googlat och där har dem gjort samma sak som jag, men för mig funkar det ju inte.

Sidans adress är http://217.210.166.115:81/gpu/gpu.php så kan ni se själva och försöka luska ut problemet, för jag kan verkligen inte för stå mig på det här!

Hjälp upskattas jätte mycket, och den/de som hjälper mig kommer få credz på sidan!

Mvh FobbanN

Visa signatur

Kom ihåg att ALLTID citera mig om du vill ha svar!

|CPU: AMD Ryzen 7 7800 3XD Kyld av: Cooler Master ML240L Core GPU: MSI GeForce RTX 4080 Super 16GB Ventus 3X OC Chassi: Corsair 4000D Airflow MOBO: Asus TUF Gaming A620-Pro WIFI Nätagg: Gigabyte Ultra Durable 850W V2 PCIe5 SSD: WD Black SN850X 1TB Gen4

Permalänk
Medlem

Är det inte så att man får ut värdet genom att kolla $_POST['amdkort']?

Permalänk
Skrivet av fazzel:

Är det inte så att man får ut värdet genom att kolla $_POST['amdkort']?

Jo.

<?php if(isset($_POST['amdkort'])){ echo $_POST['amdkort']. ' chosen'; } ?>

Visa signatur
Permalänk

Något sånt kanske?..

<select name="amdkort"> <option value="6950">6950</option> <option value="6970">6970</option> <input type="submit" name="amdsubmit" value="Submit" /> </select>

<?php if($_POST["amdkort"] == "6950"){ print '6950 chosen'; } else if($_POST["amdkort"] == "6970"){ echo "6970 chosen"; } else{ print '1'; exit; } ?>

Permalänk

En notis: Du ska inte ha en input inne i select, det är felaktig html.

<form>
<select>
...
</select>
<input/>
</form>

Permalänk
Medlem
Skrivet av Kebabhyvlarn:

Jo.

<?php if(isset($_POST['amdkort'])){ echo $_POST['amdkort']. ' chosen'; } ?>

Skrivet av Jornathan:

Något sånt kanske?..

<select name="amdkort"> <option value="6950">6950</option> <option value="6970">6970</option> <input type="submit" name="amdsubmit" value="Submit" /> </select>

<?php if($_POST["amdkort"] == "6950"){ print '6950 chosen'; } else if($_POST["amdkort"] == "6970"){ echo "6970 chosen"; } else{ print '1'; exit; } ?>

Hmm, jag glömde skriva att jag även har testat så. Den skriver endast ut '1' endå, även fast det borde vara så koden ska vara..

Visa signatur

Kom ihåg att ALLTID citera mig om du vill ha svar!

|CPU: AMD Ryzen 7 7800 3XD Kyld av: Cooler Master ML240L Core GPU: MSI GeForce RTX 4080 Super 16GB Ventus 3X OC Chassi: Corsair 4000D Airflow MOBO: Asus TUF Gaming A620-Pro WIFI Nätagg: Gigabyte Ultra Durable 850W V2 PCIe5 SSD: WD Black SN850X 1TB Gen4

Permalänk
Medlem

Fick det att funka nu! Tack!
(Jag hade nått annat fel i koden)

Visa signatur

Kom ihåg att ALLTID citera mig om du vill ha svar!

|CPU: AMD Ryzen 7 7800 3XD Kyld av: Cooler Master ML240L Core GPU: MSI GeForce RTX 4080 Super 16GB Ventus 3X OC Chassi: Corsair 4000D Airflow MOBO: Asus TUF Gaming A620-Pro WIFI Nätagg: Gigabyte Ultra Durable 850W V2 PCIe5 SSD: WD Black SN850X 1TB Gen4

Permalänk
Skrivet av FobbanN:

Fick det att funka nu! Tack!
(Jag hade nått annat fel i koden)

Snyggare lösning:

<?php $sel = $_POST['amdkort']; ?> <form method='post' action='<?=$_SERVER['PHP_SELF'];?>'> <select name="amdkort"> <option value="6950" <?=($sel == "6950" ? "selected='selected'" : "")?>>6950</option> <option value="6970" <?=($sel == "6970" ? "selected='selected'" : "")?>>6970</option> </select> <input type="submit" name="amdsubmit" value="Submit" /> </form> <?php if(isset($sel)){ echo "Du har valt $sel"; } ?>

Permalänk
Skrivet av Full Strike:

Snyggare lösning:

<?php $sel = $_POST['amdkort']; ?> <form method='post' action='<?=$_SERVER['PHP_SELF'];?>'> <select name="amdkort"> <option value="6950" <?=($sel == "6950" ? "selected='selected'" : "")?>>6950</option> <option value="6970" <?=($sel == "6970" ? "selected='selected'" : "")?>>6970</option> </select> <input type="submit" name="amdsubmit" value="Submit" /> </form> <?php if(isset($sel)){ echo "Du har valt $sel"; } ?>

Hur är det en snyggare lösning? Verkar otroligt mycket krångligare.

Visa signatur
Permalänk
Skrivet av Kebabhyvlarn:

Hur är det en snyggare lösning? Verkar otroligt mycket krångligare.

Den markerar valt alternativ i listan, och använder inte tre if-satser för att skriva ut vad man valt. Vad är det som är krångligt menar du?
Jag passade på att snygga till hans html också, flyttade ut submiten från selecten och la till form runtom, kanske det som förvirrar dig?

Permalänk
Medlem

Du kan även använda "isset" och "switch" istället om du vill för optimera koden liten eftersom "if" är långsammare.

$amdkort = isset($_POST['amdkort']) ? $_POST['amdkort'] : ""; //Ingen varning om du kör PHP i strict mode switch($amdkort) { //listan av dom korten som är tillåtna case 6950: case 6970: break; default: $amdkort = ""; } if($amdkort !== "") { //$amdkort har ett värdet du vill ha }

Visa signatur
Permalänk
Skrivet av XzaR:

Du kan även använda "isset" och "switch" istället om du vill för optimera koden liten eftersom "if" är långsammare.

$amdkort = isset($_POST['amdkort']) ? $_POST['amdkort'] : ""; //Ingen varning om du kör PHP i strict mode switch($amdkort) { //listan av dom korten som är tillåtna case 6950: case 6970: break; default: $amdkort = ""; } if($amdkort !== "") { //$amdkort har ett värdet du vill ha }

Ville bara säga att "optimera" kod genom att byta ut kod mot switch och isset är så sjukt onödigt (inte för att det är något fel med dessa, tvärtom använd de gärna). Det är bara så meningslöst att börja optimera sin kod för sånna grejer. Och innan man ens börjar optimera ska man kolla VAD som tar tid, och om det är något problem över huvud taget. Sorry ville ranta lite..

Permalänk
Medlem
Skrivet av Cloudburst:

Ville bara säga att "optimera" kod genom att byta ut kod mot switch och isset är så sjukt onödigt (inte för att det är något fel med dessa, tvärtom använd de gärna). Det är bara så meningslöst att börja optimera sin kod för sånna grejer. Och innan man ens börjar optimera ska man kolla VAD som tar tid, och om det är något problem över huvud taget. Sorry ville ranta lite..

Tänkte precis säga detta, switch statementet fungerar lite lättare när man lärt sig hur det fungerar.

Permalänk
Medlem
Skrivet av Cloudburst:

Ville bara säga att "optimera" kod genom att byta ut kod mot switch och isset är så sjukt onödigt (inte för att det är något fel med dessa, tvärtom använd de gärna). Det är bara så meningslöst att börja optimera sin kod för sånna grejer. Och innan man ens börjar optimera ska man kolla VAD som tar tid, och om det är något problem över huvud taget. Sorry ville ranta lite..

Okej gör som du vill men jag tycker det ser mycket bättre ut sådär istället för att använda flera "else if" för varje kort. Annars kan man också göra en array istället och använda "in_array". Menar inte att det går tusen gånger fortare eller något vad jag menade också är att det ser bättre och enklare ut med "switch".

Sen är jag i alla fall glad om någon säger om något är fel eller om det finns bättre sätt.

Visa signatur
Permalänk
Skrivet av XzaR:

Okej gör som du vill men jag tycker det ser mycket bättre ut sådär istället för att använda flera "else if" för varje kort. Annars kan man också göra en array istället och använda "in_array". Menar inte att det går tusen gånger fortare eller något vad jag menade också är att det ser bättre och enklare ut med "switch".

Sen är jag i alla fall glad om någon säger om något är fel eller om det finns bättre sätt.

Nu pratar du om "snygghet" och kompakt kod, inte prestanda. Det är helt olika saker. Skriv gärna snygg och kompakt kod, det uppmuntrar jag. Men skriv absolut inte om kod för man läst att "isset är snabbare om man kör 10 miljoner checkar i sekunden", det är helt meningslöst i det stora hela (såvida inte ditt program gör typ 1 miljard isset checkar i sekunden).