Toon posts:

[JS] Confirm box, geen anuleren.

Pagina: 1
Acties:

Verwijderd

Topicstarter
Geachte lezer,

Ik heb een stukje code in JS en PHP dat volgens de W3Schools zou moeten werken, helaas doet hij dat dus niet. Even het probleem uitleggen:

Ik heb een website, en daar staan auto's in, als ik op de knop druk, moet hij een auto weghalen, daarvoor wil ik eerste een bevestiging dmv een popup.

Het punt is dat als ik bij onderstaand scriptje op OK druk, hij de auto netjes weghaalt, maar als ik op anuleren klik, haalt hij hem ook weg.

PHP:
1
2
3
4
5
6
7
8
9
10
<script type="text/javascript">
function disp_confirm()
  {
  var r=confirm("<?=_CONFDEL?>")
  if (r==true)
    {
        <?PHP mysql_query("UPDATE `car` SET `del` = '1' WHERE lic_plate = '$carid'"); ?>
    }
  }
</script>

Voor de knop gebruik ik een simpele link:
<a href="#" onclick="disp_confirm()">Remove</a>

  • DizzyWeb
  • Registratie: Februari 2001
  • Laatst online: 23:19

DizzyWeb

Ondertiteld

Javascript is clientside. PHP is serverside. De PHP code wordt op de server geparsed en vervolgens naar de client gestuurd. Die query is dus al uitgevoerd voordat dat javascript uberhaupt ooit gebruikt is.

Verwijderd

Topicstarter
Hmm, oke...maar hoe kan ik dit probleem dan oplossen? Ik zou toch graag willen werken met een confirmbox van JS.

  • P.O. Box
  • Registratie: Augustus 2005
  • Niet online
Na confirm doorsturen naar de updatepagina... en vanaf daar een header("Location: ...") terug naar je originele pagina...
of via een AJAX commando

[ Voor 9% gewijzigd door P.O. Box op 27-03-2007 09:42 ]


  • wackmaniac
  • Registratie: Februari 2004
  • Laatst online: 01-12 17:16
De functie die ik gebruik en ook werkt:

code:
1
2
3
4
5
6
7
8
9
10
function bevestiging (vraag, link){
    // This functions askes for confirmation for question "vraag" 
    // if "answer" is true the user is redirected to "link"
    var answer = confirm (vraag);
    if (answer) {
        window.location=link;
    } else {
        return true;
    } // else
} // function

Read the code, write the code, be the code!


  • crisp
  • Registratie: Februari 2000
  • Nu online

crisp

Devver

Pixelated

offtopic:
JavaScript:
1
} // function

wtf? is de standaard construct ism indenting niet genoeg om te zien waar die accolade bijhoort? :?

Maar ontopic: een forward naar een ander adres lijkt me hier niet gepast; data-manipulatie moet je immers niet op een GET-request doen.
In dit geval zou ik gewoon een formulier gebruiken en onsubmit de confirmatie doen en aan de hand van het antwoord al dan niet de submit cancellen.

[ Voor 50% gewijzigd door crisp op 27-03-2007 09:57 ]

Intentionally left blank


Verwijderd

Topicstarter
Oke, mijn kennis van JS is nogal miniem, zou je me kunnen uitleggen hoe ik dit dan aanpak?

Alvast bedankt

  • jan-marten
  • Registratie: September 2000
  • Laatst online: 01-12 15:21
code:
1
2
3
4
5
6
7
8
9
10
<a href="#" onclick="return bevestiging()">Klik hier</a>
<script>
function bevestiging() {
  var invoer = confirm('Zeker weten?');
  if (invoer == true) {
    document.location.href = 'ja.php';
  }
  return false; //dan levert de klik geen actie op
}
</script>


En in de ja.php zet je dan je PHP code waarin die Update uitgevoerd wordt + wat er daarna moet gebeuren (kan HTML zijn maar ook een header-redirect).

Owja, het kan nog korter:
code:
1
<a href="ja.php" onClick="return window.confirm('Weet je zeker?');">Click</a>

[ Voor 12% gewijzigd door jan-marten op 27-03-2007 11:28 . Reden: Nog korter ]


  • wackmaniac
  • Registratie: Februari 2004
  • Laatst online: 01-12 17:16
crisp schreef op dinsdag 27 maart 2007 @ 09:55:
offtopic:
JavaScript:
1
} // function

wtf? is de standaard construct ism indenting niet genoeg om te zien waar die accolade bijhoort? :?
Sorry, macht der gewoonte. Ooit eens aangeleerd op de opleiding, gaat nu automatisch :) Het stoort niet, dus ik voel mij lange van genoodzaakt om dit af te leren.

Read the code, write the code, be the code!


  • wizzkizz
  • Registratie: April 2003
  • Laatst online: 30-11 08:58

wizzkizz

smile...tomorrow will be worse

jan-marten schreef op dinsdag 27 maart 2007 @ 11:25:
code:
1
2
3
4
5
6
7
8
9
10
<a href="#" onclick="return bevestiging()">Klik hier</a>
<script>
function bevestiging() {
  var invoer = confirm('Zeker weten?');
  if (invoer == true) {
    document.location.href = 'ja.php';
  }
  return false; //dan levert de klik geen actie op
}
</script>


En in de ja.php zet je dan je PHP code waarin die Update uitgevoerd wordt + wat er daarna moet gebeuren (kan HTML zijn maar ook een header-redirect).

Owja, het kan nog korter:
code:
1
<a href="ja.php" onClick="return window.confirm('Weet je zeker?');">Click</a>
Aangezien je op een GET-request geen gegevens moet toevoegen/verwijderen etc. maar hooguit viewen (zoekmachine alert) zoals crisp ook al zegt, moet je het in een form zetten (of een form faken door een ajax-request).

Wordt dan eerder zoiets:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<script type="text/javascript">
/*
  aparte functie omdat je anders voor alle auto's in een overzicht die string moet printen.
  dat is immers waar functies (o.a.) voor bedoeld zijn.
*/
function bevestiging() { 
   return confirm( "Weet je het super zeker?" );
}
</script>

<form action="remove-car.php" method="post" onsubmit="return bevestiging()">
     ...
    <input type="hidden" name="car_id" value="123456">
    <input type="submit" name="remove_car" value="Auto verwijderen">
</form>

Make it idiot proof and someone will make a better idiot.
Real programmers don't document. If it was hard to write, it should be hard to understand.

Pagina: 1