codemaker pomagaj! javascript

loopless

Obećava
Poruka
54
Pravim novu narudzbenicu i imam ogroman problem.

Preuzeo sam neki javascript kod kakav meni treba ali nije bas u potpunosti funkcionalan, tako da mi treba pomoc.

Evo link da vidis o cemu se radi.

http://parfemi.net/narudzbina2.php

E sad kad se prebacuje sadrzaj iz levog polja u desni kako da dobijem da taj sadrzaj ipak ostane i na levoj strani, a ne da ga tu vise nema.

Ovo mi treba jer ako neko hoce da naruci dva ista parfema on onda nema mogucnost da ga ponovo izabere.

Da li je moguce ovo sto meni treba.

Evo ga u prilogu kod koji ide u HEAD , da bi video kako to radi.

Jel moze tu da se doda jos koja linija koda pa da ostane izabrano i u levom polju?

Nadam se da nije previse zamarajuce ovo sto trazim. :roll:
Hvala puno i pozz :!:
loop :wink:
 

Prilozi

  • script.txt
    2,4 KB · Pregleda: 5
loopless:
Pravim novu narudzbenicu i imam ogroman problem.

Preuzeo sam neki javascript kod kakav meni treba ali nije bas u potpunosti funkcionalan, tako da mi treba pomoc.

Evo link da vidis o cemu se radi.

http://parfemi.net/narudzbina2.php

E sad kad se prebacuje sadrzaj iz levog polja u desni kako da dobijem da taj sadrzaj ipak ostane i na levoj strani, a ne da ga tu vise nema.

Ovo mi treba jer ako neko hoce da naruci dva ista parfema on onda nema mogucnost da ga ponovo izabere.

Da li je moguce ovo sto meni treba.

Evo ga u prilogu kod koji ide u HEAD , da bi video kako to radi.

Jel moze tu da se doda jos koja linija koda pa da ostane izabrano i u levom polju?

Nadam se da nije previse zamarajuce ovo sto trazim. :roll:
Hvala puno i pozz :!:
loop :wink:

Prvo proveri CRVENI red koda. Nije mi jasno zasto nuliras iz "sel" liste nakon izbora?
Kod:
if (SelectedIndex == -1) {
    alert("Molim Vas izaberite proizvod.");
  } else {
    for (i=0; i<SelectFrom.options.length; i++) {
      if(SelectFrom.options[i].selected) {
        var name = SelectFrom.options[i].text;
        var ID = SelectFrom.options[i].value;
        [color=Red]SelectFrom.options[i] = null;[/color]
        SelectTo.options[SelectTo.options.length]=new Option (name,ID);
        i=i-1;
        if(ToDo=='Add'||ToDo=='Remove') {
          container.value=container.value+name+delimiter;
          //container.value=container.value+ID+delimiter;
        }
      }
    }
}
 
Aha, samo sam izbrisao taj jedan redak i sad mi ostaje u levog polju, medjutim onda nece da se izbrise iz desnog polja, ali uspeo sam sam da se snadjem, da se iz desnog polja brise, tako sto sam mu dodao jos jedan zadatak u function MoveOption, i taj zadatak primenio na button i to je to.

Medjutim treba mi jos samo ovo:

Kako da ubacim da kad se prebaci u desno polje da se umetne medju

<option value="pa ono sto je prebaceno">pa ono sto je prebaceno</option>

Jer ako u desno polje prebacim 3 stavke, na mail mi stize samo ona koja je prva ubacena, a ostalih nema.

Da li to moze da se nabudzi?
 
Da bi forma poslala sve izabrane elemente SELECT liste, napravi u tagu FORM da prilikom submit akcije pozove i funkciju:
<FORM blabla.... onSubmit="IzaberiSve()">

Ta funkcija ce da proglasi sve elemente sa desne liste (dakle ono sto je korisnik kao izabrao od parfema) TRUE i prilikom slanja forme ce preneti SVE elemente a ne samo onaj koji je TRUE jedini. Mislim da ti se desna lista zove "sel" pa sam je ovde tako i napisao...


Kod:
 function IzaberiSve()
{
  Lista = document.forms[0].sel;
  for (i=0;i<Lista.length;i++)
  {
     Lista.options[i].selected = true;
  }
}
 
Bas tako sam i uradio, medjutim salje mi na mail samo zadnjeod onoga sto je ubaceno u sel polje.

Pretpostavljam da je to zato sto sam u narucimail.php upisao izmedju ostalog

Izabrano: $sel

da bi mi prosledilo te podatke ali posto toga ima vise trebalo bi da se upise $sel[] , medjutim on mi izbacuje gresku, kaze da ne je zatvorena zagrada ] neocekivana.

Nije mi jasno kako onda da ja izlistam sve sto je u sel polju?
 
Da bi preneo sve selektovane vrednosti onda moras da imas ovako nesto:

Kod:
<select name="sel[]" size="17" multiple id="sel">

Obrati paznju na name="sel[]"

Kasnije u php fajlu

Kod:
print_r($_POST[sel]);


Pa mozes da koristis For ili ForEach petlju da dobijes sve sto ti treba :)


I mora da radi...

Poz
sale
 
Pa sasvim jednostavno nisam tu nista komplikovao:

Svako polje ime ima svoje ime i unos iz tog polja mi stize na mail tako sto pozovem promenjljivu sa tim imenom.

Npr.

Ime: $ime
Email: $mail
Ulica: $ulica
...

i on mail salje ono sto je upisano u ta polja.

Medjutim kad pozovem

Izabrano : $sel

ono mi izbacuje samo ono sto je zadnje u polju sel

Probao sam i ovo sto je Sale rekao ali onda mi izbacuje samo Array.
 
loopless:
Pa sasvim jednostavno nisam tu nista komplikovao:
Svako polje ime ima svoje ime i unos iz tog polja mi stize na mail tako sto pozovem promenjljivu sa tim imenom.
Npr.

Ime: $ime
Email: $mail
Ulica: $ulica
...
i on mail salje ono sto je upisano u ta polja.
Medjutim kad pozovem
Izabrano : $sel
ono mi izbacuje samo ono sto je zadnje u polju sel
Probao sam i ovo sto je Sale rekao ali onda mi izbacuje samo Array.

Ne znam sta da ti kazem, evo bazicnog primera kako treba da bude, sigirno radi:

HTML DEO:
Kod:
<form action="
<select name=[color=Red]"test[]"[/color] multiple="multiple">
	<option value="jedan">jedan
	<option value="dva">dva
	<option value="tri">tri
	<option value="cetiri">cetiri
	<option value="pet">pet
</select>
<input type="submit" value="Salji vise" />
</form>

PHP DEO
Kod:
<?php
	$test=$_POST['test'];
	if ($test){
	 foreach ($test as $t){
		   echo 'LOOP izabrao ',$t,'<br />';
	 }
	}
?>
 
Potrebno je da prvo taj array pretvoris u string , pa tek onda da posaljes na mail
PHP:
$sel = $_POST['sel'];

foreach ($sel as $artikal) {
$poruka .= $artikal . '<br />';
}

Otprilike nesto ovako bi trebalo.

Kasnije u mail() pozoves $poruka koji vise nije array vec string sa clanovima niza.
 
To sam mu i ja rekao, samo nisam napisao to za stvaranje stringa, jer bi valjda trebalo da se podrazumeva.
Ako ni to ne bi znao, morao bi onda mnogo vise da kopa po JS nego ovako. Predpostavio sam da bas nije neki potpuni JS pocetnik. Jasno je da poruka "echo 'LOOP izabrao'" nije bas nesto korisno :)
 
<form action="...">
<select name="test[]" multiple="multiple">
<option value="jedan">jedan
<option value="dva">dva
<option value="tri">tri
<option value="cetiri">cetiri
<option value="pet">pet
</select>
<input type="submit" value="Salji vise" />
</form>

E toga nema u mom kodu jel ne znam kako da i to ubacim, on meni iz leve forme u desnu prebacuje samo
<select name="test[]" multiple="multiple">
jedan
dva
tri
cetiri
pet
</select>

Kako da ubacim i to u desno polje?
 
loopless:
E toga nema u mom kodu jel ne znam kako da i to ubacim, on meni iz leve forme u desnu prebacuje samo


Kako da ubacim i to u desno polje?
E yebiga loop, od kad te znam, umes da zamrsis pitanje, odgovor, resenje i rezultat :)
Sada mi nista nije jasno:
1) Da li ti uopste prebacuje iz levog u desni SELECT? Kakos am te razumeo u gornjim odgovorima, to si resio.
2.) Ako u PHP dosledno uradis sto sam ti savetovao a primenis varijablu umesto "echo" komande (ja sam pokazao logiku a taksista ti je konkretizovao), MORA da moze, sto ti je i Sale napisao.
3.) Da li ti imas PHP deo uglavljen unutar HTML fajla ili pozivas PHP kao posebni fajl, kad forma prenosi podatke? To pitam jer nije isti deo koji opisuje <FORM> tag, za prenos u PHP kod ako je PHP unutar HTML ili je poseban fajl...

Sve u svemu, efikasno si uspeo da me zbunis, pa se nadam da ce neko ovde moci da to razmrsi, ja sam popio dva bensedina i odlezao 15 minuta mirno, pre nego sto sam pokusao ponovo da shvatim sta se desava. bez rezultata :(
 
Evo sad cu sve ponovo, natanane.

Imam HTML dokumenat.

To je narudzbina2.php

Iz njega se preko POST salje u narucimail.php a to je php kode koji salje mail sa dobijenim promenjljivima.
PHP:
<?php
$sel = $_POST['sel']; 
foreach ($sel as $artikal) { 
$porudzbina = $artikal . '<br />'; 
}

$poruka="Izabrano: $porudzbina \n";


mail($receiver,$subject,$poruka,"From: $ime\r\n" .
"Reply-To: $mail\r\n" .
"X-Mailer: PHP/" . phpversion());


?>

A HTML code je
HTML:
<select name="sel[]" size="17" multiple id="sel">                     <option value="---------------------">---------------------------</option>                    </select>

I dobijam mail.

Izabrano: 55. Very Irresistible - Givenchy<br />

Znaci lista mi samo ovo zadnje,a one prethodno izabrane nece.

To je naverovatnije zbog toga sto iz levo polja ne salje

<option value=""></option>

To treba da se ubaci u <head> medju java script

Ovde negde ali ne znam tacno gde?
 
loopless:
Evo sad cu sve ponovo, natanane.

Imam HTML dokumenat.

To je narudzbina2.php

Iz njega se preko POST salje u narucimail.php a to je php kode koji salje mail sa dobijenim promenjljivima.

$sel = $_POST['sel'];
$porudzbina = implode(",", $sel);
//foreach ($sel as $artikal) {
//$porudzbina = $artikal . '<br />';

//}

$poruka="Izabrano: $porudzbina \n";


mail($receiver,$subject,$poruka,"From: $ime\r\n" .
"Reply-To: $mail\r\n" .
"X-Mailer: PHP/" . phpversion());

Izvrsi izmene pa ces u varijabli "$porudzbina" imati string koji ce sadrzati sve sto je preneseno i izabrano u HTML
Onako kako si ti radio (plavi deo koda) je samo jedan array element smestio u variablu "$porudzbina" i to ZADNJI.
 
E sad radi kako treba.
Eto bas davno nisam radio nista oko php-a i moram priznati da sam se bio zagubio :roll:

U svakom slucaju ogrmono hvala code
big_smile.gif


ali i salu i taksisti na odvojenom vremenu!

victory.gif
Victory!
 
taksistaZR:
Potrebno je da prvo taj array pretvoris u string , pa tek onda da posaljes na mail

$sel = $_POST['sel'];

foreach ($sel as $artikal) {
$poruka .= $artikal . '<br />';
}

Otprilike nesto ovako bi trebalo.

Kasnije u mail() pozoves $poruka koji vise nije array vec string sa clanovima niza.

Na momenat si me zbunio :)
Ovako kako je petlja napisana, kao rezultat se dobija varijabla koja sadrzi samo POSLEDNJI element u nizu iz array ($sel) a ne sve elemente iz $sel
 
codemaker:
Na momenat si me zbunio :)
Ovako kako je petlja napisana, kao rezultat se dobija varijabla koja sadrzi samo POSLEDNJI element u nizu iz array ($sel) a ne sve elemente iz $sel

To sto sam napisao bi trebalo da je ok , doduse nisam isprobao, a u njegovom kodu je vracalo samo zadnji clan niza posto je izostavio jednu veoma bitnu tacku...

moje:
Kod:
 $poruka[COLOR=Red] .= [/COLOR] $artikal . '<br />';

loop:
Kod:
$poruka [COLOR=Red]=[/COLOR] $artikal . '<br />';
 
U PHP-u kad hoces da dodas jednu znakovnu vrednost pored druge pises tacku

Kod:
 $poruka =  $poruka . $artikal ;

Skracena verzija toga je :

Kod:
 $poruka .=  $artikal ;

Znaci kad nema tacke $sel protrci kroz petlju, promeni se onoliko puta koliko imas izabranih artikala i zapamti se poslednji.

Kad stavis tacku na prvi artikl se dodaje drugi , pa treci ... i sve to onoliko puta koliko imas izabranih artikala
 
loopless:
Zasto je ta tacka bila bitna?
Kod tebe je kod napisan da se kreces kroz petlju. Prilikom svake iteracije, zadata varijabla prima vrednost tekuceg elementa u nizu. Sledeca iteracija prouzrokuje da varijabla sadrzi vrednost sledeceg elementa u nizu.
Kad stignes do kraja, varijabla sadrzi samo vrednot poslednjeg elementa u nizu. To naravno zbog toga jer si za svaku iteraciju dodeljivao varijabl vrednost elementa i pri tome gubio prethodnu vrednost sadrzanu u varijabli.
Tebi je trebalo da varijabla koja prima elemente niza "raste" tom jest da se vrednosti "lepe" jedna za drugu i prave sve veci string.
To treba da radi ono sto ti je taksista napisao.

$poruka .= $artikal ;

jedino sto mislim da je pravilno bez znaka jednako:
$poruka . $artikal ;

U svakom slucaju, u ovakvim primerima, mnogo je zgodnije koristiti funkciju "implode()" koja sve elemente niza lepo poslaze u jedan string i pri tome ih razdvoji znakom koji sam izaberes (u mom primeru je to zarez, a moglo je biti i "-" ili"@" ili *", sta god)
 

Back
Top