Uppdatera en andra DD beroende på första valet i första DD

PHPportalen Forum Index » PHP Mjukstart
Lägg ett bokmärke på hela tråden
Skapa nytt inlägg   Svara på inlägget Gå till sida 1, 2  Nästa
Visa föregående ämne :: Visa nästa ämne  
Startad av: Meddelande
Haddock_99



Medlem i: 1296 dagar

Status: Offline



#740784
Inlägg Skrivet: 2016-05-25 22:36      Ämne: Uppdatera en andra DD beroende på första valet i första DD Citera

Som sagt, valet i första DropDown väljer vad andra dropdown populeras av. Jag försöker tänka i PHP men jag vet inte metoden i stort hur det ska gå till.
Ska man deffa ett större antal Dropdown som "aktiveras" (ritas/konstrueras/tas fram) beroende på valet i första Dropdown?
Jag anar att man borde anv. JavaScript eller nåt men har tänkt undvika JS ett tag till.
Om jag fick ett tips om ett "spår" framåt så vet jag hur jag ska komma vidare.
 

_________________
Anställd på litet konsultföretag där det gäller att ro iland de jobb som vi får in. Inga misstag! Utmanande!
Till toppen på sidan
Visa användarprofil Skicka privat meddelande
Azreal
Administratör



Medlem i: 5179 dagar
Från: Uppsala, bor i Göteborg
Status: Offline



#740785
Inlägg Skrivet: 2016-05-25 23:22      Ämne: Citera

Finns väl några spå att jobba efter. Om det sker via php utan JavaScript blir det att du lassar om sidan vid varje val. JavaScript och att du tar med dig alla värden vid första sidladdning och därefter kör js för att bygga beroenden mellan de olika dd.
Ajax, kommunikation sker mellan php och js utan sidladdning men du hämtar data vid varje val.
 

_________________
Konsultation via PM, inte gratis.
Till toppen på sidan
Visa användarprofil Skicka privat meddelande Besök användarens hemsida
Haddock_99



Medlem i: 1296 dagar

Status: Offline



#740786
Inlägg Skrivet: 2016-05-25 23:29      Ämne: Citera

Tack. Då vet jag. PHP-scriptet genererar en andra DD beroende på första.
Jag har tittat lite på 2D-arrayer i PHP och ser en användning av det i just denna app?
 

_________________
Anställd på litet konsultföretag där det gäller att ro iland de jobb som vi får in. Inga misstag! Utmanande!
Till toppen på sidan
Visa användarprofil Skicka privat meddelande
Haddock_99



Medlem i: 1296 dagar

Status: Offline



#740790
Inlägg Skrivet: 2016-05-27 05:51      Ämne: Förstår ej exikveringen Citera

Hej igen,
Har testat att rita ut en till dropdown till beroende på valet i första o det funkar. Men exikveringen slutar lixom efter valet i andra DD och klicket på andra knappen. Nu testar jag visserligen phpfiddle.org hemifrån o har inte testat koden i Apache2 miljö.

Kod lite förenklad. DD name="second" samt knappen AcceptButton exikveras men IF-sats nr 2 tycks
inte "leva". Efter tryck på andra knappen så bara ritas sidan om från start. Det fattar inte jag! Som sagt, det kan vara
phpfiddle.org men jag tror det är här jag måste "fatta" hur script körs o hur det samarbetar med klienten.

<html>
select<name='first' id="">
...
...
</select>
<input type="submit" name="OKbutton" value="OK"/>
</html>


<?php
if( isset($_POST['OKbutton']) ) //IF sats ett
{
select<name='second' id="">
...
...
</select>
<input type="submit" name="AcceptButton" value="OK"/>


if( isset($_POST['AcceptButton'])) //>>> IF sats två <<<
{
echo (" <form method='post' >");
echo ("<input type='submit' name='tebax' value='TEBAX'/>");
echo (" </form>") ;
}

} //End isset()

?>
 

_________________
Anställd på litet konsultföretag där det gäller att ro iland de jobb som vi får in. Inga misstag! Utmanande!
Till toppen på sidan
Visa användarprofil Skicka privat meddelande
webbhelp



Medlem i: 4677 dagar
Från: Sverige
Status: Offline



#740791
Inlägg Skrivet: 2016-05-27 08:24      Ämne: Citera

Lägg formulären inom <form> tag?
Indentera din kod så att allting inte ligger i samma nivå, blir svårläst då.
När du skriver inlägg på phpportalen så lägg din kod i innanför [ code ] [/ code]

KOD:
1:
select<name='second' id="">


ska det vara? eller vad står där?
KOD:
1:
<select name='second' id="">


Det är ej nödvändigt att använda paranteser vid echo. Echo är ingen funktion.

KOD:
1:
if( isset($_POST['OKbutton']) ) //IF sats ett
2:
{
3:
select<name='second' id="">

Avslutar du PHP (?>) efter if () { ?
Här ser det ut som att du direkt börjar skriva html kod i din PHP?
 
Till toppen på sidan
Visa användarprofil Skicka privat meddelande Skicka e-post Besök användarens hemsida MSN Messenger
Haddock_99



Medlem i: 1296 dagar

Status: Offline



#740793
Inlägg Skrivet: 2016-05-27 08:48      Ämne: Citera

Hej! Ok. Miss av mig.
Snygga formateringen försvann när jag klistrade in koden. :-/

Iallafall står select korrekt i min kod. Det blev fel när jag "förenklade".
Jag avslutar PHP efter if-sats etts slut-klammer.

Det är meningen alltså att scriptet ska visa en DD först. Sen visas en ytterligare en DD m.h.a IF-sats ett. Så långt bra. Problemet är att AcceptButton åstadkommer ingenting. Det formuläret postar ingenting så andra IF-satsen blir aldrig uppfyllt. Det är som om den HTML-kod som PHP:n skickar är verkningslös! Det är bara nåt som visas på skärmen.

(IF-sats två innehåller ett ytterligare formulär med en SÄND-knapp men jag kan lika gärna ha nån utskrift där...istället startar web-sidan om genom att visa upp HTML-koden högst upp. Lixom en restart.)
 

_________________
Anställd på litet konsultföretag där det gäller att ro iland de jobb som vi får in. Inga misstag! Utmanande!
Till toppen på sidan
Visa användarprofil Skicka privat meddelande
harald_b
Moderator



Medlem i: 4920 dagar
Från: Tavesta
Status: Offline



#740797
Inlägg Skrivet: 2016-05-27 11:26      Ämne: Citera

Du har en </html> högt upp i koden, som antyder att något i kodstrukturen är galet.
Alla drop-down och skickaknappar borde nog vara i samma <form>, så allt data skickas tillsammans.
Gör ett nytt försök att visa din kod, med de råd som webbhelp gav.

Tänk på att php-skriptet körs från början till slut varje gång formuläret postas, och sidan renderas på nytt i webbläsaren från början till slut, som jag förklarade tidigare.
Exekveringen av php-skript tar aldrig paus och väntar på användarinput.
 

_________________
R.r - Ett fritt affärssystem
Till toppen på sidan
Visa användarprofil Skicka privat meddelande
Haddock_99



Medlem i: 1296 dagar

Status: Offline



#740798
Inlägg Skrivet: 2016-05-27 11:54      Ämne: Citera

OK! DET gav mig lite hintar som heter duga!

Den sista meningen säger "Exekveringen av php-skript tar aldrig paus och väntar på användarinput."
Menar du att alla if-satser körs kontinuerligt som en PLC typ?
Så tycker jag det verkar iaf...Formuläret skickar POST som i sin tur påverkar skriptet.
Jag ska prova under kvällen/helgen. Mycket intressant.
 

_________________
Anställd på litet konsultföretag där det gäller att ro iland de jobb som vi får in. Inga misstag! Utmanande!
Till toppen på sidan
Visa användarprofil Skicka privat meddelande
webbhelp



Medlem i: 4677 dagar
Från: Sverige
Status: Offline



#740800
Inlägg Skrivet: 2016-05-27 17:58      Ämne: Citera

Har du programmerat något annat språk innan?

För enkelt Förklarat, PHP körs på server.

Du besöker en sida, t.ex. en sida som google.com.
Servern tar emot dig först och kör php koden.
PHP koden skickar tillbaka en respons/ett svar till din webbläsare. Det vill säga HTML kod.
Där är det slut, nu finns det INGEN php kod som körs eller kommer att köras.
Nu sker resten i din webbläsare.

HTML och CSS avgör vad som syns på din webbläsare.
Javascript avgör vad för interaktiva funktioner som körs i din webbläsare. T.ex. coola popuprutor osv.
Men fortfarande din php kod kommer inte att köras mer nu.

Nästa gång PHP koden körs är när du besökaren skickar ett formulär, klickar på en länk eller något annat som gör att din sida laddas om så att servern får ett request/anrop igen som säger: "Kör php koden, generera HTML, skicka tillbaka till webbläsaren, webbläsaren renderar allt så att ditt grafikkort kan visa det på din skärm".

Så i ditt exempel.

Du kommer in på sidan. PHP genererar en dropdown.
När du sen klickar på submit knappen så skickas formuläret och nästa php kod körs igen, där den kollar om man har klickat på knappen och i så fall ska den visa annan html kod.

<form> gör att när man klickar på en submit knapp, så skickas alla input fält, select fält osv innanför <form></form> till servern, där PHP koden tar emot datan.

Det första du ska göra är att få i ordningen på dokumentet:


KOD:
1:
 
2:
<?php
3:
$message = '';
4:
if (isset($_POST['dd'])) {
5:
$message =  'Formuläret skickades och här är vad du valde: '. $_POST['dd'];
6:
}
7:
?>
8:
<html>
9:
<head>
10:
<title>Titel på sidan</title>
11:
</head>
12:
 
13:
<body>
14:
 
15:
<?php echo $message; ?>
16:
 
17:
<form method="post" action="">
18:
<select name="dd">
19:
<option value="tjo">Tjo</option>
20:
<option value="bye">Bye</option>
21:
</select>
22:
 
23:
<input type="submit" value="skicka" />
24:
</form>
25:
 
26:
</body>
27:
</html>
28:
 


Koden genererar ett formulär.
Och varje gång kollar PHP koden om det $_POST['dd'] finns, för det innebär att formuläret skickades och då lägger vi en text i variablen $message som sedan skrivs ner INNANFÖR <body> taggen där all din HTML kod ska förekomma.

Där är en snabb genomgång för hur flödet faktiskt funkar rent praktiskt och enkelt förklarat.
Allt går i olika steg, från webbläsare -> server -> php -> skickar tillbaka data till webbläsaren -> webbläsaren visar det för dig
 
Till toppen på sidan
Visa användarprofil Skicka privat meddelande Skicka e-post Besök användarens hemsida MSN Messenger
Haddock_99



Medlem i: 1296 dagar

Status: Offline



#740801
Inlägg Skrivet: 2016-05-27 18:41      Ämne: Citera

Tack!! Då förstår jag mer samspelet mer. Ja, jag har programmerat i 25 år ii C, Assembler, VB och Labview. Fuskat i HTML.
Jag inser nu att PHP körs en gång och en gång till om det blir ett till request eller att ett formulär med dess ingående data som ligger i en array. Då exikveras hela PHP-scriptet igen MEN utvalda delar (if-satserna) beroende på formulärets innehåll.

Hur scriptet funkar inser man kvickt egentligen för det finns ju ingen "loop" som rullar o går! Scriptet har en start och ett slut.
Det som jag uppfattade som att "alla IF-satser körs parallellt" är egentligen bara att scriptet är dött fram tills ett formulär (eller ett req) skickas. Det får mig att tänka om lite...Sidan är egentligen HTML-kod med insprängd PHP. Så kanske jag kan se det.

Jag ska ligga på soffan o grunna lite på det här. Det var ett bra svar du gav.

Jag har haft andra framgångar idag (så jag slipper våndas o fundera) vad gäller SPI och CAN på Raspberry Pi. Tro mig, jag är lättad. Nu är det å svälja detta med PHP o HTML....

Tack igen för ditt svar.
 

_________________
Anställd på litet konsultföretag där det gäller att ro iland de jobb som vi får in. Inga misstag! Utmanande!
Till toppen på sidan
Visa användarprofil Skicka privat meddelande
Haddock_99



Medlem i: 1296 dagar

Status: Offline



#740802
Inlägg Skrivet: 2016-05-28 15:56      Ämne: Citera

En fråga.
När submit-knappen trycks, skickas all formulärdata då via $_POST? Även de controller som inte man petat på, exvis en dropdown..
Jag tänker på isset(). I min värld (C) så borde en klick på Submit göra att alla data skickas med i arrayen $_POST.
 

_________________
Anställd på litet konsultföretag där det gäller att ro iland de jobb som vi får in. Inga misstag! Utmanande!
Till toppen på sidan
Visa användarprofil Skicka privat meddelande
harald_b
Moderator



Medlem i: 4920 dagar
Från: Tavesta
Status: Offline



#740803
Inlägg Skrivet: 2016-05-28 18:46      Ämne: Citera

Huruvida datat över huvud taget hamnar i $_POST beror på vad du angivit i method-attributet i form-taggen och att kontrollen har ett name-attribut.

I övrigt gäller följande:

input type checkbox och input type radio skickas ifall den är ikryssad
button, input type submit och input type image skickas om den klickats
övriga input, textarea och select skickas alltid när formuläret postas.

Om du ändrat värde i en kontroll så påverkar det i sig inte huruvida den skickas. Däremot kan krysset i en kryssruta eller klicket på en knapp påverka.
 

_________________
R.r - Ett fritt affärssystem
Till toppen på sidan
Visa användarprofil Skicka privat meddelande
Haddock_99



Medlem i: 1296 dagar

Status: Offline



#740812
Inlägg Skrivet: 2016-05-29 22:26      Ämne: Citera

Ok. Jag misstänker att det finns lite att studera här vad gäller action, submit och type. Knappen som är "submit" skickar formuläret men det bör ju finnas andra controls som skickar..jag anar att action har nåt att göra med det - eller type.

Nu måste få igång nån form av respons på kompilerings/körningsfel på PHP5. Nu kan inte sidan anropas om nån sats är fel men det finns ingen felrapportering till mig. Jag måste lusläsa koden. Kanske hittar nåt semikolon som fattas.
 

_________________
Anställd på litet konsultföretag där det gäller att ro iland de jobb som vi får in. Inga misstag! Utmanande!
Till toppen på sidan
Visa användarprofil Skicka privat meddelande
harald_b
Moderator



Medlem i: 4920 dagar
Från: Tavesta
Status: Offline



#740813
Inlägg Skrivet: 2016-05-30 02:07      Ämne: Citera

Felrapporteringen kan du ställa in i php.ini (/etc/php5/apache2/php.ini).
Där skall du ha:

error_reporting = E_ALL
display_errors = On
display_startup_errors = On

Sedan, när du kör skarpt, kan du sätta dessa till mer restriktiva värden.

Action-attributet talar om vilket php-script som formuläret postast till. Motsvarar href i vanliga länkar

Förutom input type submit så postas formuläret också när man klickar på input typ image och button. Om du trycker på enter i formuläret så motsvarar det ett klick på första input typ submit eller button.
Sedan kan du alltid skriva javascript som postar formuläret i en hel massa andra situationer.
 

_________________
R.r - Ett fritt affärssystem
Till toppen på sidan
Visa användarprofil Skicka privat meddelande
Haddock_99



Medlem i: 1296 dagar

Status: Offline



#740814
Inlägg Skrivet: 2016-05-30 08:09      Ämne: Citera

Ok. Tack.
Smile Jag har förstått att JavaScript tillför en ytterligare dimension av möjligheter. Jag anar att jag snart är där men jag undviker medvetet det för tillfället.

En annan sak jag funderar på är hur jag ska redirecta output från C-koden som ligger o rullar på min Raspberry? Jag styr den att utföra vissa saker via scriptet och det fungerar utmärkt (det är just det jag jobbat med under helgen). Nu ska dock C-programmet skicka tillbaks nåt till etho-porten och ut på skärmen. Startar jag programmet med ett PHP-script funkar det bra med "printf()" i koden. Det kommer ut på skärmen. Men nu startar jag programmet från Terminalen och printf() hamnar följdaktigen i just terminalfönstret - men jag vill ha upp texten på skärmen där gränssnittet mot operatören är. Har kollat under /dev men inte riktigt fattat galoppen. Ska man skriva sudo ./xxx >> [port]? Eller ska jag använda fprintf([stream], .....) i koden ist.
Tacksam för hjälp. Kanske borde vara en annan tråd men jag MIN MAMMA GÅR I ARMÉKÄNGOR STORLEK 48 jag slösar på trådar så det räcker.
 

_________________
Anställd på litet konsultföretag där det gäller att ro iland de jobb som vi får in. Inga misstag! Utmanande!
Till toppen på sidan
Visa användarprofil Skicka privat meddelande
Visa tidigare inlägg:   
Skapa nytt inlägg   Svara på inlägget Gå till sida 1, 2  Nästa
PHPportalen Forum Index » PHP Mjukstart
Hoppa till:  
Du kan inte skapa nya inlägg i det här forumet
Du kan inte svara på inlägg i det här forumet
Du kan inte ändra dina inlägg i det här forumet
Du kan inte ta bort dina inlägg i det här forumet
Du kan inte rösta i det här forumet
Du kan inte bifoga filer i detta forum
Du kan inte ladda ner filer från detta forum
Kontakta oss på adressen: info@phpportalen.net
Webbplatsen bygger i grunden på phpBB © 2001, 2002 phpBB Group

Modifieringar har senare gjorts i systemet av PHPportalen
Sid och logotypdesign skapad av Daren Jularic