05. oktober 2023 - 11:56Der er
8 kommentarer og 1 løsning
flere $count i grupper
Jeg har to grupper radiobuttons, der kører på samme programmeringsstump Den ene gruppe hedder valg[] og den anden hedder dag[]. Skal $ = være forskellige bogstaver eller kan de begge hedde N ?
$avalg = (isset($_POST['valg']) ? $_POST['valg'] : ""); if(empty($avalg)){ die ("Venligst marker et af felterne medlem/ikke medlem."); } $N = count($avalg); echo " ";
foreach($avalg as $valg){ $string_valg.= $valg." "; echo " "; }
Hvis radiobuttons går under navnet "valg[]" får du det ikke til at virke, hvis du undersøger $_POST["valg"]. Som @erikjacobsen forklarede dig i en tidligere tråd får du ikke et array ud af radiobuttons bare fordi du kalder dem noget med kantede parenteser. Så enten skal du fjerne de kantede parenteser i forbindelse med dine radiobuttons -- eller også skal du tjekke indholdet af $_POST["valg[]"] i stedet for $_POST["valg"].
Dit afsluttende spørgsmål forstår jeg ikke helt, men grundlæggende kan man jo sige, at når du skriver noget med et "$" foran, så arbejder du med en variabel. Og en almindelig nummerisk variabel kan kun have én værdi af gangen.
Du kan således godt bruge $adag flere gange, men den får jo en ny værdi hver gang du putter noget nyt indhold i den. Angående $N som du nævner, så bruger du den kun én gang, så jeg tænker ikke der er noget problem.
Med $string_dag er det lidt anderledes, men det er fordi du sætter et punktum foran lighedstegnet. Dermed siger du, at det der står efter lighedstegnet blot skal lægges oveni det, som er i variablen i forvejen.
Mit spørgsmål: "Skal $ = være forskellige bogstaver eller kan de begge hedde N ?" er sådan set besvaret i #2. Det kan de ikke, hvis variablerne skal bruges hver for sig, skal de hedde to forskellige ting fx N og I. Jeg har dog brugt forslagene fra #2 for en mere forståelig kode. Mit eksempel er fra en gammel PHP 5.6 kode - mere end 10 år gammel. Den er jeg ved at renovere. Måske kommer der også flere ("mærkelige") spørgsmål. jeg har nu fjernet de kantede parenteser, men bebolder samme navn og håber, at mine radiobuttons stadig betragtes som en grupper med samme navn.
Alt i orden. Men det med variabler af samme navn er nu ikke nyt siden php5.6. Jeg kan næsten ikke forestille mig et programmeringssprog, hvor det ikke er sådan.
Det der måske kan have forvirret dig er, at på tværs af funktioner, kan man godt have variabler af samme navn. Men det handler om variablernes "scope" eller rækkevidde på dansk: https://www.php.net/manual/en/language.variables.scope.php
Så en variabel defineret indenfor en funktion gælder kun inde i funktionen, medmindre du eksplicit definerer den som global. Inde på linket har variablen $a derfor forskelligt indhold alt efter om vi befinder os udenfor eller indenfor funktionen test.
Den formular, jeg sidder og arbejder med i øjeblikket (opdaterer fra PHP 5.6 til PHP 8.2) Indeholdt oprindelig et sæt checkbokse på 3, en select med 3 valgmuligheder og en select med 8 muligheder. Den har virket fint i php 5.6, men volder nu lidt bøvl. jeg vil "opdatere-" den til to sæt radio med required og en select på 8 muligheder, hvor man kun skal vælge en. I virkligheden burde de samme 3 koder kunne genbruges med lidt renovering af variablerne. Måske er fejlene helt andre steder?
Her to tilsyneladende ens koder$avalg = (isset($_POST['valg']) ? $_POST['valg'] : ""); if(empty($avalg)){ die ("Venligst marker et af felterne medlem/ikke medlem."); } $nvalg = count($avalg); echo " "; foreach($avalg as $valg){ $string_valg.= $valg." "; echo " "; }
$adag = (isset($_POST['dag']) ? $_POST['dag'] : ""); if(empty($adag)){ die ("Vælg venligst deltageform. "); } $ndag = count($adag); echo " "; foreach($adag as $dag){ $string_dag.= $dag." "; echo " "; } Den øverste virker (brugt i en anden formular) Den nederste virker ikke, eller rettere, de virker ikke, når de er efter hinanden. Hvad er så årsagen?
Du bliver nok nødt til at sige noget om, hvad du mener med, at den virker ikke.
Det eneste problem jeg lige kan få øje på er, at hvis du $avalg er tom, så dør scriptet jo i anden linje, og derfor når den aldrig frem til anden del.
Jeg har i øvrigt gennem flere tråde efterhånden undret mig lidt over, hvorfor du har alle disse 'echo " ";' linjer sat ind i din kode? Hvis det er til debugging, kunne det måske være en ide, at skrive noget forskelligt indhold i hver echo-streng, således at du kan se hvor langt scriptet kommer inden det fejler. Nogle gange kan det måske endda være hjælpsomt at lade echo-kommandoerne udskrive noget indhold fra de variabler, du arbejder med, så du kan se om de indeholder det, som du forventer.
Det viser sig nu, at de koder, jeg har nævnt i mit spørgsmål faktisk virker udmærket, I stedet havde jeg lavet en rigtig dum fejl, så fejlen var et helt andet sted. Da jeg så fik den rettet, gik det fremad og formularen virker med to sæt radiobuttons i grupper på 3 og en select på 8. :-). Tak for svarene, især blev jeg klogere på variabler.
Synes godt om
Ny brugerNybegynder
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.