PHP in JavaScript
lima-city → Forum → Programmiersprachen → PHP, MySQL & .htaccess
array
beispiel
browser
code
datei
datenbank
datum
erstellen
header
http
installation
stichwort
suche
teil
text
type
url
verwenden
zitat
zugreifen
-
`Hallo liebe Community,
ist es irgendwie möglich, php code innerhalb eines javascripts auszuführen?
Konkret geht es mir um den Newsticker unten auf dieser seite:
http://mintlink.de.vu/
Ich hatte vor, die Texte aus einer Datenbank abzurufen. Nur weiß ich nicht so recht, wie ich da ran komme.
Ich hab mal ganz blöd versucht, es einfach so zu stricken:
var texte = new Array(
'<?php ....... ?>',
'<?php ....... ?>',
'<?php ....... ?>'
);
nur tut das nichts. kann man vielleicht nur durch js die datenbank abfragen? oder wie kann ich das machen? -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage
-
google ist dein freund =)
die erste seite wenn man "php in javascript" eingibt ist --->
http://www.drweb.de/magazin/javascript-und-php-ungleiche-gesellen/
da steht alles beschrieben ;)
EDIT
hier ist auch nen ansatz
http://forum.chip.de/php-mysql-etc/php-objekte-javascript-benutzen-266671.html
Beitrag zuletzt geändert: 19.8.2010 18:42:58 von lordcodex -
Funktioniert problemlos, so lange der Server PHP unterstützt. Hier hast du 2 Möglichkeiten:
1. Das JS in die PHP Seite integrieren
2. Eine .php Datei an Stelle einer .js erstellen und dort den Header setzen:
header("Content-type: application/x-javascript");
Beispiel (1):
<?PHP $foo = "bar"; ?> <html> <head> <title>XYZ</title> <script> document.getElementById('test').innerHTML = "<?PHP=$foo?>"; </script> </head> <body> <span id="test"></span> </body> </html>
Beispiel (2, index.php):
<html> <head> <title>XYZ</title> <script type="text/javascript" src="test.php?c=<?PHP=time()?>"></script> </head> <body> <span id="test"></span> </body> </html>
Beispiel (2, test.php):
<?PHP header("Content-type: application/x-javascript"); $foo = "bar"; ?> document.getElementById('test').innerHTML = "<?PHP=$foo?>";
Beitrag zuletzt geändert: 19.8.2010 21:34:47 von fabo -
abarbeitungsreihenfolge der Scripte:
1.PHP/CGI
da drin kommt meist ein SQL aufruf, oder perl oder bash-Script
damit wird das fertige auszuliefernde Dokument fertiggestellt
dann an den Client geschickt
hier wird das HTML angezeigt
und erst jetzt kommt da JavaScript...
also du kannst mit PHP auf keine Java-Script inhalte zugreifen, wenn du das meinst, aber du kannst über Java-Script auf PHP-Ergebnisse zugreifen^^ -
aklasse schrieb:
Stichwort: AJAX
mhhh. da auf ajax zurückzugreifen halte ich ein bisschen für übertrieben, da für manche das Konzept dann doch etwas zu kompliziert ist.
Das es mit Ajax funktioniert ist dabei natürlich unbestritten...
Wenn es Dir ausreicht das nur beim (neu-)laden der Datei der Aktuelle Text aus der Datenbank ausgelesen wird schreibe folgendes in den Header:
<script type="text/javascript"> <?php //Hier steht Dein Code um die Datenbank auszulesen //ich gehen jetzt davon aus Du hast die Daten in einem Php array $deinphparra gespeichert echo "einarray = ['".implode("','", $deinphparra);."'];"; ?> </script>
Code ungetestet
Ich denke dieser Threat zum Thema Daten aus der db in einem Array speichern dürfte für Dich interessant sein.
Beachte das ich bewusst kein "var" vor das array geschrieben habe, dadruch sollte es auch in funktionen aufzurufen sein.
variabeln mit "var" deklarieren = nur lokal verfügbar
zB. alert(einarray[0]); sollte jetzt den ersten Eintrag aus der db liefern (bzw aus dem array)
AJAX würde den Text sofort anzeigen ohne das die Seite neu geladen wird.
Edit:
weil ich es noch nicht kenne:
fabo schrieb:
<?PHP=$foo?>";
Ist das eine verkürzte schreibweise für <?php echo $foo; ?> ?
Beitrag zuletzt geändert: 19.8.2010 19:27:54 von simuliertes -
Du könntest auch einfach ein PHP Script schreiben das die Daten aus der DB ausliest und daraus das JS erstellt. Also dynamisch generierstes JS. Damit ist es zwar nciht Live und aktualisiert sich nur bei jedem aufruf, aber das sollte für den anwendungszweck reichen.
DB kann so aussehen: ID + zitat
Dein JS "ticker.js" musst du einfach umbenennen in "ticker.php" und dann folgenden Teil verändern:
Also zuerst die Sachen aus der DB auslesen (mysqli_query) - Das schaffst du selbst! (select zitate from dbname)
var texte = new Array( <?php while ($texte = mysqli_fetch_array($query)) { echo "\'$texte['zitat']\',\n"; } ?> );
Du musst dich wahrschienlich noch damit herumschlagen das php die < des JS nicht als Syntaxfehler interpretiert, aber das wars eigentlich schon...
Beitrag zuletzt geändert: 19.8.2010 20:19:32 von aklasse -
aklasse schrieb:
var texte = new Array( <?php while ($texte = mysqli_fetch_array($query)) { echo "\'$texte['zitat']\',\n"; } ?> );
Sorry aklasse aber dat wird so nicht ganz funktionieren.
1) das Array wird fehlerhaft sein weil am ende ein komma zu viel ist
2)header("Content-type: application/x-javascript"); muss an den Anfang
3)Javascript Dateien werden bei einigen browsern aus der Cache geladen, d.h. der Verweis auf die js-Datei muss jedesmal anders sein z.B indem man an die url Datum+Uhrzeit als GET-anfrage anhängt (=der Browser denkt es ist eine neue Datei und läd sie nicht aus der Cache)
Edit:
4)falscher Syntax:
echo "\'$texte['zitat']\',\n";
richtig wäre:
echo "\'".$texte['zitat']."\',\n";
Fühl dich bitte nicht ans Bein gepinkelt
Beitrag zuletzt geändert: 19.8.2010 20:37:40 von simuliertes -
simuliertes schrieb:
...
Edit:
weil ich es noch nicht kenne:
fabo schrieb:
<?PHP=$foo?>";
Ist das eine verkürzte schreibweise für <?php echo $foo; ?> ?
jau das ist es, funktioniert aber seltsamerweise nicht immer, zumindest bei mir nicht immer.
(hab 2 rechner mit 2 xampp-installationen, bei einer - der älteren - gehts, bei der anderen nicht... )
b2t: was eben schon häufiger genannt wurde: du kannst zwar in einer *.js-datei kein PHP verwenden, aber in einer *.php-datei JS^^ -
t-li schrieb:
simuliertes schrieb:
...
Edit:
weil ich es noch nicht kenne:
fabo schrieb:
<?PHP=$foo?>";
Ist das eine verkürzte schreibweise für <?php echo $foo; ?> ?
jau das ist es, funktioniert aber seltsamerweise nicht immer, zumindest bei mir nicht immer.
(hab 2 rechner mit 2 xampp-installationen, bei einer - der älteren - gehts, bei der anderen nicht... )
b2t: was eben schon häufiger genannt wurde: du kannst zwar in einer *.js-datei kein PHP verwenden, aber in einer *.php-datei JS^^
Zumindest die neueren Versionen von Xampp unterstützen Shorttags nicht auf Anhieb. so funktioniert bei mir z.B. <?PHP=$foo?> aber nicht <?=$foo?> -
simuliertes schrieb:
aklasse schrieb:
2)header("Content-type: application/x-javascript"); muss an den Anfang
Das ist dem Browser meiner Erfahrung sowas von egal... xD
Damit du aber auch Netsacpe 4.0 unterstützt solltest du es auf jeden Fall einbauen!
SRY für den Syntax Mist mit dem Mysql array... naja, php ist so unsauber da versucht man mal das eine und andere... ;D -
aklasse schrieb:
PHP -> Webserver
JS -> Browser
Stichwort: AJAX
Du musst einfach ein PHP Script erstellen das die Teile aus der DB ausliest. Mit JS fragst du das dann ab (Klick event oder z.B. alle 1 min).
Suche einfach nach AJAX bei Google, da findest du alle Tutorials.
Kann dir empfehlen, einfach mal jQuery auszuprobieren. Dann brauchst du dich nicht extra in AJAX einzuarbeiten. Außerdem spart es einiges an Tipparbeit und es lassen sich noch eine ganze Menge andere Dinge damit anstellen. Das Script kannst du vom Googleserver verlinken. -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage