Javascript->(Ajax?)->Php->Mysql

MisuMasu

Mitglied
Hallo,
Ich bin relativ neu in den sprachen.

zu meinem Problem:

Meine Html file :
HTML:
<!doctype html>
<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=UTF-8">
<title type="text/css">Museum</title>

        <script src="js/sencha-touch.js" type="text/javascript"></script>
        <script src="js/index.js" type="text/javascript"></script>
        <link href="css/sencha-touch.css" rel="stylesheet" type="text/css" />


</head>
<body>


</body>
</html>

Ich habe eine MySql datenbank mit testdaten. (funktioniert)
Ein PHP skript zum anmelden mit der abfrage
PHP:
$sql = "SELECT id, bild FROM bilder";
(connected und funktioniert).

Komplet :
PHP:
<?php
header('Content-Type: text/html; charset=utf-8');

$mysqlhost="localhost"; // MySQL-Host angeben

$mysqluser="xx"; // MySQL-User angeben

$mysqlpwd="xx"; // Passwort angeben

$mysqldb="xx"; // Gewuenschte Datenbank angeben

 

$connection=mysql_connect($mysqlhost, $mysqluser, $mysqlpwd) or die

("Verbindungsversuch fehlgeschlagen");

 

mysql_select_db($mysqldb, $connection) or die("Konnte die Datenbank nicht

waehlen.");

 

$sql = "SELECT id, bild FROM bilder";

$adressen_query = mysql_query($sql) or die("Anfrage nicht erfolgreich");
   # Den gefundenen Datensatz einlesen !
	$daten = mysql_fetch_array($adressen_query, MYSQL_ASSOC);
    # Alle Daten aus dem Array anzeigen
    print_r($daten);
if($connection){
	echo 'DB GEHT...';
}else {echo'kaka';}
?>

ein Javascript das meine das über die Html seite geladen wird, diese JS benutzt frameworks ist also quasi die GUI.(funktoniert).

das Problem ist nun wo und wie binde ich mein PHP-Script ein damit die verbindung permanent steht?
und wie kann ich im JS die Variable, aus meiner php §sql, abfragen bzw. im JS dann auch verwenden?

also ich möchte quasi nur im Javascript daten aus meiner DB verwenden.
hab gehört das es mit ajax geht. könnte mir da einer helfen wie sowas auszusehen hat?

Mfg Misu
 
Zuletzt bearbeitet:
Erstmal willkommen im Tut.de Forum ...

um den doppelten Thread mach dir mal kene Sorgen ... das machen unsere Mods schon ... *trotzdem hättest du dich in Geduld üben können und nicht ein zweites mal auf "Thread erstellen" klicken müssen*.

Zu deinem Problem :
Man kann JavaScript *Client* und PHP *Server* so nicht mit ein andere koppeln. Auch nicht über AJAX.
Wie du auf dieses "Verbindung dauerhaft offen" kommst weis ich nicht und verstehe auch nicht was du damit willst.
Warum du überhaupt den Umweg über AJAX machen willst erschließt sich mir auch nich ... sowas kann man auch rein mit PHP machen.

Du siehst also das hier noch etwas mehr Infos fehlen was du willst.

*Und bitte verwende nächste mal Interpunktion , Rechtschreibung und lies dir deinen Post selbst nich mal durch ob er verständlich ist ... denn das ist deiner nur teilweise.*
 
-Aus dem anderen Thread-

Hi und Willkommen bei tutorials.de :)

Eine permanente HTTP-Verbindung zu PHP gibt es nicht.

Zu Ajax gibt es jede Menge Seiten im Netz, zB. http://ajax.frozenfox.at/
Bibliotheken wie JQuery vereinfachen das Ganze aber noch etwas

Geht es dir ums Lernen von "purem" Ajax oder nur um das Ergebnis?

edit: Wie Spikee schon sagte: Ajax ist nicht immer ein Muss.
Nur wenn du während dem Seiten-anzeigen noch immer SQL brauchst.
zB. Beim Anhaken einer Checkbox eine neue Abfrage etc.
 
Danke für die antwort.

Wie ich schon geschrieben habe, ist php und javascript neuland für mich.
Im Groben erstelle ich eine Webapp mit Javascript. Mit dieser App kann man sich später Bilder angucken und zu diesen Bildern Infos abfragen können.

Hier ein Ausschnitt wo ich eine Datenbank Info brauche :

Java:
.....
	   var f1={
		   style:"background-color: #B22222; color:white;",
		   titel:"f1",html:t
	   };
	   var f2={
		   style:"background-color: #FFBF00; color:white;",
		   titel:"f2",html:"f2"
	   };
	   var f3={
		   style:"background-color: #3B7E00; color:white;",
		   titel:"f3",html:"f3"
	   };	   
		p = new Ext.Carousel({
		  dock:'center',
		  layout:'card',
		  fullscreen : true,
		//  animation:{type:'fade',duration: 500},
		  items:[f1,f2,f3]
		  //html       : '<img class="center" src="balum.jpg">'
	    });
.....
In der Variablen f1-f3 sollen später Text bzw. Bilder dargestellt werden.

Nun habe ich eine Php file erstellt um auf meine Datenbank zu Connecten:

PHP:
<?php
header('Content-Type: text/html; charset=utf-8');

$mysqlhost="localhost"; // MySQL-Host angeben

$mysqluser="xx"; // MySQL-User angeben

$mysqlpwd="xx"; // Passwort angeben

$mysqldb="xx"; // Gewuenschte Datenbank angeben

 

$connection=mysql_connect($mysqlhost, $mysqluser, $mysqlpwd) or die

("Verbindungsversuch fehlgeschlagen");

mysql_select_db($mysqldb, $connection) or die("Konnte die Datenbank nicht

waehlen.");

$sql = "SELECT id, bild FROM bilder";

$adressen_query = mysql_query($sql) or die("Anfrage nicht erfolgreich");
   # Den gefundenen Datensatz einlesen !
	$daten = mysql_fetch_array($adressen_query, MYSQL_ASSOC);
    # Alle Daten aus dem Array anzeigen
    print_r($daten);
if($connection){
	echo 'DB GEHT...';
}else {echo'kaka';}
?>

Als Beispiel soll die oben genannte Variable f1, sich nun ein Datensatz aneignen, in dem fall $daten.

Hierfür müsste ich ja irgendwo meine Php aufrufen um mir die Infos zu besorgen.
Das ist Momentan eins meiner Probleme.

Bezüglich der "Permanenten" Verbindung: Später wird man in der Lage sein, durch Sliden auf dem TouchPad eines Smartphones, Bilder in einer Art Diashow zu Betrachten(Permanenter Datenbank aufrufe?).
Oder ist es doch eher so, dass ein einmal ausgeführtes Php script Permanent läuft bis das Programm bzw. der Browser geschloßen wird?

Hoffe es ist Verständlich.

Misu

Edit* (Sheel) : Ja genau, es handelt sich um den Center Bereich. Deswegen die frage nach Ajax. Falls es anders geht, wäree es auch super ;)
Nur auf Ergebnis
 
Zuletzt bearbeitet:
Ein PHP-Skript läuft nur, BEVOR die Seite angezeigt wird.
Es generiert irgendwas aus HTML/CSS/Javascript, das dann im Browser läuft.
Zu dem Zeitpunkt ist PHP aber schon wieder fertig.

Sonderfall Ajax: Das startet PHP noch einmal/mehrmals kurzzeitig, aber nur bis es seine Daten bekommen hat. Dann wieder Ende.

Zu deiner Seite: Wäre es nicht einfacher, die Infos für alle Bilder gleich von Anfang an zu laden?
Statt für jedes Bild extra abzufragen?
Dann würdest du ohne Ajax auskommen.
 
Aha..
Also du meinst Quasi die Bilder(verlinkungen) in ein IMG Array speichern bzw. das selbe für die Infos in Form eines String Arrays. Wäre besser recht hast du. Nen schönen Loading screen und nur einmal Laden.
Hättest du da mal nen Ansatz für mich, wie man in PHP ein Array befühlt aus einer Datenbank?

Bin leider mit Java aufgewachsen und hab wenig ahnung wie ich in php array fülle , dass auch noch aus einer DB ;( Quasi:
Java:
for(int i =0;i<array.lenght;++i){
       array[i]=i;
}
 
Ein Loading Screen wird nicht nötig werden, weil:
Alles, was vorgeladen werden muss, sind die Beschreibungen (roher Text braucht nicht viel Byte) und die Dateinamen der Bilder. Nicht die Bilder selbst.
Das eigentliche Bild wird dann, sobald es gebraucht wird bzw. mit JS irgendwo angezeigt wird, vom Browser automatisch nachgeladen.

Bei einer normalen HTML-Seite stehen ja auch nur die Dateinamen drin, und der Browser holt sich die Bilder trotzdem. Unabhängig von PHP, JS oder Ajax.

Wenn einem das Nachladen zu langsam ist, kann man ja mit JS eine Art Preloader machen: Zuerst 3 Sek. warten, für die Bilder, die von Anfang an da sind, dann irgendwo 1x1-Pixel groß die anderen Bilder anzeigen lassen und den Browsercache walten lassen.

Zu Abfragen in PHP:
http://www.tutorials.de/content/1168-php-mysqli-query-absetzen.html
hat die wichtigsten Sachen.
Die Daten dann beim Erstellen der Seite in ein JS-Array schreiben.
 
Zuletzt bearbeitet:
Das wäre super.
Eine Verständnis Frage noch.
Was mich noch Interessiert ist, da ich dann ja z.b. 2 Arrays habe die in der Php file befüllt werden, wie kriege ich diese an meine JS übergeben? Falls das so sit,wo und wie würde ich das Php Script ausführen?
Oder erstelle ich die Arrays in der JS und befülle sie da auch Quasi über den aufruf meines Php scripts?
 
PHP wird von dir ausgeführt, indem du die URL der Datei im Browser eingibst :)
Und die Arrays zuerst in JS erstellen wird nicht gehen, weil es da noch kein JS gibt :D

Da gibts wohl ein kleines Verständnisproblem:
Ohne PHP gibt es eine HTML-Seite, die kann CSS und JS drinnen haben.
Mit JS kann man während dem Anzeigen daran herumändern, aber im Grunde bleibt es immer der gleiche Inhalt.

Mit PHP gibt es am Anfang nur die PHP-Datei.
Wenn die wer aufruft, wird von ihr eine HTML-Seite erstellt.
Dazu kann es natürlich auch wieder CSS und Javascript geben.

PHP erstellt die komplette JS-Funktion samt HTML herum also erst, und kann sich dabei bei Datenbanken auf dem Server und Ähnlichem für den Inhalt bedienen.

Ergänzung:
Beispiel:
Eine HTML-Seite:
HTML:
<html>
  <head>
    <title>Hallo</title>
  </head>
  <body>
    Da steht der Inhalt
  </body>
</html>

Wenn man diese Seite durch eine PHP-Datei erstellen lassen will, würde das ca. so ausschauen (nur Beispiel, keine Garantie auf Funktionsfähigkeit):
PHP:
<?php
    echo '<html>';
    echo '<head>';
    echo '<title>';
    echo 'Hallo';
    ...
?>
Und zB. das Hallo muss nicht immer gleich sein, sondern kann auch aus einer Datenbank abgefragt werden.

Da eine HTML-Datei auch <script>-Blöcke mit Javascript enthalten kann, kannst du in PHP was aus der DB holen und mit echo so ausgeben, dass es von Anfang an in einer Javascript-Variable steht.
 
Zuletzt bearbeitet:
Nebenbei: es gibt seit HTML5 eine Möglichkeit, bei der man eine permanente Verbindung zwischen Klient und Server aufbauen kann: WebSockets. Somit kann man Polling seitens des Klients beseitigen und sowohl Klient als auch Server können bei einer Statusänderung ihrerseits Daten an den jeweils anderen Akteur schicken.

Zu deiner letzten Frage: eine Möglichkeit wäre, dass du die Bilder aus der deiner Datenbank in ein Javascript-Objekt speicherst und das dann im Quelltext deiner Seite einer Javascript-Variabeln zuweist.
PHP:
<?php
$picture_string = '"' . implode('","', $daten) . '"';
?>
<!-- sonstiger Quelltext -->
<script type="text/javascript">
var pictures = [<?php echo $picture_string; ?>];
</script>
Das dürfte dann etwas wie folgt ausgeben:
Code:
var pictures = ["bild1.png","bild2.png","bild3.png"];
 

Neue Beiträge

Zurück