Avatar billede NielsErikP Mester
08. juni 2011 - 15:51 Der er 27 kommentarer og
1 løsning

Select options/Javascript/php..!!

Hej..
Jeg har lavet noget Html....
En form med nogle input felter, en select med options.
Nu vil jeg så gerne igang med at skrive noget Javascript/php, der gør at inputtet og valget af options kan bruges til noget.
Nogle der har nogle gode link til, hvorledes man gør den  slags brugbart.

På forhånd tak..!!
Avatar billede jakobdo Ekspert
08. juni 2011 - 15:53 #1
Kommer jo an på hvad du mener der skal ske med din kode.
Avatar billede NielsErikP Mester
08. juni 2011 - 18:08 #2
Hej..
Jeg har det sidste års tid leget med/lært Html/Css nogenlunde.
Så ville jeg gerne igan med PHP, men kunne de fleste steder forstå at næste skridt var Javascript. Og det har jeg så prøvet at kigge lidt på.
Men det jeg har gjort i Html/Css'en er at opbygge en form med nogle input felter til at indtaste :
Fornavn, efternavn, email, og gentag email.
Så har jeg oprettet 4 select lister, hvor man kan vælge  :
Køn, dag man er født, måned man er født, og års tal.
Så er der på formen lige ledes en "input type="submit" value="Gem", altså en knap.
Det jeg søger at komme til at lære noget om er, hvordan jeg får de oplysninger, og valg der vælges til at blive gemt, når der trykkes på "knappen" Gem.
Altså en bruger form.
Avatar billede jakobdo Ekspert
08. juni 2011 - 18:29 #3
Hvis du har din form på en side (det kan sagtens samles på en side det hele, men lad os holde det adskilt til at starte med).

Så har du i toppen:

<form action="side_som_skal_gemme_dine_info.php" method="post">
DIN FORM...
<input type="submit" name="save_info" value="Gem Info" />
</form>

På siden: side_som_skal_gemme_dine_info.php

Kan du starte med at lave:

<?php
if(isset($_POST['save_info'])){
  echo '<pre>';
  print_r($_POST);
  echo '</pre>';
}
?>

Så vil du se alle info sendes ligesom almindelig form elementer, også dine selects.
Så dette har som sådan intet med Javascript at gøre.
Det er ren html, css og php.

At man så kan lave mange smarte ting med javascript (js) er en anden side af sagen.
Avatar billede NielsErikP Mester
08. juni 2011 - 18:47 #4
Hej..
Fedt mand.. endelig noget brugbart,
Men jeg må spørge, vil du røbe, hvor man bliver klogere på "isset" , "$_POST" og "print_r"... For man skal jo ligesom forstå det for at kunne arbejde videre med det.
Men du mener altså jeg godt kan klø på med PHP'en igen.
Avatar billede jakobdo Ekspert
08. juni 2011 - 18:56 #5
isset() tester bare om der er noget i variablen...

$_POST er php håndtering af variabler der kommer via POST.

Jeg angav post via:

<form .... method="post"

Det kunne også være $_GET, så kunne de komme via url:

url.php?var=noget&var2=andet

$_GET['var']
$_GET['var2']

print_r() printer blot indholdet af en variabel på en "pæn" måde.

Men slå evt. alle op på http://dk.php.net
Avatar billede NielsErikP Mester
08. juni 2011 - 20:28 #6
Hej...
Nu har jeg prøvet dit forslag, kan squ ikke få det til at virke, heller ikke selvom jeg ligger html filen med formen i Xammp\htdocs.. Når jeg trykker på kanppen "Gem" viser Internet eXplorer bare dette på skærmen  :

<?php
if(isset($_POST['save_info'])){
  echo '<pre>';
  print_r($_POST);
  echo '</pre>';
}
?>
Avatar billede jakobdo Ekspert
08. juni 2011 - 20:33 #7
Og du gemmer filen som:

NAVN.php ?
Avatar billede NielsErikP Mester
08. juni 2011 - 22:09 #8
Hej..
Jeg har min form:

<form id="FlytForm" action="OpretBrugerForm.php" method="post">

Jeg har min "submit" knap  :

<input type="submit" name="Opret_Bruger_Info" value="Gem" id="knap_pos" class="knap_str"/>

Jeg opretter min php fil og skriver :

<?php
if(isset($_POST['Opret_Bruger_Info'])){
  echo '<pre>';
  print_r($_POST);
  echo '</pre>';
}
?>

Gemmer php filen som "OpretBrugerForm.php" i c:\xammp\htdocs\...

Kører MinHtml.html. og når jeg så trykker på knappen "Gem", skriver IE9  :

<?php
if(isset($_POST['Opret_Bruger_Info'])){
  echo '<pre>';
  print_r($_POST);
  echo '</pre>';
}
?>

på skærmen.
Avatar billede jakobdo Ekspert
08. juni 2011 - 22:11 #9
Er du sikker på php er aktiveret på din xammp ?
Avatar billede NielsErikP Mester
08. juni 2011 - 22:29 #10
Hej..
Ja det køre fint med en fil :
  http://localhost\test.php

Så hvad kan det så skyldes..
Ser det rigtig nok ud, det jeg skrev i #8..??
Avatar billede jakobdo Ekspert
08. juni 2011 - 22:31 #11
Ja, det ser korrekt ud...
Så forstår desværre ikke hvad der går galt.
Avatar billede NielsErikP Mester
08. juni 2011 - 22:41 #12
Hej..

Kan det være noget med det der Xammp, når jeg skal køre test.php..
Skal jeg i IE starte med at skrive "localhost\test.php...

DEt gør jeg jo ikke i dette eksempel
Avatar billede jakobdo Ekspert
08. juni 2011 - 22:50 #13
Men ligger din php fil ikke samme sted som din html ?
Og ligger filerne ikke på din xammp server ?
Avatar billede NielsErikP Mester
08. juni 2011 - 23:22 #14
Hej..

Nej.. Da jeg skulle til at prøve at sætte mig ind i php..hentede jeg pakke xampp med MySql,Apache og php i..
Jeg installerede det på lokal computeren.. Og fik så at vide at de php filer der skulle køres skulle ligge i min xampp mappe og i under mappen htdocs... Så skulle man køre en fil skulle man starte sin browser og skrive localhost\"navnet på php fil".php..
Så jeg er ikke på en server, men kører det localt på computeren.
Men skulle man angive "localhost" i kaldet, har du så en ide om, hvor det skal forekomme...???
Avatar billede jakobdo Ekspert
08. juni 2011 - 23:26 #15
Har du lagt din html-fil og din php-fil ind i mappen:
xammp/htdocs ?

Hvis ja, så åben din browser og gå til:

http://localhost/HTML-fil.html
Avatar billede NielsErikP Mester
09. juni 2011 - 00:04 #16
Hej..
Ja..nu virker det.. måtte også kopiere mine form billeder over i C:\xampp\htdocs..
Men kan man lave undermapper der, sådan at det stadig virker???

i #3 sagde du lad os starte med..!!

Hvordan kommer man så videre, mener kan man teste om nogle af felterne eller valgene ikke er udfyldt og så starte forfra.

Er det $_POST man bruger til det..???
Avatar billede jakobdo Ekspert
09. juni 2011 - 08:30 #17
Du kan godt lave en undermappe i mappen htdocs ja.

Du kan evt. teste om felterne er udfyldt med php.

f.eks. fornavn:

if(isset($_POST['fornavn']) && strlen($_POST['fornavn'])>1){
echo 'Et fornavn skal være på mere end 1 bogstav';
}

Alternativt skal du kigge på js og jquery.validator
Avatar billede NielsErikP Mester
09. juni 2011 - 22:17 #18
Hej..
Det prøvede jeg så lavede en "Billed" mappe og kopierede mine .jpg billeder derover, men den opfører sig underligt nogen gange viser den billedet andre gange er der bare en firkant med kryds i.

Tak for din indføring i LIDT af php universet, dette er hvad jeg indtil nu har lavet :



<?php
$MinLength=1;
$MaxLength=30;

// Tjek på Fornavnet
if(isset($_POST['fornavn']) && strlen($_POST['fornavn']) <$MinLength){
echo '<pre>';
echo 'Feltet med fornavn skal udfyldes';
echo '</pre>';
}
if(isset($_POST['fornavn']) && strlen($_POST['fornavn'])==$MinLength){
echo '<pre>';
echo 'Et fornavn skal være på mere end 1 bogstav';
echo '</pre>';
}
if(isset($_POST['fornavn']) && strlen($_POST['fornavn'])>$MinLength && strlen($_POST['fornavn'])<$MaxLength){
echo '<pre>';
echo 'Fornavnet er udfyldt korrekt';
echo '</pre>';
}
if(isset($_POST['fornavn']) && strlen($_POST['fornavn'])>$MaxLength){
echo '<pre>';
echo 'Fornavnet er ugyldigt..!!';
echo '</pre>';
}

// Tjek på Efternavnet
if(isset($_POST['efternavn']) && strlen($_POST['efternavn'])<$MinLength){
echo '<pre>';
echo 'Feltet med Efternavn skal udfyldes';
echo '</pre>';
}
if(isset($_POST['efternavn']) && strlen($_POST['efternavn'])==$MinLength){
echo '<pre>';
echo 'Efternavnet skal være på mere end 1 bogstav';
echo '</pre>';
}
if(isset($_POST['efternavn']) && strlen($_POST['efternavn'])>$MinLength && strlen($_POST['efternavn'])<$MaxLength){
echo '<pre>';
echo 'Efternavnet er udfyldt korrekt';
echo '</pre>';
}
if(isset($_POST['efternavn']) && strlen($_POST['efternavn'])>$MaxLength){
echo '<pre>';
echo 'Efternavnet er ugyldigt..!!';
echo '</pre>';
}
switch ($_POST['sex']) {

    case 0 : {
        echo '<pre>';
        echo 'Du skal vælge dit køn..!!';
        echo '</pre>';
        break;
        }
    case 1 : {
        echo '<pre>';
        echo 'Du er kvinde af køn..!!';
        echo '</pre>';
        break;
        }
    case 2 : {
        echo '<pre>';
        echo 'Du er mand af køn..!!';
        echo '</pre>';
        break;
        }
    default:
        break;
}   
   
switch ($_POST['birth']) {

    case 0 : {
        echo '<pre>';
        echo 'Du skal vælge dagen du er født..!!';
        echo '</pre>';
        break;
        }
    default:  {
        echo '<pre>';
        echo 'Du er født d. '.$_POST['birth'].'.'.' i måneden';
        echo '</pre>';
        break;
        }
}       
switch ($_POST['mdr']) {

    case 0 : {
        echo '<pre>';
        echo 'Måneden du er født i skal udfyldes..!!';
        echo '</pre>';
        break;
        }
    case 1 : {
        echo '<pre>';
        echo 'Du er født i Januar måned';
        echo '</pre>';
        break;
        }
    case 2 : {
        echo '<pre>';
        echo 'Du er født i Februar';
        echo '</pre>';
        break;
        }
    case 3 : {
        echo '<pre>';
        echo 'Du er født i Marts måned';
        echo '</pre>';
        break;
        }
    case 4 : {
        echo '<pre>';
        echo 'Du er født i April måned';
        echo '</pre>';
        break;
        }
    case 5 : {
        echo '<pre>';
        echo 'Du er født i Maj måned';
        echo '</pre>';
        break;
        }
    case 6 : {
        echo '<pre>';
        echo 'Du er født i Juni måned';;
        echo '</pre>';
        break;
        }
    case 7 : {
        echo '<pre>';
        echo 'Du er født i Juli måned';
        echo '</pre>';
        break;
        }
    case 8 : {
        echo '<pre>';
        echo 'Du er født i August';
        echo '</pre>';
        break;
        }
    case 9 : {
        echo '<pre>';
        echo 'Du er født i September måned';
        echo '</pre>';
        break;
        }
    case 10 : {
        echo '<pre>';
        echo 'Du er født i Oktober måned';
        echo '</pre>';
        break;
        }
    case 11 : {
        echo '<pre>';
        echo 'Du er født i November måned';
        echo '</pre>';
        break;
        }
    case 12 : {
        echo '<pre>';
        echo 'Du er født i December måned';
        echo '</pre>';
        break;
        }
    default:  {
        break;
        }
}           
   
if(isset($_POST['Opret_Bruger_Info'])){
  echo '<pre>';
  print_r($_POST);
  echo '</pre>';
}
?>



Jeg har da et par tillægs spørgsmål, kan man "entrerer" select list navnet, altså sådan at den i $_POST['mdr'] case 6. skriver Juni, eller er man nød til at have alle de case'ses i
switch($_POST['mdr']) og så manuelt angive case 6  som Juni og case 7 som Juli osv...

Kan man på nogen måde ved :



if(isset($_POST['fornavn']) && strlen($_POST['fornavn']) <$MinLength){
echo '<pre>';
echo 'Feltet med fornavn skal udfyldes';
echo '</pre>';
}



Angive et kald til MinHtml.html, og så indsætte $_POST['fornavn'] i feltet 'fornavn' på html formen igen. Og så kun hvis betingelserne er opfyldt skal php filen køre  :



if(isset($_POST['Opret_Bruger_Info'])){
  echo '<pre>';
  print_r($_POST);
  echo '</pre>';
}



Hvis det er for mange spørgsmål til de 20 point du skal have må du jo lige ytre dig sådan vi kan finde ud af lidt flere.
Avatar billede NielsErikP Mester
10. juni 2011 - 17:17 #19
Hej..
Når der faldte man af i svinget.. Fint nok!
Så JAKOBDO!! tag lige og læg dit svar!!
Avatar billede jakobdo Ekspert
10. juni 2011 - 20:28 #20
Din php kode virker en smule uoverskuelig...
Det med det kommer en firkant og ikke selve billeder, prøv at tag stien på firkanten og se om der rent faktisk er et billede ved det navn?
Avatar billede NielsErikP Mester
10. juni 2011 - 20:53 #21
Hej..
Ja ja... Men husk på jeg er ny i faget, bliver måske klogere med tiden, når jeg lærer at tænke php. Men indtil da, Må de "HArdCore" jo så lige forklare hvad de mener, når de siger "UOVERSKUELIG". Hvor er der plads til forbedringer???

Det med billederne prøver jeg, men den viser dem jo hver tredie gang uden ændring af sti.
Avatar billede jakobdo Ekspert
10. juni 2011 - 22:13 #22
Du kunne smide månederne i et array.
Som f.eks.:

$month = array(
  1 => 'Januar',
  2 => 'Februar',
  3 => 'Marts',
  4 => 'April',
  5 => 'Maj',
  6 => 'Juni',
  7 => 'Juli',
  8 => 'August',
  9 => 'September',
  10 => 'Oktober',
  11 => 'November',
  12 => 'December'
);

if(in_array($_POST['mdr'],$month)){
  echo 'Du valgte: ' . $month[$_POST['mdr']];
}
Avatar billede NielsErikP Mester
10. juni 2011 - 22:44 #23
Hej..
Ja jeg sad lige og tænkte på det samme igår mrd et Array, men så mangler erfaringen jo..
Jamen.. jamen du er jo en af de "HardCore".

Tror det er tid til du skal have dine point Jakobdo San ;-)
Smider du lige et svar?
Avatar billede jakobdo Ekspert
10. juni 2011 - 23:13 #24
Svar!
Avatar billede NielsErikP Mester
11. juni 2011 - 10:24 #25
Hej...

Vil lige gøre dig opmærksom på at du i #22 manglede "isset"  :



if(in_array(isset($_POST['mdr']),$month)){
  echo 'Du valgte: ' . $month[$_POST['mdr']];
}



For at det virker. ;-)
Avatar billede jakobdo Ekspert
11. juni 2011 - 14:11 #26
Takker for poiont.
Det er ikke korrekt...

Så skal det være:

if(isset($_POST['mdr']) && in_array($_POST['mdr'],$month)){
  echo 'Du valgte: ' . $month[$_POST['mdr']];
}
Avatar billede NielsErikP Mester
11. juni 2011 - 23:29 #27
Hej..
Your welcome!!

Jamen... Jeg kan sige, at det eneste der gav mit ønskede resultat er  :



if (in_array(isset($_POST['mdr']),$_MDR)) {
    if ($_POST['mdr']==0) {
        echo '<pre>';
        echo $_MDR[$_POST['mdr']];
        echo '</pre>';
    }
    else {
        echo '<pre>';
        echo 'Du er født i '. $_MDR[$_POST['mdr']].' måned.';
        echo '</pre>';
    }
}




Og at følgende intet udskrift gav "at all"  :



if(in_array($_POST['mdr'],$_MDR)){
  echo 'Du valgte: ' . $_MDR[$_POST['mdr']];
}



Håber du så kan forklare, hvad der sker, og om det jeg laver med "isset", er lovlig programmering osv..??
Avatar billede jakobdo Ekspert
13. juni 2011 - 19:13 #28
Det kan jeg ikke få til at passe...
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
Kurser inden for grundlæggende programmering

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