Avatar billede nemlig Professor
21. oktober 2011 - 23:29 Der er 19 kommentarer og
1 løsning

Javascript værdi til php-variabel

Hejsa.
Jeg har tidligere fået hjælp til en tegn-tæller, som tæller antal tegn mm. i et textarea.
Værdien vises med denne kode:

<SPAN id='numSms'>0</SPAN>

Hvordan får jeg værdien med i en php-variabel, da jeg ønsker at gemme værdien MySQL.

$taeller = numSms; //Virker jo ikke
Avatar billede DeeDawg Nybegynder
21. oktober 2011 - 23:34 #1
Det lyder som om, at du har en eller anden formular der skal sendes.

Hvis dette er tilfældet, hvorfor lader du ikke bare PHP finde ud af hvor mange tegn der er, istedet for at involvere JavaScript?
Avatar billede nemlig Professor
21. oktober 2011 - 23:39 #2
Fordi værdien allerede er defineret med javascript - ellers er jeg med på, hvordan jeg tæller med php.
Avatar billede NielsErikP Mester
21. oktober 2011 - 23:43 #3
Hej..
Er først lige selv begyndt på javascript, men kan det være noget ligende:


$taeller = dokument.getElementById['numsums'].value;

Avatar billede keysersoze Ekspert
21. oktober 2011 - 23:54 #4
#3 kan ikke lade sig gøre - variablen tæller er PHP og fungerer derfor på serveren mens resten er javascript og dermed på klienten.

Gem værdien i en formfelt, fx et input text eller input hidden, og hiv værdien derfra eller send den med som en querystring.
Avatar billede nemlig Professor
22. oktober 2011 - 00:00 #5
#4 Ja det kan jeg godt se. Værdien kan vel kun fanges ved Submit eller ved noget Ajax (og Ajax har jeg ikke lyst til.

Men hvordan definerer jeg så mit input-felt:

<input type='hidden' name='taeller' value=''>
<button type='submit' onclick="this.form.taeller.value=numSms">Hent værdi</button>
Avatar billede NielsErikP Mester
22. oktober 2011 - 00:01 #6
Hej...
#4:
Fint nok... Du har vel også stået på (2545 point) engang.. Don't blame me for tryin!!
Avatar billede DeeDawg Nybegynder
22. oktober 2011 - 00:10 #7
<form action="" method="post">
    <textarea name="numSms"></textarea>
    <input type="hidden" name="numSms-submit" />
    <button type="submit">Hent værdi</button>
</form>


Så skulle den gerne være der. ;)
Avatar billede DeeDawg Nybegynder
22. oktober 2011 - 00:11 #8
Andet giver i hvert fald ikke mening.
Avatar billede nemlig Professor
22. oktober 2011 - 00:18 #9
#7 Tak for inputtet, men det kan jeg altså ikke lige se logikken i.
Er der ikke bare tale om 2 navngivne input-felter?
Hvor kommer javascript-værdien ind?
Avatar billede keysersoze Ekspert
22. oktober 2011 - 00:28 #10
Det script der opdaterer din numSms-div bliver også nødt til at opdatere dit hidden felt.
Avatar billede nemlig Professor
22. oktober 2011 - 00:33 #11
OK - jeg er med.
Jeg tror nu jeg vælger DeeDawg første forslag med at bruge php's strlen().

Men jeg blev noget klogere. Tak for jeres input.
DeeDawq og Keysersoze: Smid et svar og jeg deler pointene.
Avatar billede danco Nybegynder
22. oktober 2011 - 01:09 #12
Umiddelbart ville det jo give mest mening at implementere det via AJAX.
Jeg tænker at man kunne lave et AJAX kald i javascript som parser værdien til et PHP dokument som sætter det i en session. Hermed et lille JS eksempel via jQuery

$("#SomeDivision").load("valueToSession.php?value="+val+"sessionName=ValueFromJS");

og så simpelthen lave det meget simpelt i PHP

$value = $_GET['value'];
$sessionName = $_GET['sessionName'];
$_SESSION[$sessionName] = $value;

Der skal naturligvis kobles noget sikkerhed på. men jeg synes der giver mest mening at parse JS variable til PHP på den måde.

Alternativt kan du gøre det via en midlertidig cookie som sættes i JS og læses/slettes fra PHP.
Avatar billede olebole Juniormester
22. oktober 2011 - 01:32 #13
<ole>

Virkeligheden er vel, at ingen andre end spørgeren ved til, hvad scriptet skal bruges - hvordan eller hvorfor. Derfor er der heller ingen, der kan sige noget om, hvad den optimale løsning er  =)

Hvis kun det pågældende tal skal bruges på serveren, er en asynkron request bedst - men hvis der alligevel submittes data via en form, kan det skrives ind i et hidden field. En præcis opavebeskrivelse er bare aldrig givet i denne tråd.

Skal du sende et tal til serveren, kan du også bare gøre sådan (uden jQuery):


var oImg = new Image();
oImg.src = "valueToSession.php?value="+val+"&sessionName=ValueFromJS";


- og PHP-koden er den samme som i #12 (husk session_start() i begyndelsen af dokumentet)

/mvh
</bole>
Avatar billede olebole Juniormester
22. oktober 2011 - 01:36 #14
- og skal tallet bare sættes i en database, sætter du bare $_GET['value'] ind og undlader al session halløjet  =)
Avatar billede The_Buzz Novice
22. oktober 2011 - 09:02 #15
Kunne man ikke bare bruge strlen og læse længden af input feltet ved submit?
http://php.net/manual/en/function.strlen.php
Avatar billede nemlig Professor
22. oktober 2011 - 09:24 #16
#15 Se #11.

Der er tale om en input-formular til et SMS-sender. I textarea'et tæller jeg "antal tegn"/"tegn tilbage" samt jeg beregner om beskeden koster 1, 2 eller 3 SMS'ere.

Formularen submittes og sendes.
Ved submit gemmer jeg indholdet mm. og vil også gerne gemme antal anvendte tegn til statistisk brug. Derfor mit spørgsmål.
Løsningen med strlen() er umiddelbart nemmest for mig.

Men mange tak for inspirationen fra jer andre.

Javascript koden må I gerne se:

function tael_ned_ved_onload() {
      limitText(document.sms.smsTekst,document.sms.countdown,306)
      }
            function limitText(limitField, limitCount, limitNum) {
        var textarea = document.getElementById(limitField);
        var count = document.getElementById(limitCount);

        if (textarea.value.length > limitNum) {
            textarea.value = textarea.value.substring(0, limitNum);
        } else {
            count.value = limitNum - textarea.value.length;
        }
    }
    function onloadLimits() {
        limitText('smsTekst','countdown',306);
        limitText('smsTekstEfter','countdown2',306);
    }
Avatar billede olebole Juniormester
22. oktober 2011 - 14:29 #17
@nemlig: Jeg vil helt klart anbefale dig at bruge strlen i PHP. JavaScript giver absolut ingen sikkerhed for noget. Validering med JavaScript bør f.eks. kun foretages af hensyn til brugeren. Den egentlige validering bør foretages med PHP på serveren.

Med en smule JavaScript i browserens adressefelt (eller med f.eks. Firebug) kan jeg ændre formen/JavaScriptet på din side, mens den ligger i min browser - og afsende den. Derfor kan du ikke regne med tallet, du får fra JavaScript.

Om nogen vil lave pjatrøv med den slags, er nok mere end usandsynligt. På den anden side er det vigtigt, at du vænner dig til at tænke i de baner og tillægger dig gode kodevaner  *o)
Avatar billede nemlig Professor
22. oktober 2011 - 15:45 #18
#17. Gode pointer, du kommer med.
Tak for det.
Avatar billede nemlig Professor
11. november 2011 - 08:22 #19
Lukketid...... I har måske ikke set det, men jeg har skrevet tidligere i #11:

...DeeDawq og Keysersoze: Smid et svar og jeg deler pointene.
Avatar billede keysersoze Ekspert
12. november 2011 - 00:16 #20
svar :)
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