Avatar billede den-evil Nybegynder
31. januar 2007 - 22:59 Der er 20 kommentarer og
1 løsning

kald function efter tryk på knap?

Hey ekspertz

På forhånd vil jeg lige sige undskyld hvis jeg skulle have smidt dette spm i javascript, men prøver nu alligevel lykken her...

Har en input knap:
<input name="button" class="buttons" type="button" onclick="slet(<?=$Doc_ID?>);" value="Slet side" />

Den kalder en function hedder hedder slet

Jeg vil gerne have at hvis man trykker på Ok så skal den udføre en function fra php der hedder DeletePage, men kan ikke rigtig få det til at fungere:

<script type="text/javascript">
                                                        function slet(doc_id) {
                                                                if (confirm("Er du sikker på du vil slette siden?"))    {
                                                                document.location = 'DeletePage(+ doc_id)';
                                                                }
                                                        }
                                                </script>
Avatar billede jensgram Nybegynder
31. januar 2007 - 23:14 #1
Nej, det kan heller ikke lade sig gøre på den måde. Du kan ikke kalde en PHP-funktion som sådan fra andet end PHP.

Løsningen kunne være at kalde en side - deletepage.php?doc_id=XXX, hvori du så kan kalde funktionen med værdien XXX.


<script type="text/javascript">
  function slet(doc_id) {
      if (confirm("Er du sikker på du vil slette siden?")) {
        document.location.href = 'deletepage.php?doc_id=' + doc_id;
      }
  }
</script>
Avatar billede sjh Nybegynder
31. januar 2007 - 23:14 #2
Så kan du vel gøre det sådan???

<script type="text/javascript">
  function slet(doc_id) {
    if (confirm("Er du sikker på du vil slette siden?"))    {
      document.location = 'DeletePage.php?id='+ doc_id;
    }
  }
</script>

-- DeletePage.php --
<?php
  echo $_GET["id"];
?>
-- DeletePage.php --
Avatar billede sjh Nybegynder
31. januar 2007 - 23:15 #3
hæ hæ.. jensgram kom først :D
Avatar billede jensgram Nybegynder
31. januar 2007 - 23:16 #4
Høhø - men vi er da enige ;)
Avatar billede sjh Nybegynder
31. januar 2007 - 23:17 #5
ja det må man jo sige ;)
Avatar billede den-evil Nybegynder
31. januar 2007 - 23:22 #6
Så dvs jeg ikke kan undgå at lave en side der hedder DeletePage.php ?

Hvaså ved onclick ? kan jeg ikke bare kalde funktionen DeletePage() der, også evt inde i den lave en confirm ?
Avatar billede jensgram Nybegynder
31. januar 2007 - 23:26 #7
Hmmm - der er vist lidt begrebsforvirring. PHP køres på serveren, Javascript på klienten. Det vil sige, at du KUN har mulighed for at køre noget på serveren ved at lade klienten forespørge...

Så nej, det vil ikke være muligt at kalde _PHP_-funktionen direkte fra Javascript - og dermed er det ret ligegyldigt _hvor_ i HTML'en din confirm() ligger.
Avatar billede jensgram Nybegynder
31. januar 2007 - 23:27 #8
... men du skal jo ikke partout lave en side, der hedder deletepage.php - DeletePage()-funktionen kan også kaldes på en hvilken som helst anden side, så længe du blot medsender doc_id (så man ved hvad der ønskes slettet).
Avatar billede den-evil Nybegynder
31. januar 2007 - 23:29 #9
ok, jamen tak for svar... så skal du bare smide et svar :)
Avatar billede sjh Nybegynder
31. januar 2007 - 23:32 #10
Jeg kan ikke lige se hvad problemet skulle være i at kalde deletepage.php?...
Avatar billede jensgram Nybegynder
31. januar 2007 - 23:32 #11
sjh skal næsten også have - 19sek er ikke meget :)
Avatar billede sjh Nybegynder
31. januar 2007 - 23:32 #12
er det for at ungå at reload siden??
Avatar billede den-evil Nybegynder
31. januar 2007 - 23:34 #13
var egentlig bare mere for at undgå at skulle lave en til fil, har nemlig en fil med funktioner, så ville bare have kaldt delete funktionen derfra
Avatar billede jensgram Nybegynder
31. januar 2007 - 23:43 #14
den-evil > Ja, det kan du også sagtens. Bare noget i retning af:

if (isset($_GET['doc_id'])) {
    DeletePage(intval($_GET['doc_id']));
}

...
Avatar billede sjh Nybegynder
31. januar 2007 - 23:46 #15
<script type="text/javascript">
function php(func) {
  if (confirm("Er du sikker på du vil slette siden?")) {
    document.location.href = 'func.php?func='+func;
  }
}
</script>

<input name="button" class="buttons" type="button" onclick="php('DeletePage(<?=$Doc_ID?>)');" value="Slet side" />


-- func.php --
<?php
  eval($_GET["func"]);

  function DeletePage($id) {
 
  }
?>
-- func.php --

Der er dog ikke meget sikkerhed i det ;)
Avatar billede jensgram Nybegynder
01. februar 2007 - 07:27 #16
sjh > Nej, den må man vist på det kraftigste advare imod!
Avatar billede sjh Nybegynder
01. februar 2007 - 07:28 #17
hæ hæ ja ik.. men det var vel næsten det den-evil ville.. :D
Avatar billede jensgram Nybegynder
01. februar 2007 - 07:33 #18
Jamen det kan da gøres uden eval():

<script type="text/javascript">
function php(func, arg) {
  if (confirm("Er du sikker på du vil slette siden?")) {
    document.location.href = 'func.php?func='+func+'&arg='+arg;
  }
}
</script>

<input name="button" class="buttons" type="button" onclick="php('DeletePage', <?=$Doc_ID?>);" value="Slet side" />

-- func.php --
<?php
  function DeletePage($id) {

  }


  if (isset($_GET['func']) $_GET['func'] == 'DeletePage' && isset($_GET['arg']) {
    DeletaPage(intval($_GET['arg']));
  }

?>
-- func.php --
Avatar billede jensgram Nybegynder
01. februar 2007 - 07:33 #19
Uden så mange fejl:

-- func.php --
<?php
  function DeletePage($id) {

  }


  if (isset($_GET['func']) $_GET['func'] == 'DeletePage' && isset($_GET['arg'])) {
    DeletePage(intval($_GET['arg']));
  }

?>
-- func.php --
Avatar billede fixxxer Nybegynder
01. februar 2007 - 08:48 #20
http://dk2.php.net/manual/en/function.function-exists.php
http://dk2.php.net/manual/en/function.call-user-func.php
http://dk2.php.net/manual/en/ref.funchand.php

er alle funktioner man kunne overvejer hvis der er tale om et stort sæt af funktioner der skal afvikles dynamisk.
Avatar billede den-evil Nybegynder
01. februar 2007 - 08:53 #21
mange tak for hjælpen
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