[JS]aanroepen van php functies

Pagina: 1
Acties:

  • degroot
  • Registratie: December 2003
  • Niet online
ik heb een vraagje met betrekking tot het aanroepen van PHP functies in javascript.

Ik heb een stuk javascript.
dat ziet er zo uit:
code:
1
2
3
4
5
6
7
8
9
10
11
12
    function display(id){
        if(id == show) { //hide 
            document.getElementById('box_'+id).style.visibility = 'hidden'
            document.getElementById('box_'+id).style.position = 'absolute'
            show=0;     
        } else { //show
            document.getElementById('box_'+id).style.visibility = 'visible'
            document.getElementById('box_'+id).style.position = 'relative'
            show=id;
            
        }
    }


Dit stukje java script word aangeroepen volgens een a href link.
Dat ziet er zo uit:
HTML:
1
<a href="javascript:display(<?=$company['company_id']?>);"  onBlur="0"><img src="/images/ico_movil.gif" alt="<?=$t->i18n("bu phone")?>" width="17" height="17" border="0" align="absbottom"><?=$t->i18n("bu phone")?></a>


Nu heb ik in een php klasse een functie staan.
Die wil ik graag aangeroepen hebben zodra het javascript word aangeroepen.

Nu heb ik al het een en ander uitgezocht.
En dit is direct dus onmogelijk ivm clientside(javascript) en server side(php)

Vervolgens ben ik uitgekomen op een stukje AJAX(als dat het is).
Ik plaats dus een ontzichtbaar IFRAME op mijn website.
HTML:
1
2
<iframe  id="RelFrame" name="RelFrame" style="visibility: hidden" frameborder="0"  vspace="0"  hspace="0"  marginwidth="0"  marginheight="0" width="0"  scrolling="yes"  height="0"  src="incComp.php">
</iframe>


Is het dan wel mogelijk om met javascript dit iframe continue aan te roepen?
Zodat het IFRAME een php pagina aanroept , die vervolgens mijn PHP code uitvoert die ik eigenlijk direct wilde aanroepen!

Nu ben ik dus al een eind gekomen.
Maar mijn javascript kennis schiet mij helaas te kort.
Hoe kan ik nu mijn IFRAME laten verversen door het javascript wat door de A HREF word aangeroepen?

Hopelijk kunnen jullie mij weer iets opweg helpen!

www.degroot-it.nl


  • BasieP
  • Registratie: Oktober 2000
  • Laatst online: 19-10 08:18
offtopic:
nee das geen ajax ;)


je frame heeft een naam, je kan deze opvragen en vervolgens de location.url zetten. Dan wordt je (i)frame ververst.

hoe je dat precies doet kan je hier vinden

[ Voor 27% gewijzigd door BasieP op 12-02-2007 15:47 ]

This message was sent on 100% recyclable electrons.


Verwijderd

Dit is een beetje een aparte manier van AJAX.

Normaal als je met AJAX werkt gebruik je XMLHTTPrequest
http://en.wikipedia.org/wiki/Ajax_(programming)

Een link gebruiken met daarin een event is niet echt netjes. Hiervoor hebben ze <input type="image" />

Wat doet de php code eigenlijk want uit het geposte stuk javascript kan ik niet opmaken wat er dan zo nodig met php gedaan moet worden

Hier de een tutorial over Ajax:
http://www.w3schools.com/ajax/ajax_intro.asp

Van het hele iframe principe zou ik afstappen. Beetje ouderwets :)

Als je echt met een frame wilt werken kan je de frame gewoon benaderen met getElementById('frameid') vervolgens kan je de src wijzigen. De pagina die in het frame wordt geladen moet, als deze klaar is, aan zijn parent duidelijk maken dat de data klaar staat. De parent (in dit geval jouw pagina) leest vervolgens het frame uit. Maar nogmaals dit is niet echt geweldig. Gebruik liever "echte" AJAX

[ Voor 26% gewijzigd door Verwijderd op 12-02-2007 16:01 ]


  • degroot
  • Registratie: December 2003
  • Niet online
Verwijderd schreef op maandag 12 februari 2007 @ 15:54:

Wat doet de php code eigenlijk want uit het geposte stuk javascript kan ik niet opmaken wat er dan zo nodig met php gedaan moet worden


Van het hele iframe principe zou ik afstappen. Beetje ouderwets :)
Mijn PHP code verhoogd de waarde in mijn mysql database op een kolom met 1
Dit zodat ik kan zien hoe vaak er op de hyperlink geklikt is.

Ik zal de code ter verduidelijking posten
PHP:
1
2
3
4
5
6
        //increments the counter in database with 1 for each company that is shown by listview
           function updateStatisticsFormClick($company_id) {                              
            $sql = "UPDATE busca_statistics SET form_clicks = form_clicks+1 WHERE company_id=$company_id";
            $res = mysql_query($sql) or die("Query error: " .mysql_error());
            return $this;
        }


Deze functie roep ik vanuit andere pagina's altijd zo aan(via forms die gepost worden):
PHP:
1
2
$buscaCompany = new buscaCompany();
$buscaCompany->updateStatisticsFormClick($company_id);


Maar dit is als de pagina geladen word.
Met dit stukje script wat ik nu wil maken , is de pagina al geladen , en mag deze niet herladen worden.
Vandaar dat ik op javascript werd gewezen.
Javascript moet nu dus die php functie aanroepen , zonder dat die pagina die geladen is , herladen word.

Ik zal je links ook eens even onderzoeken,
Want het IFRAME gedoe vond ik zelf ook een beetje omslachtig programmeren.
Ik zou het dus het liefste doen met AJAX(o.i.d) , maar die kennis schiet me nog net tekort

[ Voor 5% gewijzigd door degroot op 12-02-2007 16:02 ]

www.degroot-it.nl


  • BasieP
  • Registratie: Oktober 2000
  • Laatst online: 19-10 08:18
even los van je vraag:

als je met statistieken bezig ben wil je meestal het aantal hits op een pagina weten. Je kan dus beter je php code in de pagina stoppen die opgevraagd wordt (in jouw geval de pagina waar je link naar wijst)

je kan dan adhv bijv de $_SERVER['referer'] achterhalen van welke pagina de bezoeker kwam.
Zo kan je ook zien hoevaak er op de link geklikt is, maar nog veel meer.

nadeel is dat het alleen werkt als je pagina ook van jezelf is. als je link naar google.com verwijst bijv. gaat het niet werken

This message was sent on 100% recyclable electrons.


  • degroot
  • Registratie: December 2003
  • Niet online
BasieP schreef op maandag 12 februari 2007 @ 16:03:
even los van je vraag:

als je met statistieken bezig ben wil je meestal het aantal hits op een pagina weten. Je kan dus beter je php code in de pagina stoppen die opgevraagd wordt (in jouw geval de pagina waar je link naar wijst)
Het is voor een soort zoekmachine.
En daarop worden een aantal hits vertoont.
Als die hits aangeklikt worden , dan gebeurd het ook zoals jij het verteld.
Echter , er zit ook een kleine info knop op de pagina, die de pagina niet refreshed maar een klein javascript menu met info laat zien.
Dit moet ook bij de statistieken opgeteld worden , dus ook zonder refresh

Vandaar dat het zo gedaan word

EDIT:
Het gedoe van een nieuwe pagina aanroepen in het IFRAME werkt uiteindelijk.
Maar volgens het commentaar zoals hierboven staat is dat geen nette oplossing(en vind ik zelf ook)
Hoe valt dit met AJAX een beetje netter te programmeren?

[ Voor 13% gewijzigd door degroot op 12-02-2007 17:00 ]

www.degroot-it.nl


Verwijderd

degroot schreef op maandag 12 februari 2007 @ 16:06:
[...]
Het gedoe van een nieuwe pagina aanroepen in het IFRAME werkt uiteindelijk.
Maar volgens het commentaar zoals hierboven staat is dat geen nette oplossing(en vind ik zelf ook)
Hoe valt dit met AJAX een beetje netter te programmeren?
heb je deze tutorial al doorgenomen.
http://www.w3schools.com/ajax/ajax_intro.asp

Er staat stap voor stap hoe het werkt

  • degroot
  • Registratie: December 2003
  • Niet online
Verwijderd schreef op dinsdag 13 februari 2007 @ 09:12:
[...]


heb je deze tutorial al doorgenomen.
http://www.w3schools.com/ajax/ajax_intro.asp

Er staat stap voor stap hoe het werkt
Ja die had ik al in een van je eerdere posts toen doorgenomen.
Maar zelfs na 2 keer bestuderen , snap ik er niet echt veel van.
Nog niet iets te hoog gegrepen voor mij.
Maar het werkt voorlopig , dus AJAX goed leren is nu dus een bijzaak

www.degroot-it.nl


  • Megamind
  • Registratie: Augustus 2002
  • Laatst online: 10-09 22:45
Kijk dan naar xajax, een werken compleet PHP framework voor Ajax,

  • degroot
  • Registratie: December 2003
  • Niet online
Megamind schreef op dinsdag 13 februari 2007 @ 11:23:
Kijk dan naar xajax, een werken compleet PHP framework voor Ajax,
Ja er zijn inderdaad volop AJAX framework(en).
En heb er in tussentijd ook al best veel bekeken en bestudeerd.
Inderdaad een goede oplossing , eens overwegen om het te implementeren

www.degroot-it.nl

Pagina: 1