Avatar billede jd Nybegynder
02. oktober 2000 - 16:30 Der er 14 kommentarer og
2 løsninger

javascript og php ?

Hejsa..

Jeg har en form i et php-script, som har en target... Jeg er nu stødt på det problem, at target på formen skal være bestemt af brugerens valg i en select-box.
Altså... hvis brugere har valgt den option der har værdien 1, skal target på formen være \'bla\', ellers skal den være \'alb\'! :O)

Dette skal helst ske uden at siden reloades, men hvis der ikke er nogen der kan knække nøden, må jeg nøjes med noget der reloader for at sætte target, fx. via en php-variable.

Mvh. Jonas Delfs
Avatar billede dino-cjp Nybegynder
02. oktober 2000 - 17:30 #1
Noget ala dette kan bruges:

<form name=\"form\" target=\"\">

<select name=\"sel\" onchange=\"document.form.target=this.value\">
    <option value=\"\" SELECTED></option>
    <option value=\"_blank\">_blank</option>
    <option value=\"_self\">_self</option>
    <option value=\"_top\">_top</option>
</select>
<input type=\"submit\">
</form>
Avatar billede jd Nybegynder
02. oktober 2000 - 21:53 #2
dino-cjp-> hmm... idéen er såmænd god nok, problemet er bare at value for de forskellige option\'s, ikke må være fx. _blank, da valuen skal bruges i php-scriptet! Valuen kan fx. være \'Jonas\'
Altså, der skal være et eller anden der siger at hvis værdien af den valgte option er 1, så skal target være \'main\', ellers (ved alle andre værdier) skal target være \'pain\'...

Det skal nok laves med javascript da siden helst ikke skal reloades for at target stilles!

/Jon@z
Avatar billede dino-cjp Nybegynder
03. oktober 2000 - 09:33 #3
Det skal nok ligne dette (jeg har ikke testet det):

<SCRIPT>
target = new Array();
target[0] = \"_parent\";
target[1] = \"main\";
target[2] = \"pain\";
target[3] = \"pain\";
target[4] = \"pain\";
target[5] = \"_top\";
</script>

<form name=\"form\" target=\"\">

<select name=\"sel\" onchange=\"document.form.target=target[document.form.sel.value]\">
    <option value=\"0\" SELECTED></option>
    <option value=\"1\">åbner main</option>
    <option value=\"2\">åbner pain</option>
    <option value=\"3\">åbner pain</option>
    <option value=\"4\">åbner pain</option>
    <option value=\"5\">åbner _top</option>
</select>
<input type=\"submit\">
</form>
Avatar billede jd Nybegynder
17. oktober 2000 - 17:54 #4
Du må undskylde at jeg har været lidt væk...

Dit sidste bud kan heller ikke det det skal, for som nævnt ovenfor kan værdien være \'Jonas\', eller \'benni\' for den sags skyld...

/Jon@z
Avatar billede dino-cjp Nybegynder
17. oktober 2000 - 18:41 #5
Jamen så forstår jeg det ikke helt ??

hvad med:

<SCRIPT>
target = new Array();
target[\'jonas\'] = \"_parent\";
target[\'benni\'] = \"main\";
target[\'allan\'] = \"pain\";
target[\'rut\'] = \"pain\";
target[\'bummer\'] = \"pain\";
target[\'reb\'] = \"_top\";
</script>

<form name=\"form\" target=\"\">

<select name=\"sel\" onchange=\"document.form.target=target[document.form.sel.value]\">
    <option value=\"jonas\" SELECTED></option>
    <option value=\"benni\">åbner main</option>
    <option value=\"allan\">åbner pain</option>
    <option value=\"rut\">åbner pain</option>
    <option value=\"bummer\">åbner pain</option>
    <option value=\"reb\">åbner _top</option>
</select>
<input type=\"submit\">
</form>
Avatar billede jd Nybegynder
17. oktober 2000 - 20:42 #6
nej, heller ikke! Problemet er at jeg kender ikke navnene! Det skal bruges til en chat, og jeg kan jo ikke hele tiden sidde og rette i javascriptet, bare fordi der kommer en ny ind i chatten! :o)

Jeg har selv leget lidt med følgende, men der kommer en fejl: \"document.sender.til er ikke et objekt\"!-hvorfor?

<script language=\"JavaScript\">
<!--
var valUe = document.sender.til.value;
if(valUe = \"chat.txt\"){
var tarGet = \"main\";
}
else{
var tarGet = \"privat\";
}
// -->
</script>

<select size=\"1\" name=\"til\" onchange=\"document.sender.target=tarGet\">

<option value=\"chat.txt\" selected>Alle</option>
<?
$handle = opendir(\".\");
while($hold = readdir($handle)) {
if (strstr($hold, \".chatter\")) {
$split = split(\"\\.\", $hold);
echo \"<option value=\\\"\".$split[0].\".\".$split[1].\"\\\">\".$split[0].\"</option>\\n\";
}
}
closedir($handle);
?>
</select>

Det php-kode i midten, skal du ikke bruge til noget! Men det udskriver fx. dette hvis brugeren Jonas er logget ind som den eneste:

<option value=\"Jonas.chatter\">Jonas</option>

/Jon@z
Avatar billede dino-cjp Nybegynder
18. oktober 2000 - 09:36 #7
Dette burde virke!

Men det hjalp virkelig med forståelsen af problemet da jeg så din kode :)


<script language=\"JavaScript\">
<!--
function NTarget(valUe);
if(valUe = \"chat.txt\"){
return \"main\";
}
else{
return \"privat\";
}

// -->
</script>

<form name=\"sender\">

<select size=\"1\" name=\"til\" onchange=\"document.sender.target=NTarget(this.value)\">  // hvis \"this.value\" ikke virker så prøv med: \"document.sender.til.value\"

<option value=\"chat.txt\" selected>Alle</option>
<?
$handle = opendir(\".\");
while($hold = readdir($handle)) {
if (strstr($hold, \".chatter\")) {
$split = split(\"\\.\", $hold);
echo \"<option value=\\\"\".$split[0].\".\".$split[1].\"\\\">\".$split[0].\"</option>\\n\";
}
}
closedir($handle);
?>
</select>

</form>
Avatar billede jd Nybegynder
18. oktober 2000 - 12:33 #8
jaaaeee... nu er vi ved at være der! Men ikke helt, for jeg får en fejl! Jeg får at vide at der er fejl på linie 28 tegn 24! Linie 28 ser sådan ud:

elseif(!file_exists($navn.\".chatter\") && $navn){ ?

Hvis jeg ændrer javascript funktionen så den ser sådan ud:

<script language=\"JavaScript\">
<!--
function NTarget(valUe){
if(valUe = \"chat.txt\"){
return \"main\";
}
else{
return \"privat\";
}
}
// -->
</script>

-så får jeg ingen fejl, men target siden åbnes i sender framen, hvis man vælger \'Alle\', men hvis man vælger en person, åbnes det i main!??

/Jon@z
Avatar billede dino-cjp Nybegynder
18. oktober 2000 - 12:56 #9
Det med funktionen er rigtig nok, det var bare mig der havde glemt  {}, men det er svært at overskue koden når man skriver i så lille en vindue :)

Men den linie fejl IE melder kan du ikke regne med.. hvis den siger linie 28 kan det sagtens være langt derfra..

??? Hvilke værdier kommer der fx. til at stå i vælgeren og hvilke værdier skal åbnes i main og hvilke skal åbnes i privat??
Avatar billede jd Nybegynder
18. oktober 2000 - 19:47 #10
Værdierne:

chat.txt
Jonas.chatter
Palle.chatter

Og som nævnt længere oppe, skal alt undtagen chat.txt åbnes i main!

Jeg har selv leget lidt videre, se evt. på dette:

<script language=\"JavaScript\">
<!--
function NTarget(){
var valUe = document.sender.til.value;
if(valUe = \"chat.txt\"){
var tarGet = \"main\";
}
else{
var tarGet = \"privat\";
}
document.sender.target=tarGet;
}
// -->
</script>

Og så har jeg sat onload=\"NTarget()\" og onchange=\"NTarget()\" i <select...

Ved ikke om min idé overhovedet kan udføres, men det var bare et lille forsøg!

/Jon@z
Avatar billede dino-cjp Nybegynder
19. oktober 2000 - 09:16 #11
Det ser ok ud!
Avatar billede jd Nybegynder
19. oktober 2000 - 16:23 #12
men det virker ikke! Hvis man vælger Alle, åbnes siden i samme frame, ellers åbnes den i main! ?

/Jon@z
Avatar billede dino-cjp Nybegynder
19. oktober 2000 - 16:32 #13
hvis den skelner, vil det sige at if sætningen virker... har du checket om alle frames hedder det rigtige, og at der ikke er to med samme navn?
Avatar billede jd Nybegynder
19. oktober 2000 - 16:41 #14
Mit frameset:

<frameset rows=\"26,*,64\" frameborder=\"1\">
  <frame name=\"top\" scrolling=\"no\" noresize target=\"indhold\" src=\"top.php3\">
  <frameset cols=\"35%,*\">
    <frame name=\"privat\" target=\"hovedramme\" src=\"main.php3?type=privat&navn=<? echo $navn; ?>\">
    <frame name=\"main\" src=\"main.php3?navn=<? echo $navn; ?>\">
  </frameset>
  <frame name=\"sender\" scrolling=\"no\" noresize target=\"indhold\" src=\"sender.php3?navn=<? echo $navn; ?>\">
  <noframes>
  <body>
  <font size=\"2\" face=\"verdana\">Dette er en chat! -og sådan en bruger frames, men det understøtter din browser ikke!! :o(</font>
  </body>
  </noframes>
</frameset>
<frame name=\"logout\" src=\"logout.php3?navn=<? echo $navn; ?>\">
</frameset>

Jeg postede det egenligt bare fordi jeg ikke ved om den skjulte frame er rigtig..?

Hvad er forskellen egentlig på

if(valUe = \"chat.txt\"){

og så

if(valUe == \"chat.txt\"){ ?

/Jon@z
Avatar billede dino-cjp Nybegynder
20. oktober 2000 - 09:52 #15
damn.. det er nok der fejlen ligger

b=1 sætter b til 1

b==1 er enten true (hvis b er 1) eller false (hvis b ikke er 1)...

Og som hovedregel skal man (næsten) altid bruge \"==\" i if sætninger.... men jeg havde helt overset det fra starten... det er nok det der er fejlen.
Her skal det være \"==\".
Avatar billede jd Nybegynder
28. oktober 2000 - 16:52 #16
Det virker ikke helt, men du for lidt points for din tid...

Har oprettet et nyt spørgsmål http://www.eksperten.dk/spm/30772

/Jon@z
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