ID mittels Javascript an PHP Datei weiterleiten

Moderatoren: crack, Marwin, Krüsty

Beitragvon Rudi » Donnerstag 31. Juli 2003, 15:14

Hallöchen Marwin,

da bin ich mal wieder.
Habe folgendes Problem.

Wie Du ja sicher noch weist, lese ich mit einem DropDown Menü die ID´s aus der Datenbank aus und gebe diese an eine zweite Datei - ticker.php - weiter.
Dies klappt auch wunderbar.
Nun ist es so, daß ein bestimmter Inhalt in der Datei - ticker.php - der aus der Datenbank über die angewählte ID geladen wird, immer meine Tabelle verunstaltet.
Deshalb möchte ich diesen Datensatz aus der - ticker.php - rausnehmen und aus der Datenbank Tabelle mittels Frame, in eine neue Datei laden.
Dazu habe ich folgenden Code bekommen um die ID, die über das DropDown Menü an die - ticker.php - übergeben wurde. Wiederum aus der - ticker.php - , an die neue - player.php - weiter zu leiten.

Hier mal der Code aus der ticker.php .

Code: Alles auswählen
<?php

include ("config.php");

$verbindung = mysql_connect($dbhost, $dbuser, $dbpass);
mysql_select_db($dbname);

$sql = "SELECT ticker_info FROM sender WHERE (id = ".$_POST[auswahl].")";
$result = mysql_query($sql);

echo mysql_error();

list($ticker_info) = mysql_fetch_row($result);

mysql_close($verbindung);
?>



Und hier der Code, mit dem ich die weitere Übergabe der ID an die neue Seite realisieren können soll.

Code: Alles auswählen
echo "<script type=\"text/javascript\">
 parent.play.location.href = \"player.php?id=\"".$id."\";
</script>";



Nun muß ich damit die echo Anweisung auch funktioniert, eine while schleife einfügen.
Dies habe ich auch gemacht.

Hier der Code für die while schleife:

Code: Alles auswählen
while (list($id) = mysql_fetch_row($result))
{


Aber das scheint mir nicht richtig zu sein!

Hier nochmal der ganze Code aus der ticker.php mit while und jacascript:

Code: Alles auswählen
<?php

include ("config.php");

$verbindung = mysql_connect($dbhost, $dbuser, $dbpass);
mysql_select_db($dbname);

$sql = "SELECT ticker_info FROM sender WHERE (id = ".$_POST[auswahl].")";
$result = mysql_query($sql);

while (list($id) = mysql_fetch_row($result))
{
echo "<script type=\"text/javascript\">
  parent.play.location.href = \"player.php?id=\"".$id."\";
</script>";
}
echo mysql_error();

list($ticker_info) = mysql_fetch_row($result);

mysql_close($verbindung);
?>


Leider funktioniert das so nicht.Habe bestimmt wieder einen total blödsinnigen Fehler gemacht.

Kannst Du mir mal auf die Sprünge helfen?

Gruß Rudi
Rudi
Advanced Member
 
Beiträge: 30
Registriert: Donnerstag 24. Juli 2003, 17:05

Beitragvon Marwin » Freitag 1. August 2003, 14:31

Habe bestimmt wieder einen total blödsinnigen Fehler gemacht.

Na na, wer wird den gleich [...]
Aus Fehlern lernt man doch!

Um ganz ehrlich zu sein, ich habe dein Problem nicht verstanden. Aber beim Anblick deines letzten Code-Beispiels fällt mir sofort ein Fehler auf. Du holst ticker_info aus der Datenbank, wertest sie danach aber in der WHILE-Schleife aus.
Und da das Ergebnis des MySQL-Querys nur eine Zeile zurückgibt (nehme ich zumindest an) wird die Schleife nur einmal durchlaufen. Das bedeutet auch, dass die letzte list()-Anweisung in einer Fehlermeldung endet.

Am besten wäre es, wenn du noch einmal kurz und knapp erklärst, was das Script nacheinander machen soll , was es aus der Datenbank holen und was es darstellen soll.

Marwin
Benutzeravatar
Marwin
Moderator
 
Beiträge: 307
Registriert: Donnerstag 8. Mai 2003, 21:19
Wohnort: Seelow, Deutschland

Beitragvon Rudi » Freitag 1. August 2003, 17:01

Hi Marwin,

ich glaube da liegst Du nicht ganz richtig.
Also nochmal in kurz Form.

Ich wähle mit dem DropDown Menü eine ID an.
Die ID diedie dann aus der Datenbank geholt werden soll, wird der ticker.php mitgeteielt.
In der ticker.php wird diese ID aus der Datenbank dann ausgelesen und wird somit bekannt.
Mit dieser bekannten ID, werden nun die noch zu dieser ID gehörigen Infos aus der Datenbank geholt und weiterverarbeitet. Dazu gehören z.B. die ticker_info.


Diese wird dann so verarbeitet.
Den Krahm mit dem connect zur Datenbank habe ich mal weggelassen!

Code: Alles auswählen
$sql = "SELECT ticker_info FROM sender WHERE (id = ".$_POST[auswahl].")";
$result = mysql_query($sql);
echo mysql_error();

list($ticker_info) = mysql_fetch_row($result);

mysql_close($verbindung);


echo "".$ticker_info;   <- Dies Anweisung steht unterhalb des PHP codes in einem Javascript Ticker Code!



Das Anzeigen der ticker_info funktioniert auch weiterhin!

Obwohl ich nochmal diesen Code:

Code: Alles auswählen
while (list($id) = mysql_fetch_row($result))
{
echo "<script type=\"text/javascript\">
 parent.play.location.href = \"player.php?id=\"".$id."\";
</script>";
}


vor diesen Code,
Code: Alles auswählen
echo mysql_error();
in dem Oben gezeigten Code gestellt habe.

Wie Du siehst, ist in dem nachträglich eingefügten Code ein Javascript String enthalten.
Dieser soll bewirken das die ID, die ja nun in der ticker.php bekannt ist. Nochmal an eine zweite php Datei Namens player.php übergeben wird. Um wiederum mit dieser player.php über die ID, Daten aus der Datenbank holen zu können!
Nur funktioniert das leider nicht so wie ich will.

Das Javascript ist enthalten, weil die player.php in einem Frame geladen werden muß und ich muß mit der gleichen ID arbeiten, die schon vorher im DropDown Menü angewählt wurde!

Ich habe auch so wie die ticker.php jetzt aufgebaut ist, keine einzige Fehlermeldung bekommen.
Die ticker_info´s aus der Datenbank liefen auch im Javascript Ticker. Nur der Player,der aus der Datenbank eigentlich mit dem ID übergebenden JS Code in die player.php geladen werden sollte. Spielt nicht!


So,hoffe es ist Dir jetzt etwas verständlicher geworden.
Die bekannte ID,soll aus der ticker.php zusätzlich an die neue player.php, die in ein Frame geladen werden muß, übergeben werden.


Gruß Rudi
Rudi
Advanced Member
 
Beiträge: 30
Registriert: Donnerstag 24. Juli 2003, 17:05

Beitragvon Marwin » Freitag 1. August 2003, 19:06

Hi Rudi,

das Problem befindet sich wahrscheinlich in der echo-Anweisung. Dein Code:

Code: Alles auswählen
echo "<script type=\"text/javascript\">
parent.play.location.href = \"player.php?id=\"".$id."\";
</script>";


gibt nämlich folgendes an den Browser aus:

<script type="text/javascript"]
parent.play.location.href = "player.php?id="2";
[/script]



So wird der SCRIPT-Tag korrekt ausgegeben:

Code: Alles auswählen
echo "<script type=\"text/javascript\">\n".
"  parent.play.location.href = \"player.php?id=".$id."\";\n".
"</script>\n";


Das ist die dazugehörige Ausgabe:

<script type="text/javascript"]
  parent.play.location.href = "player.php?id=2";
[/script]


Ich denke, damit sollte dieses Problem behoben sein,
Marwin
Benutzeravatar
Marwin
Moderator
 
Beiträge: 307
Registriert: Donnerstag 8. Mai 2003, 21:19
Wohnort: Seelow, Deutschland

Beitragvon Rudi » Samstag 2. August 2003, 00:43

Hi Marwin,

habe Deine Antwort mit Spannung gelesen.
Werde es direkt morgen Früh ausprobieren.
Sitze zur Zeit leider auf der Arbeit und kann jetzt nichts machen.
Außerdem muß ich erstmal wieder meinen alten Apache auf den Server laden.Habe heute mit ner neuen xampp Version gespielt, aber das Teil läuft voll Sch**** und verbraucht tierische Resourcen.

Aber Danke schonmal im Vorraus!
Werde Dir dann Nachricht geben wenn es funzt, oder auch nicht.;-)

Ciao Rudi
Rudi
Advanced Member
 
Beiträge: 30
Registriert: Donnerstag 24. Juli 2003, 17:05

Beitragvon Rudi » Samstag 2. August 2003, 18:23

Hi Marwin,

habe Deinen Code eingebaut und in der ticker.php gibt es erstmal keine Probleme!

Der Code sieht nun so aus:

ticker.php

Code: Alles auswählen
<?php
include ("config.php");

$verbindung = mysql_connect($dbhost, $dbuser, $dbpass) or die(mysql_error());
mysql_select_db($dbname) or die(mysql_error());


$sql = "SELECT ticker_info FROM sender WHERE (id = ".$_POST[auswahl].")";
$result = mysql_query($sql) or die(mysql_error());

while (list($id) = mysql_fetch_row($result))
{
echo "<script type=\"text/javascript\">\n".
"  parent.play.location.href = \"player.php?id=".$id."\";\n".
"</script>\n";
}

list($ticker_info) = mysql_fetch_row($result);
mysql_close($verbindung);
?>


Die ID, die von der ticker.php an die player.php weitergeleitet werden soll. Versuche ich jetzt mit folgendem Code in der player.php zu übernehmen.

player.php

Code: Alles auswählen
<?php

include ("config.php");

$verbindung = mysql_connect($dbhost, $dbuser, $dbpass);
mysql_select_db($dbname);

echo $_GET[id];

$sql = "SELECT player_typ FROM sender WHERE (id = ".$_GET[id].")";
$result = mysql_query($sql) or die(mysql_error());

list($player_typ) = mysql_fetch_row($result);

mysql_close($verbindung);
?>
<? echo "".$player_typ;?>


Dadrin muß aber wieder ein fatahler Fehler liegen!

Wenn ich im Browser das Frame Set aufrufe, wird in dem einen Frame zuerst die radio.php ( so heist die Datei, in der das DropDown Menü eingebunden ist und die ticker.php included wird ), geladen und in dem anderen Frame die player.php.
Soweit so gut denke ich. Es kommen auch keine Fehlermeldungen!
Wenn ich jetzt aber aus dem DropDown Menü einen Sender (ID Punkt ) auswähle, scheint zwar etwas geladen zu werden und die player.php will auch was machen. In dem Frame der player.php wird mir aber diese Fehlermeldung ausgegeben:


Die Anfrage kann nicht beantwortet werden, da im Server ein interner Fehler aufgetreten ist.

Fehlermeldung: couldnt create child process: 22: E:/wampp-0.2.1c/php/php.exe



In der ticker.php wird auch nicht die ticker_info aus der Datenbank geladen, und im Javascript Ticker der in dieser Datei enthalten ist, angezeigt!

Wenn ich diese Fehlermeldung richtig deute, hat meine php.exe ein Problem damit diese Befehle zu verarbeiten!

Ich raffe das alles nicht mehr!
Wenn ich ohne Frames arbeite und den player_typ als echo mit in die ticker.php lade, läuft alles perfekt!



Hast Du da vieleicht noch eine Tipp.

Rudi
Rudi
Advanced Member
 
Beiträge: 30
Registriert: Donnerstag 24. Juli 2003, 17:05

Beitragvon Marwin » Samstag 2. August 2003, 20:16

Was enthält player_typ denn? Einen JavaScript-Befehl, einen Dateinamen oder

etwas ganz anderes?
Was macht play.location.href? Gibt es an, wo die Multimedia-Datei zu finden

ist? Wenn ja, dann muss player_typ eigentlich einen Datenstream ausgeben,

oder?

Warum PHP diesen Fehler ausgibt kann ich dir leider nicht sagen. Vielleicht

versuchst du ein Plugin des Browsers zu starten, wendest den Befehl aber

falsch an? Wie gesagt, ich weiß es nicht.

Ist es nicht möglich, ohne Frames zu arbeiten, wenn es so klappt?

Marwin
Benutzeravatar
Marwin
Moderator
 
Beiträge: 307
Registriert: Donnerstag 8. Mai 2003, 21:19
Wohnort: Seelow, Deutschland

Beitragvon Rudi » Sonntag 3. August 2003, 01:14

Moin Marwin,

Zu 1) In die Player PHP soll mit
Code: Alles auswählen
<?echo "player_typ: ".$player_typ;?>
, wahlweise der Code für den Real Media oder den Windows Media Player aus der Datenbank geladen werden.
Dabei kommt es natürlich darauf an, welcher Player Code gerade für den gelieferten Stream Typ in der Datenbank eingetragen ist.

Zu 2) play.location.href, soll der player.php mitteilen. In welchen Frame sie sich laden soll und der player.php die ID aus der ticker.php mitgeben. Damit in der player.php auch der entsprechende Player Code, der zur ID passt, aus der Datenbank geladen werden kann.


Leider kann ich, wenn das Radio perfekt laufen soll und ich dort alle Informationen zu dem jeweiligen Sender mit anzeigen will, nicht auf die Frames verzichten!
Ich habe es ja schon mit einer Tabelle probiert. Aber wenn ich noch den Player Code, mit in die ticker.php laden lasse. Dann wird die ganze Tabelle verzehrt und da sich das ganze in einem Popup öffnet. Wird dann der Inhalt nach unten verschoben. Da ich ja auch noch eine Info über den gerade laufenden Titel mit in das Fenster einbauen möchte. Bleibt mir nichts anderes übrig als den Player Code aus der Datenbank in der besagten player.php, in einen Frame zu zwingen. So das mir dieser Code nicht den Rest des Popup Fensters unansehnlich macht!

Ich schicke Dir mal den Link zu meinem Server per PM. Dann kannst Du dir mal ein besseres Bild davon machen.
Du wirst sehen, das wenn du einen Sender aus dem DropDown Menü auswählst. Sich das Menü nach unten verschiebt, weil über dem Ticker dann der Player im Hintergrund geladen wird.
Vorraussetzung zum funktionieren des Radios ist ein installierter Real Media und Windows Media Player!


Rudi
Rudi
Advanced Member
 
Beiträge: 30
Registriert: Donnerstag 24. Juli 2003, 17:05

Beitragvon Rudi » Dienstag 5. August 2003, 19:59

Hi Marwin,

habe mir mal den Opera gezogen und die Seite damit kontrolliert.
Ich muß sagen, daß ich doch sehr erstaunt darüber war wie klein das Fenster damit angezeigt wird!
Habe es aber jetzt so angepasst, daß es auch mit dem Opera korrekt angezeigt wird!
Weiterhin ist mir aufgefallen, daß der Opera die X-Radio Seite garnicht richtig anzeigt. Da wo das Radio geladen werden soll, erscheint immer ungültige Adresse. Aber mit dem IE oder dem Netscape geht es.

So, nun zu den eigentlichen Dingen.

So langsam scheine ich der Sache auf die Spur zu kommen.
Deinen letzten Code zur übergabe der ID mit dem Javascript habe ich in die ticker.php eingebunden.

Der Quell Code sieht nun so aus.

Code: Alles auswählen
<?php
include ("config.php");

$verbindung = mysql_connect($dbhost, $dbuser, $dbpass) or die(mysql_error());
mysql_select_db($dbname) or die(mysql_error());


$sql = "SELECT ticker_info,title_info FROM sender WHERE (id = ".$_POST[auswahl].")";
$result = mysql_query($sql) or die(mysql_error());

if(mysql_num_rows($result) > 0)
{
echo "<script type=\"text/javascript\">\n".
"  parent.play.location.href = \"player.php?id=".$id."\";\n".
"</script>\n";
}

list($ticker_info,$ticker_info) = mysql_fetch_row($result);

mysql_close($verbindung);
?>



Der Quell Code in der player.php, die die ID übernehmen soll sieht so aus.

Code: Alles auswählen
<?php

include ("config.php");

$verbindung = mysql_connect($dbhost, $dbuser, $dbpass);
mysql_select_db($dbname);

echo $_GET[id];

$sql = "SELECT player_typ FROM sender WHERE id = ".$_GET[id]." ";
$result = mysql_query($sql) or die(mysql_error());

if(mysql_num_rows($result) > 0)
{
echo $player_typ = mysql_result($result,0,"player_typ");
}

mysql_close($verbindung);
?>



Soweit ist das ja auch schonmal ganz gut.
Wenn ich jetzt das Radio lade, wird mir in der ticker.php schonmal kein SQL Fehler mehr angezeigt.
Nur in der player.php die sich ja in einem Frame befindet gibt es noch diese Fehlermeldung.

You have an error in your SQL syntax near at line 1

Nach einiger Sucherei, habe ich festgestellt, daß diese Fehlermeldung mit diesem String aus der player.php zusammen hängen muß.

Code: Alles auswählen
$sql = "SELECT player_typ FROM sender WHERE id = ".$_GET[id]." ";


Irgendwas ist da mit der Übernahme der ID falsch geschrieben.

Ich schicke Dir mal per PM den Link, mit dem das Radio im Frame Set geladen wird.
Vieleicht kannst Du da was raus erkennen.

Gruß Rudi
Rudi
Advanced Member
 
Beiträge: 30
Registriert: Donnerstag 24. Juli 2003, 17:05

Beitragvon Marwin » Dienstag 5. August 2003, 20:22

Versuche einmal um den per GET[id] eingefügten Wert einfache Anführungszeichen zu verwenden:

Code: Alles auswählen
$sql = "SELECT player_typ FROM sender WHERE id = ".$_GET[id]." ";


Wenn der Fehler damit nicht behoben sein sollte, ersetze die Zeile $result = ... durch:

Code: Alles auswählen
$result = mysql_query($sql) or die(mysql_error()."<br>".$sql);


Das gibt dir zusätzlich zum Fehler den von dir zuvor erzeugten MySQL-Query aus. Wenn das Script später fertig ist und somit alle Fehler behoben sind solltest du allerdings das mysql_error() entfernen, man weiß nie wer diese Fehlermeldung zu Gesicht bekommt und wie er den dargestellten Query-String verwenden wird (siehe dazu Thema Sicherheit im PHP Manual).

Marwin
Benutzeravatar
Marwin
Moderator
 
Beiträge: 307
Registriert: Donnerstag 8. Mai 2003, 21:19
Wohnort: Seelow, Deutschland

Beitragvon Rudi » Dienstag 5. August 2003, 21:06

Hi,

dank Dir für die schnelle und geniale Antwort!
Meine SQL Fehlermeldungen sind jetzt alle weg. :P

Aber dennoch gibt es ein Problem.

In der player.php wird keine ID ausgegeben. :huh:

Ich habe das mal überprüft, in dem ich in der player.php vor diesem String ein echo gesetzt habe.

Code: Alles auswählen
$sql = "SELECT player_typ FROM sender WHERE id = ".$_GET[id]." ";



Leider gibt mir das echo folgende Antwort.

Code: Alles auswählen
SELECT player_typ FROM sender WHERE id =


Also ist demnach von der ticker.php, keine ID an die player.php übergeben worden. :(


Wie isn das jetzt möglich?


Rudi
Rudi
Advanced Member
 
Beiträge: 30
Registriert: Donnerstag 24. Juli 2003, 17:05

Beitragvon Marwin » Dienstag 5. August 2003, 21:50

Schaue dir im Browser mal an, welchen HTML-/JavaScript-Quellcode die folgenden Zeilen erzeugen (ticker.php):

Code: Alles auswählen
echo "<script type=\"text/javascript\">\n".
"  parent.play.location.href = \"player.php?id=".$id."\";\n".
"</script>\n";


Vielleicht wird dort die ID gar nicht übergeben.

Marwin
Benutzeravatar
Marwin
Moderator
 
Beiträge: 307
Registriert: Donnerstag 8. Mai 2003, 21:19
Wohnort: Seelow, Deutschland

Beitragvon Rudi » Mittwoch 6. August 2003, 00:38

Hi,

jetzt wo Du´s sagst!

Der Javascript Code wird nach der Anwahl eines Senders in der ticker.php so ausgegeben:

Code: Alles auswählen
<script type="text/javascript">
  parent.play.location.href = "player.php?id=";
</script>


Nichts zu sehen von einer ID die mit dem Link weitergegeben wird. :o

Dann muß doch schon ein Fehler bei der Übergabe der ID ins Javascript ein Fehler sein. :(

Rudi
Rudi
Advanced Member
 
Beiträge: 30
Registriert: Donnerstag 24. Juli 2003, 17:05

Beitragvon Marwin » Mittwoch 6. August 2003, 17:05

Wenn ich mir diesen Code aus der ticker.php anschaue, weiß ich nicht, woher der Wert in id genommen wird:

Code: Alles auswählen
if(mysql_num_rows($result) > 0)
{
echo "<script type=\"text/javascript\">\n".
"  parent.play.location.href = \"player.php?id=".$id."\";\n".
"</script>\n";
}


Marwin
Benutzeravatar
Marwin
Moderator
 
Beiträge: 307
Registriert: Donnerstag 8. Mai 2003, 21:19
Wohnort: Seelow, Deutschland

Beitragvon Rudi » Mittwoch 6. August 2003, 17:37

Hi,

ich zeigs Dir!

Code: Alles auswählen
$sql = "SELECT id,ticker_info,title_info FROM sender WHERE id = ".$_POST[auswahl]." ";
$result = mysql_query($sql) or die(mysql_error());

if(mysql_num_rows($result) > 0)
{
echo "<script type=\"text/javascript\">\n".
"  parent.play.location.href = \"player.php?id=".mysql_result($result,0,"id")."\";\n".
"</script>\n";


Achte auf das id im SELECT String. Diese beiden kleinen jämmerlichen Buchstaben habe da noch gefehlt! :)
Die ID wurde zwar über das DropDown Menü an die ticker.php übergeben. Aber im SELECT String der ticker.php nicht nochmal geladen.

Jetzt funktioniert alles Perfekt. Die ID wird an die player.php übergeben und der Player Code wird jetzt in der player.php ausgeführt.

Muß Dir aber gestehen, daß ich mit diesem Problem auch noch im php-resource Forum gepostet habe.
Hatte Deine Hilfsbereitschaft ja bei meinem ersten Problem schon so sehr strapaziert, daß ich es diesmal aufgeteielt habe.
Deine Hilfe und die des Helfers vom php-resource, haben dann zum gewünschten Ergebnis geführt.
Von Ihm stammte auch der erste Weg zur Übergabe der ID mit dem Javascript und noch der Tipp mit der ID im SELECT String.
Ich will mich ja hier nicht mit fremden Federn schmücken !

Trotz allem, habe ich durch euch beide doch schon einiges in Sachen PHP gelernt und dafür möchte ich auch Dir nochmal an dieser Stelle Herzlichst danken! :P

Jetzt werde ich noch ein bischen an den Feinheiten feilen und wenn ich nicht weiter komme. Werde ich sicher wieder auf Deine kompetente Hilfe zurück greifen.

Bis dann.

Gruß Rudi
Rudi
Advanced Member
 
Beiträge: 30
Registriert: Donnerstag 24. Juli 2003, 17:05

Nächste

Zurück zu PHP

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder

cron