• Das Erstellen neuer Accounts wurde ausgesetzt. Bei berechtigtem Interesse bitte Kontaktaufnahme über die üblichen Wege. Beste Grüße der Admin

Mysql-Abfrage mit PHP, weiterleiten an JS?

mrhenky

New member
Sehr geehrte Community!

Ich habe mir schon die Suchfunktion zu Hilfe genommen und schon ansatzweise eine Lösung für mein Problem gefunden, allerdings scheint es so, als ob ich nicht alles hundertprozentig verstanden hätte.

Zuerst möchte ich gerne mein Problem schildern:

Bei einer Seite, die fürs iPhone optimiert ist, habe ich einen Login konstruiert. Bei diesem Login wird in der Datenbank am Server überprüft, ob der Name und das Passwort bereits vorhanden ist (Der User soll die mobile Anwendung benutzen können, wenn er sich auf der Hauptseite registriert hat)
Anschließend kommt der User auf eine Seite, die ihn benachrichtigt, ob der Login erfolgreich war, oder nicht
Nach dieser Benachrichtigung kommt der User auf eine Javascript Liste, die ich mir erlaubt habe aus Dashcode zu kopieren. Nun ist es so: diese Liste bekommt die Werte, die sie anzeigen soll, in folgender Form:

var parks = [
{ name: "Name", location: "Ort" },
{ name: "Name2", location: "Ort2" },
{ name: "Name3", location: "Ort3" },
usw.
];

Der Name ist in Vorname und Nachname aufgeteilt. Also müsste ich theoretisch eine Query der folgenden Art durchführen:
$aufruf = mysql_query('SELECT vname, nname FROM user');

Der Ort ist ebenso in zwei Werte aufgeteilt. Daher müsste die Abfrage so lauten:
$ortsangabe = mysql_query('SELECT plz, ort FROM user');
Wie ich allerdings die Werte in eine Variable zusammenfüge, ist mir ein Rätsel.

Mein Problem:
Ich möchte diese Variable, die in einer Javascript Datei liegt mit Werten aus meiner Datenbank befüllen. Da man aber keine sichere Verbindung mit einer DB über Javascript herstellen kann, muss ich die Verbindung über PHP durchführen. Also dachte ich mir: Das auslesen der DB soll nach der Überprüfung des Logins, in der Benachrichtigungsdatei erfolgen (die Benachrichtigungsdatei ist .php)

Meine Fragen an die kompetente Community lauten nun:
Wie stelle ich es an, dass ich meine Daten aus der Datenbank so wiedergebe, dass ich eine JS-Variable wie oben gezeigt erstellen kann?

Weiters möchte ich fragen, wie ich dann in der "Auflistungsdatei" - datei meine -in PHP erstellte- JS-Variable aufrufen, sodass meine Daten richtig dargestellt werden.

Ich hoffe ich konnte mein Problem verständlich schildern und bedanke mich im Vornherein für eure Antworten.

mir freundlichen Grüßen
mrhenky
 
Danke für den Link, jetzt weiß ich, dass ich über

<?php
mysql_connect("hostname", "user", "password");
mysql_select_db("mydb");
$result = mysql_query("select * from mytable");
while ($row = mysql_fetch_object($result)) {
echo $row->user_id;
echo $row->fullname;
}

mysql_free_result($result);
?>

die einzelnen Felder meiner DB ansprechen kann. Gut.
Jetzt stellt sich mir aber immer noch die Frage, ob und wie ich meine Ergebnisse in eine JavaScript - Variable speichern und an eine JS - Seite weiterleiten kann.

mfg
mrhenky
 
Jetzt stellt sich mir aber immer noch die Frage, ob und wie ich meine Ergebnisse in eine JavaScript - Variable speichern und an eine JS - Seite weiterleiten kann.
php generiert textfiles in einer beliebigen syntax, da wird noch der http header davor gebastelt und das ganze an den client gesendet. idR ist das HTML. jetzt kannst du natürlich in deinem html einen script block generieren und dort hinein deine variable generieren oder du generierst halt kein HTML sondern JS mit deiner Variable und bindest das als externes script in deine HTML seite ein.
 
PHP:
<?php
mysql_connect("hostname", "user", "password");
mysql_select_db("mydb");
$result = mysql_query("select * from mytable");
echo '<script type="text/javascript">var users = new Array();';
while ($row = mysql_fetch_object($result)) {
    echo 'users['.$row->user_id.'] = "'.$row->fullname.'";';
}
echo '</script>';
mysql_free_result($result);
?>
 
Vielen Dank für die bisherigen Antworten, sie haben mein Verständnis ordentlich weitergetrieben.

Eine Frage zu folgendem Code habe ich jedoch noch:
Erhalte ich dann in meiner PHP - Datei eine JS - Variable mit dem namen 'users' und dem Inhalt "[1]=vollerName, [2]=TestName, ..." ?

echo '<script type="text/javascript">var users = new Array();';
while ($row = mysql_fetch_object($result)) {
echo 'users['.$row->user_id.'] = "'.$row->fullname.'";';
}
echo '</script>';

Dann ist noch eine Frage in der Schwebe:
Wie bringe ich eben diese, in PHP erstellte JS - Variable, in ein externes JS-File? Über XMLHTTPRequest? Ich habe leider keine Ahnung wie ich so einen Request erstelle, der eine externe Variable einbindet und zur Verwendung zur Verfügung stellt.

Ich wäre sehr erfreut, wenn ihr mir auch noch bei diesem Problem helfen könntet.

mit freundlichen Grüßen
mrhenky
 
Erhalte ich dann in meiner PHP - Datei eine JS - Variable mit dem namen 'users' und dem Inhalt "[1]=vollerName, [2]=TestName, ..." ?

das script erzeugt ein array users mit der spalte user_id als index und der spalte fullname als wert.

Wie bringe ich eben diese, in PHP erstellte JS - Variable, in ein externes JS-File?
das brauchst du nicht. wenn du in deinem html erst den scriptblock mit der variablen einbindest und dann den Teil der sich darauf bezieht sollte alles funktionieren.
 
Aha, in einem File würde es also gehen. Mein Problem ist aber nun, ich habe viele Files zwischen denen ich immer hin und her springen muss.

Um genau zu sein, habe ich als Startseite der Page einen Login (mobile/index.html), der die Daten aus dem Login-Form zur Überprüfung weiterschickt (passiert in success.php). Von dort aus leite ich mit einem automatischen Page-Reload auf die Startseite eines anderen Ordners (auflistung/index.html). Dort wird dann das Javascript - File (main.js) eingebunden und angezeigt.

Ich habe mir überlegt, dass ich neben der Loginüberprüfung (success.php) auch gleich die Vor- und Nachnamen, den Ort und die PLZ aus der Datenbank an die Javascript-Datei (main.js) weiterleite.

Mein Problem ist nämlich:
In meinen HTML-Files habe ich nur die Struktur der Seite. Die ganze Action spielt sich im PHP-File (success.php) und eigentlich in der Javascript - Datei (main.js) ab. Daher frage ich, wie ich eine JS-Variable versenden kann.

Ich hoffe ich konnte meine Struktur und die damit verbundene Problematik verständlich ausdrücken.

mit freundlichen Grüßen
mrhenky
 
Ich habe gerade probiert die Datenbankabfrage in der auflistung/index.html einzusetzen, aber dann habe ich gemerkt, dass mein Dreamweaver seltsamerweise das php in der html - datei nicht erkennt. (Bild1)

Dann habe ich das ganze ausgeführt und habe dann den folgenden Fehler erhalten (Bild2)

Dreamweaver erkennt php, aber nur in einer php - datei.

mfg
mrhenky
 

Anhänge

  • php-in-html.jpg
    php-in-html.jpg
    51,9 KB · Aufrufe: 4
  • problem.jpg
    problem.jpg
    71,1 KB · Aufrufe: 4
mach aus der html-datei eine php datei
oder binde den script-block als externe (php)datei ein
oder besorge dir die daten per XMLHttprequest
 
Ich habe jetzt in einer externen PHP - Datei genau die Ausgabe gebastelt, die ich brauche, um sie dort einzubinden, wo die Ausgabe stattfinden soll:

while($row = mysql_fetch_array($test)){
echo "{ name: ".$row['vname']." ".$row['nname'].", location: ".$row['plz']." ".$row['ort']."}, ";
echo "<br>";
}

kann ich diese Ausgabe in einer Variable speichern, die ich dann per XMLHTTPRequest aufrufen kann?

mfg
mrhenky
 
Ich habe jetzt in einer externen PHP - Datei genau die Ausgabe gebastelt, die ich brauche, um sie dort einzubinden, wo die Ausgabe stattfinden soll:

nein, das ist nicht die ausgabe die du brauchst, das soll ja JS werden, ein <br> ist aber html. außerdem erzeugst du hier nur temporäre objekte. du mußt diese objekte noch deinem array (welches du noch anlegen mußt) zuweisen.

while($row = mysql_fetch_array($test)){
echo "{ name: ".$row['vname']." ".$row['nname'].", location: ".$row['plz']." ".$row['ort']."}, ";
echo "<br>";
}

kann ich diese Ausgabe in einer Variable speichern, die ich dann per XMLHTTPRequest aufrufen kann?
du könntest die php-datei einfach mit einem XMLHTTPRequest anfordern, das ist aber nicht nötig, binde diese einfach per script block ein
<script type="text/javascript" src="PHP_DATEI.PHP"></script>
 
Zuallererst möchte ich mich für die schnellen und hilfreichen Antworten bedanken. Ihr habt mir sehr geholfen damit. Danke.

Jetzt habe ich meine "Übergabe-Seite" komplett programmiert. Sie gibt mir das aus was ich haben möchte.

Hier der komplette Inhalt der Seite uebergabe.php:
<?PHP
include "../config/db_connect.php";
$test = mysql_query("SELECT vname, nname, ort, plz FROM user");
while($row = mysql_fetch_array($test)){
echo "{ name: ".$row['vname']." ".$row['nname'].", location: ".$row['plz']." ".$row['ort']."}, ";
echo "<br>";
}
?>

ich habe leider sehr wenig Ahnung von AJAX und daher habe ich noch eine Frage:
Kann ich mit XMLHTTPRequest in der Variable var parks[...] der Seite main.js die Seite uebergabe.php quasi "öffnen und ausführen", so dass die Ausgabe der php - Seite der Inhalt der Variable wird?

Wie gesagt, ich habe sehr wenig Ahnung von AJAX und ich freue mich über jede Antwort.

mfg
mrhenky
 
Jetzt habe ich meine "Übergabe-Seite" komplett
programmiert. Sie gibt mir das aus was ich haben möchte.
das ist und bleibt falsch.

Kann ich mit XMLHTTPRequest in der Variable var parks[...] der Seite main.js die Seite uebergabe.php quasi "öffnen und ausführen", so dass die Ausgabe der php - Seite der Inhalt der Variable wird?
ja wenn du es denn unbedingt mit ajax machen willst, seis drum.
Tryit Editor v1.4
du mußt im onreadystatechange des XMLHttpRequests den response text einfach mit eval auswerten.
 
Zurück
Oben