Avatar billede slein55 Mester
05. juli 2023 - 17:28 Der er 13 kommentarer og
1 løsning

behandling af data i PHP overført fra formular

et lille udsnit af min streng til behandling af data fra formular
$svar = $_GET["svar"];
$svar1 = explode(",", $svar);

$opg1  = $_GET["opg1"];
$opg2  = $_GET["opg2"];
$opg3  = $_GET["opg3"];
$opg4  = $_GET["opg4"];
$opg5  = $_GET["opg5"];

jeg har ikke haft problemer før men nu er det PHP 8 jeg kører ved ikke om der lavet om på noget der jeg får fejl: Warning: Undefined array key, hvis der er et tomt felt jeg bruger en formular med 48 spørgsmål og 3-4 valgmuligheder. overfører en komma separeret streng med svar til at sammenligne med det har kørt fint med tidligere version af PHP
Avatar billede arne_v Ekspert
05. juli 2023 - 17:42 #1
Test med isset inden du tilgår array index.
Avatar billede slein55 Mester
05. juli 2023 - 17:57 #2
jeg har studeret ISSET ved ikke helt hvor jeg skal sætte det ind, programmet har virket fint indtil min udbyder opdaterede PHP til 7 og 8
Avatar billede arne_v Ekspert
05. juli 2023 - 18:12 #3
PHP 8 ændrede “Undefined array key” fra notice til warning.

Det har aldrig været god kode.
Avatar billede arne_v Ekspert
05. juli 2023 - 18:14 #4
$svar = $_GET["svar"];

->

if(isset($_GET["svar"])) {
    $svar = $_GET["svar"];
} else {
    $svar = ''; // eller null eller 'No value' eller ...
}
Avatar billede arne_v Ekspert
05. juli 2023 - 18:15 #5
Hvis man er til kort kode så:

$svar = isset($_GET["svar"]) ? $_GET["svar"] : '';
Avatar billede erikjacobsen Ekspert
05. juli 2023 - 19:52 #6
Fra PHP7 skulle dette være en mulighed:

  $svar = $_GET["svar"] ?? '';
Avatar billede arne_v Ekspert
05. juli 2023 - 21:18 #7
#6

Jeg var ikke klar over at ?? også håndterede !isset - jeg troede at den kun håndterede null, men du har ret - håndterer både !isset og null.
Avatar billede bvirk Guru
06. juli 2023 - 09:23 #8
php har mange sære ord, men har den der bare har lavet lidt kommer hurtigt til at kende almindeligt brugte som isset.
Men strengt taget fortæller ordet hvad der er sat - er det indekset i arrayet hvis eksistens der berettes om eller er det et ekisterende som er sat forskelligt fra noget usat som null.
array_key_exists mere retvisende berettende.
Sjovt iøvrigt, hvor meget, hvis man som uøvet, kan være på røven uden et php plugin i editoren som hjælper med hvad der nålen og hvad der er høstakken.
Avatar billede arne_v Ekspert
06. juli 2023 - 17:06 #9
#8

isset skal vel læses som "kan bruges", fordi det dækker meget.

Eksempel:


<?php
$a1 = null;
$a2 = array();
$a3 = array('X' => null);
$a4 = array('X' => 123);
echo sprintf("%b %b %b %b %b\r\n", isset($a0['X']), isset($a1['X']), isset($a2['X']), isset($a3['X']), isset($a4['X']));
?>
Avatar billede bvirk Guru
07. juli 2023 - 10:38 #10
#9 isset som svejserkniv - power forjættende i skrivende stund
Avatar billede slein55 Mester
09. juli 2023 - 20:27 #11
jeg sender en komma separeret streng over til at sammenligne de svar jeg får fra
$svar = $_GET["svar"];  bliver fundet  ved hjælp af 4 svarmuligheder
<input type="radio" value="a" name="opg1">
<input type="radio" value="b" name="opg1">
<input type="radio" value="c" name="opg1">
<input type="radio" value="d" name="opg1">
der er 20 opgaver men hvis der er en der ikke er besvaret kommer der fejl hvordan kan jeg evt. lægge et tegn  ind hvis den er tom og hvordan
Avatar billede ejvindh Ekspert
10. juli 2023 - 09:29 #12
$svar = ($_GET["svar"] ?? null);

$svar kommer til at indeholde get-indholdet eller null.
Avatar billede slein55 Mester
10. juli 2023 - 13:13 #13
kan man sætte den til at lægge et bogstav ind i stedet hvis det er null
Avatar billede ejvindh Ekspert
10. juli 2023 - 13:58 #14
Du bestemmer selv, hvad alternativet skal være:

$svar = ($_GET["svar"] ?? "a");
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester