login  Naam:   Wachtwoord: 
Registreer je!
 Forum

Confirm popup, stuur niet door.

Offline Martijn1989 - 09/03/2006 21:16 (laatste wijziging 09/03/2006 21:17)
Avatar van Martijn1989PHP ver gevorderde Beste mensen.

Ik ben bezig met een wargame, waarbij ik het zo wil maken, dat als er een nieuwe PM is er een boxje komt met : Wil je hem nu lezen?

Hiervoor gebruik ik deze code :

  1. <?
  2. $select = mysql_query("SELECT `id` FROM `pm` WHERE `recieve_id` = '". $user['id'] ."' AND new = '0' ORDER BY date DESC") or die(mysql_error());
  3.  
  4. if(mysql_num_rows($select) > 0 AND $_GET['page'] != "pm_inbox.php" AND $_GET['page'] != "pm_delete.php" AND $_GET['page'] != "pm_read.php" AND $_COOKIE['pm_alert'] == 1){
  5. ?>
  6. <script language="javascript">
  7. if(confirm('<?=$pm['alert_new_pm']?>')){
  8. window.open('index.php?page=pm_inbox.php', '_self', '');
  9. }else{
  10. document.cookie = "pm_alert=0";
  11. }
  12. </script>
  13. <?
  14. }
  15. ?>


Hij geeft het conforum boxje wel weer, als je een nieuwe PM hebt, maar hij stuurt dus niet door, ...

Wie weet wat ik fout doe?

13 antwoorden

Gesponsorde links
Offline xSc - 09/03/2006 21:27 (laatste wijziging 09/03/2006 21:28)
Avatar van xSc Onbekend Alsjeblieft, maak je script eens wat netter!

- `-tekens niet meer in je queries gebruiken
- Cijfers mogen niet tussen quotes. Ook niet in queries. Dus niet '" . $user['id'] . "' maar " . $user['id'] . ". new = '0' wordt dus new = 0
- Gebruik geen or die(), maar werk met if-else
- Vervang AND en OR door resp. && en ||

- language="javascript" mag je volgens mij niet meer gebruiken. Gebruik dus type="text/javascript"

Je hebt een confirm-box, een venster met een OK- en Annuleren-button.

Het volgende voorbeeld werkt naar behoren:

  1. <script type="text/javascript">
  2.  
  3. if (confirm('Wilt u doorgaan?'))
  4. {
  5.  
  6. alert('Dit geeft true');
  7.  
  8. }
  9. </script>


Is de inhoud van de confirm-box correct? Als je op OK klikt, geeft dat true, dus dan zal het goed moeten gaan.

Je doet er verstandig aan de JavaScript Console te gebruiken van Firefox (Opties | JavaScript Console).
Offline Martijn1989 - 09/03/2006 21:40
Avatar van Martijn1989 PHP ver gevorderde wtf >.< waar slaat dit op.

- ` tekens ` , maken het juist netter!
- Ok, kan
- PURE ONZIN, juist met een or die(); zie je meteen waar de fout ligt.
- Hoeft niet, AND en OR ... is precies hetzelfde als && en ||

"javascript" doet het gewoon :/

Maar dit is niet wat ik vroeg. Ik vroeg waarom die doorstuur zin niet werkte.
Offline xSc - 09/03/2006 21:45
Avatar van xSc Onbekend * zucht *

Ik sta hier niet te bazelen, maar ik probeer je wat te leren.

Je moet niet per definitie afgaan op hetgeen werkt, maar je moet ook kijken of je netjes werkt. Als je netjes werkt, los je al heel veel fouten op. Weleens van syntax gehoord? Lees er alles over op http://www.yapf.net/faq.php/100/839.

Bovendien heb ik nog geen antwoord op m'n vragen.
Offline vinTage - 09/03/2006 21:48
Avatar van vinTage Nieuw lid offtopic die backtics zijn niet om het "duidelijk" te maken, maar ze maken het wel mogelijk gereserveerde sql namen te gebruiken.
Offline Martijn1989 - 09/03/2006 21:51
Avatar van Martijn1989 PHP ver gevorderde Is de inhoud van de confirm-box correct? Als je op OK klikt, geeft dat true, dus dan zal het goed moeten gaan.


Ja ;)... alles doet het. alleen niet het doorsturen.
Offline vinTage - 09/03/2006 21:53
Avatar van vinTage Nieuw lid Word die window.open niet doodleuk geblocked door een popupblokker ?
Offline Martijn1989 - 09/03/2006 21:54
Avatar van Martijn1989 PHP ver gevorderde nee :/

Btw , in FF en IE en OP doet die het niet ;)
Offline Rens - 09/03/2006 21:55
Avatar van Rens Gouden medaille

Crew algemeen
Henry, dat van or die(); of een if-else structuur vind ik eigenlijk ook nergens op slaan...
Daar kun je over door blijven gaan, omdat de een or die(); gebruikt, maar een ander gebruikt if-else.
Is zo'n beetje hetzelfde als het plaatsen van je accolades.
Ik plaats ze zo:
  1. <?PHP
  2. if(conditie)
  3. {
  4. // blaat
  5. } else
  6. {
  7. // blaat
  8. }
  9. ?>

Terwijl een ander ze zo plaats:
  1. <?PHP
  2. if(conditie) {
  3. // blaat
  4. } else {
  5. // blaat
  6. }
  7. ?>


Die backticks, tsjah, ikzelf gebruik ze ook liever niet, maar een ander wel omdat zo de kolomnamen duidelijk(er) zijn 'aangegeven'.

Dat van die cijfers tussen quotes geef ik je volledig gelijk in, cijfers horen niet tussen quotes.

En die AND/OR of &&/||, op php.net staan ze allebei, dus dat maakt (lijkt mij) niet uit.

@Martijn1515, ik denk dat je beter window.location kunt gebruiken i.p.v. window.open.
window.open is voor een popup, window.location stuurt je in hetzelfde venster door naar de pagina.
Dus in jouw geval word het dan iets als:
  1. <?
  2. $select = mysql_query("SELECT `id` FROM `pm` WHERE `recieve_id` = '". $user['id'] ."' AND new = '0' ORDER BY date DESC") or die(mysql_error());
  3.  
  4. if(mysql_num_rows($select) > 0 AND $_GET['page'] != "pm_inbox.php" AND $_GET['page'] != "pm_delete.php" AND $_GET['page'] != "pm_read.php" AND $_COOKIE['pm_alert'] == 1){
  5. ?>
  6. <script language="javascript">
  7. if(confirm('<?=$pm['alert_new_pm']?>')){
  8. window.location='index.php?page=pm_inbox.php';
  9. }else{
  10. document.cookie = "pm_alert=0";
  11. }
  12. </script>
  13. <?
  14. }
  15. ?>
Offline Martijn1989 - 09/03/2006 22:14
Avatar van Martijn1989 PHP ver gevorderde Bedankt het werkt ;)
Offline xSc - 09/03/2006 22:16 (laatste wijziging 09/03/2006 22:20)
Avatar van xSc Onbekend @Rensjuh, valt me tegen dat je me afvalt 

or die() blijf ik 'lomp' vinden.

En: or die() levert altijd invalid HTML op.

Citaat:
Citaat van http://www.yapf.net/faq.php/100/135:

En dus NIET met een 'or die()', want 'or die()' stopt het script en dat is nooit wat je wilt. Niet tegensputteren, je wilt het echt niet: scripts worden op twee manieren gemaakt; met templates die worden geprint als alle queries klaar zijn, of door HTML te printen tussen de queries door. In het eerste geval zou 'or die' betekenen dat er helemaal niets wordt geprint (lege pagina) en in het tweede geval zou door 'or die' de pagina halverwege gewoon ophouden.

Aan geen van de twee heb je iets, dus gebruik geen 'or die'.

Offline vinTage - 09/03/2006 22:18
Avatar van vinTage Nieuw lid window.open <=> window.location

Was dat het euvel ? en dat was dan geen popupblocker ding ?
Offline Martijn1989 - 09/03/2006 22:26
Avatar van Martijn1989 PHP ver gevorderde Nee, ik moest window.location gebruiken ja ;).


@ Henri : Dat is de standaart, waar een aantal mensen zich aan houden. Ik vind wat ik doe standaart, dat gebruiken ook zoveel mensen. Het is net wat je lekker vind werken.
Offline Rens - 09/03/2006 22:33
Avatar van Rens Gouden medaille

Crew algemeen
Dus die popup blocker was wel het euvel.
Die window.open zorgt voor een popup, en aangezien die niet kwam moest het wel een popup blocker zijn...

En Henry, ik val je helemaal niet af hoor 
Ik vind het gewoon onnuttig om over die discussie door te gaan, daar kun je volledige website's mee vol stoppen met meningen van waarom or die(); en waarom if-else.
Ikzelf gebruik het liefste if-else, maar als er iemand anders or die(); fijner vind, en dus gebruikt, moet die iemand anders dat zelf weten...
Gesponsorde links
Dit onderwerp is gesloten.
Actieve forumberichten
© 2002-2024 Sitemasters.be - Regels - Laadtijd: 0.232s