Avatar billede gider_ikke_mere Nybegynder
08. oktober 2005 - 23:13 Der er 49 kommentarer og
2 løsninger

Køre PHP script i Javascript

Jeg har følgende link:

<h4 onclick="koerphp(); this.style.fontWeight='bold';MM_setTextOfTextfield('Mail','','<?php echo $mail[$row["Id"]]; ?>')">&nbsp;<?php echo $row["OverskriftId"] ;?>&nbsp;</h4>

Som I kan se vil jeg afvikle et php script ved onclick="koerphp();.

Nu mangler jeg bare at finde ud af hvordan jeg kører et PHP script med koerphp(). Der bemærkes 2 ting:

Værdien $mail[$row["Id"]]; skal tages med til funktionen, det gøres vel bare således: koerphp(<?php echo $mail[$row["Id"]]); ?>
>

PHP scriptet skal bare skrive en værdi i databasen, og skal IKKE udføre noget på den aktuelle side. Det ved jeg godt ikke er muligt!

Jeg har prøvet med følgende:

<script language="JavaScript" type="text/JavaScript">
function davs() {
<?php
require("../mysqlfunktioner.php");
$sql = "UPDATE `admin_info` SET `Id` = 'Læst' WHERE `Id` = '$hiddenfield' LIMIT 1 ";
    aabn_forbindelse_og_vaelgdb();
    sql_spoerg($sql);
    luk_forbindelse();
?>
}
</script>
Avatar billede roenving Novice
08. oktober 2005 - 23:15 #1
Du kan heldigvis ikke køre php-funktioner fra javascript (tænk bare på hvad ondsindede mennesker kunne lægge ind i en sql-ting !-)

-- den eneste måde er at sende en http-request, f.eks. ved at submitte en form e.l.
Avatar billede gider_ikke_mere Nybegynder
08. oktober 2005 - 23:18 #2
Det har jeg læst andre steder at man kan! Hvis ikke, kan Javascript selv skrive til en MySql database?
Avatar billede roenving Novice
08. oktober 2005 - 23:20 #3
Hvad havde du tænkt dig ?-)

-- hvis man via javascript kunne skrive til databasen på serveren, kunne man jo bare lave en:

sql = "drop dinMedlemslisteTabel";

i noget man selv satte ind, og på den måde slette alle dine tabeller !-)

-- nej, det eneste du kan fra javascript er at sende en http-request, den må du så lave en php-side til, der behandler det ...
Avatar billede pidgeot Nybegynder
08. oktober 2005 - 23:21 #4
Mht. til det du har læst, tænker du så på en blok der ligner det her?

<script language="PHP">
//kode
</script>

Hvis ja, er dette blot et alternativ til <?PHP ?> tegnene. Det vil stadig væk køre server-side og vil ikke blive sendt med den kode som brugeren ser.
Avatar billede gider_ikke_mere Nybegynder
08. oktober 2005 - 23:24 #5
Ved søgning på afvikling af PHP i en Funktion på Eksperten.dk har jeg fået det indtryk at det kan lade sig gøre.
Avatar billede pidgeot Nybegynder
08. oktober 2005 - 23:26 #6
Du må meget gerne pege os hen på hvad det nu er der har givet dig det indtryk, da det bør være komplet umuligt - serveren har jo ingen måde at vide hvad der sker på klienten...
Avatar billede gider_ikke_mere Nybegynder
08. oktober 2005 - 23:34 #7
Undskyld min dumhed, men onclick sætter da noget i gang.

Jeg skal sådan set bare have skrevet en værdi i en database ved klik på en tekst. Hvordan det foregår er sådan set ligegyldigt. Om det kan foregå med et skjult vindue som skriver til databasen eller på andre måder er ligegyldigt.

Det drejer sig om et postsystem hvor ulæste beskeder skrives med fed. Når der klikkes på en ulæst postmeddelelse sættes skriften til fed og i MySql skal der skrives at vedkommende har læst indlægget.
Avatar billede olebole Juniormester
08. oktober 2005 - 23:34 #8
<ole>

PHP er et serversprog. Så snart, dokumentet har forladt serveren, kan PHP ikke længere gøre noget ved dokumentet - og dokumentet kan ikke nå PHP.
Den eneste måde, du kan få PHP til at gøre noget, er ved at kalde et script på serveren over HTTP.

Der _er_ ikke andre muligheder  :)

/mvh
</bole>
Avatar billede olebole Juniormester
08. oktober 2005 - 23:38 #9
- det fik vi vist skrevet samtidigt  :)

Prøv at kikke på denne løsning:
    http://www.eksperten.dk/spm/653892#rid5835556
Avatar billede gider_ikke_mere Nybegynder
08. oktober 2005 - 23:39 #10
Ok, så må jeg kalde en anden side selvom jeg synes det er idioti. Kan man kalde en side som ikke ses og lukker når der er skrevet til DB? Det eneste der ikke må ske er at den aktuelle side reloader!
Avatar billede pidgeot Nybegynder
08. oktober 2005 - 23:39 #11
Ja, men det onclick sætter i gang er Javascript, på klienten.

Du kan lave en IFRAME og bruge en event på hvert enkelt link. Mener det er noget i stil med dette:

onclick="document.(framenavn).location.href='setread.php?id=x';"

hvor x så er ID-nummeret på den pågældende besked.

Men med mindre du overfører teksten for alle beskederne og bruger JavaScript til at skjule og vise dem, kan du jo lige så godt sende en parameter med når du opdaterer siden og så sende din query der.
Avatar billede pidgeot Nybegynder
08. oktober 2005 - 23:40 #12
... Skal vist til at skrive lidt hurtigere :P
Avatar billede gider_ikke_mere Nybegynder
08. oktober 2005 - 23:43 #13
Hmmm den skjuler da ikke vinduet der kaldes! Kan det lade sig gøre?
Avatar billede olebole Juniormester
08. oktober 2005 - 23:43 #14
- ehhh ... hvor er vi henne nu?  :)
Avatar billede gider_ikke_mere Nybegynder
08. oktober 2005 - 23:45 #15
Jeg skal have åbnet et vindue der ikke ses, og som lukker efter endt eksekvering
Avatar billede olebole Juniormester
08. oktober 2005 - 23:45 #16
- hvorfor skal du det?
Avatar billede olebole Juniormester
08. oktober 2005 - 23:46 #17
Har du overhovedet kikket på det link, jeg skrev?
Avatar billede pidgeot Nybegynder
08. oktober 2005 - 23:46 #18
Du ændrer blot størrelsen på din IFRAME ved at specificere width og height.

Alternativt kan du ændre siden til at indgå i et frameset, hvor den øverste frame er 0px og uden border. Princippet er det samme.
Avatar billede pidgeot Nybegynder
08. oktober 2005 - 23:47 #19
Akyhne: Du specificerer ikke det rigtige navn på IFRAME'n hvis der åbnes et nyt vindue.
Avatar billede olebole Juniormester
08. oktober 2005 - 23:48 #20
- taler vi kun med os selv ...?
Avatar billede pidgeot Nybegynder
08. oktober 2005 - 23:49 #21
Jeg tror det er endt med 2 samtaler der er blevet filtret ind i hinanden ^^;
Avatar billede gider_ikke_mere Nybegynder
08. oktober 2005 - 23:50 #22
Olebole: Sorry den vises først for mig nu! Kigger lige
Avatar billede olebole Juniormester
08. oktober 2005 - 23:51 #23
En anelse ændret, kunne det se sådan ud:

<script type="text/JavaScript">
function doMyServerShit(elm) {
  var oHttp = newImage();
  oHttp.src = "http://www.domain.dk/myHttpPic.php?id=" + elm.id;
  elm.style.fontWeight = "bold";
}
</script>

<a id="ib" href="#" onclick="doMyServerShit(this)">En tekst</a>

- og på serveren:

<?php
  // Her gør du dit DB-gejl med variablen $_GET["id"]

  Header( "Location: myLittleGif.gif" );
?>
Avatar billede gider_ikke_mere Nybegynder
08. oktober 2005 - 23:53 #24
ææh skal man så klikke på et billede for at eksekvere?
Avatar billede olebole Juniormester
08. oktober 2005 - 23:54 #25
pidgeot >> det er ikke for at affeje dig, men det er unægtelig noget fiksere blot at kalde en gif på 45 bytes - uden 'klik' eller noget  ;o)
Avatar billede pidgeot Nybegynder
08. oktober 2005 - 23:55 #26
Bestemt, bestemt! Klager skam heller ikke :)
Avatar billede gider_ikke_mere Nybegynder
08. oktober 2005 - 23:55 #27
Som jeg, som ikke har en kæft forstand på Javascript, forstår det, loader jeg et bille med en link... eller?
Avatar billede olebole Juniormester
08. oktober 2005 - 23:56 #28
akyhne >> nej, jeg tror ikke, du har nået at se det eksempel, jeg har skrevet her i tråden. Du klikker på linket, der 'boldes' og DB'en opdateres, ved at der usynligt hentes en lille gif på 1*1 pixel  ;o)
Avatar billede gider_ikke_mere Nybegynder
08. oktober 2005 - 23:57 #29
Jeg prøver lige ...
Avatar billede olebole Juniormester
09. oktober 2005 - 00:00 #30
Dette skaber et usynligt billed-objekt i browseren:
  var oHttp = newImage();

- dette sætter en src på objektet:
  oHttp.src = "http://www.domain.dk/myHttpPic.php?id=" + elm.id;

- i query-strengen skrives linket's id.

På serveren hives id'en ud med $_GET["id"] - og så kan du opdatere din DB med det.
Når du har gjort det, redirecter du til en lille gif, der sendes til vores objekt i browseren.

- c'est tout  :)
Avatar billede gider_ikke_mere Nybegynder
09. oktober 2005 - 00:09 #31
Er newImage(); en Funktion som jeg skal have skrevet et eller andet sted under script?
Avatar billede roenving Novice
09. oktober 2005 - 00:11 #32
Nej, Image er et objekt indbygget i javascript, så du skal oprette en ny instans, men der mangler vist lige et meget nyttigt mellemrum !-)

  var oHttp = new Image();
Avatar billede gider_ikke_mere Nybegynder
09. oktober 2005 - 00:14 #33
Jeg får at vide at et objekt var ventet ved linie 33 tegn 3:

  var oHttp = newImage();
Avatar billede olebole Juniormester
09. oktober 2005 - 00:14 #34
- damned ... sorry  :D
Avatar billede olebole Juniormester
09. oktober 2005 - 00:17 #35
Jes, du er en flink mand ... med mellemrum  ;D
Avatar billede gider_ikke_mere Nybegynder
09. oktober 2005 - 00:17 #36
Da jeg arbejder i Dreamweaver, viste det sig soleklart da jeg lavede et mellemrum. Dejligt program for os der er lidt tungnemme *GG*
Avatar billede roenving Novice
09. oktober 2005 - 00:19 #37
>>ole

-- jeg kaster gerne med mellemrum *lol*
Avatar billede gider_ikke_mere Nybegynder
09. oktober 2005 - 00:24 #38
Jamen for f..... hvor det bare virker. En hel dags arbejde med at finde ud af at sætte en tekst med fed skrift, sætte teksten i et textfield efter et Array og samtidig skrive til DB, samt en sur kone der klager over for mange timer foran skærmen :-)

Resultatet er her:

<h4 id="<?php echo $row["Id"]; ?>" onclick="doMyServerShit(this); MM_setTextOfTextfield('Mail','','<?php echo $mail[$row["Id"]]; ?>')">&nbsp;<?php echo $row["OverskriftId"] ;?>&nbsp;</h4>
Avatar billede gider_ikke_mere Nybegynder
09. oktober 2005 - 00:32 #39
olebole: Hvis det ikke gør dig noget, omdøber jeg lige din function ;-) Vil du have alle pointene for dig selv?

roenving: Sorry du blev hægtet af i svinget, men jeg foretrak olebole's metode da jeg andre steder godt kunne bruge at skrive til DB uden at skulle linke videre!
Avatar billede olebole Juniormester
09. oktober 2005 - 00:40 #40
Jes >> taktak ... nu nærmer vi os vist grænsen for den simultant processerbare informationsmængde. Jeg har jo set dig kaste alskens uddateret hardware rundt i alle verdenshjørner af fædrelandets sommerklædte natur ... der står allerede *Information Overload* på tværs hen over min indre Technicolor ...!!!  *LooOooL*

akyhne >> Hvis jeg må have lov at vælge, banker du pointene op i 3*20  :)
- så må du til gengæld kalde funktionen lige, hvad du vil  ;D
Avatar billede pidgeot Nybegynder
09. oktober 2005 - 00:42 #41
Jeg regner med 20 af de point skulle gå til mig, så smider lige et svar for en god ordens skyld - hvis jeg tager fejl, så afvis blot :)
Avatar billede olebole Juniormester
09. oktober 2005 - 00:43 #42
pidgeot >> præcis ... så mangler vi bare at høre fra roenving  :)

Jes >> det minder mig i øvrigt om en historie fra jeg var barn ..... noget med nogle spøgelser, hvis livret var vaniljekranse huller  :)
Avatar billede gider_ikke_mere Nybegynder
09. oktober 2005 - 00:47 #43
Dreamweaver er et ganske udmærket program for os autodidakte, hjernedøde, nåralterglippetsålæsmanualen, på 13. år gifte... typer *SSS*
Avatar billede roenving Novice
09. oktober 2005 - 00:47 #44
Tjah, med den historie kom jeg til at tænke på en anden:

'Når de nu siger, at 0 er ingenting, kan de så ikke give mig et par ekstra, hver gang de sender mig en check' ...

-- els velbekomme '-)
Avatar billede gider_ikke_mere Nybegynder
09. oktober 2005 - 00:48 #45
*GGG*
Avatar billede gider_ikke_mere Nybegynder
09. oktober 2005 - 00:51 #46
Hvad der overgår min forstand er at det de sidste par timer er lykkes mig at få åbnet 21 vinduer på skrivebordet. Tid til at rydde op!
Avatar billede olebole Juniormester
09. oktober 2005 - 01:01 #47
Jes >> *LoooL* jeg kommer zq nok til at krænke din copyright på den ... en gang ... eller tyve  :D

akyhne >> havde jeg bare gjort mit 'arbejde' ordentligt, så havde jeg skrevet det i min Homesite - som også har syntaksfarvning - og copy/pasted til E's tekstfelt. Men nænej ... man kan vel bare det pis!  *host-host*  [lyden af røde, blafrende ører]

Gift på trettende år - årh, herregud. Her har man været skilt fra sin 'eks i første' i 24 år.
Hm ... vi var nu også gift nogle trættende år ... eller ... ehhh  *LooL*

Tak for points og hyg dig med konen - husk på, hvad blomster kan gøre  ;o)
Avatar billede gider_ikke_mere Nybegynder
09. oktober 2005 - 01:11 #48
Når man kan sende vin med blomster, hvorfor så ikke også scripts:

FOR EACH MØJFALD IN HUMORSTATUS
    DO
          SMILE(MØJFALD) = True
    LOOP
NEXT
Avatar billede olebole Juniormester
09. oktober 2005 - 01:24 #49
aha ... du mener sår'n noget sexobjekt orienteret programmering? Puha ... det er zq nok for langhåret til mig  =8-O

Det er da også for kedeligt at skulle formere sig på formen:
  var son = this.clonePode(true);

- men det giver på den anden side hel ny mening til det senere så udbredte, jyske udsagn:
  "do da wist æ' rejti DOM knajt - wa'?"

*ROTFL* nu er der zq da vist dømt *NØRD*  =oD
Avatar billede gider_ikke_mere Nybegynder
14. oktober 2005 - 01:11 #50
Tillægsspørgsmål:
Hvad nu hvis jeg skal have endnu en variabel med fra doMyServerShit(this.id)
f.eks: doMyServerShit(this.id,<?php echo "noget"; ?>)

Hvad skal der så stå ved function doMyServerShit()?
Avatar billede gider_ikke_mere Nybegynder
14. oktober 2005 - 01:18 #51
Ahhh jeg er ved at lære det!

function skrivlaesttildb(elm,idnavn) {
...php?id=" + elm.id + "&navn=" + idnavn;
...
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