mysql Werte in Pulldown Menü einfügen

Moderatoren: crack, Marwin, Krüsty

Beitragvon Rudi » Donnerstag 24. Juli 2003, 21:40

Hallo,

bin ein absoluter Neuling in Sachen php.
Ich möchte gerne Werte aus meiner MySql Datenbank in ein Pulldown Menü einfügen und von diesem Menü aus die nächsten Werte aus der Datenbank Tabelle in einer neuen Datei weiterverarbeiten lassen.

Die Datenbank besteht aus 3 Werten die eingegeben werden.

id, name, url

Hier ist mal der Quelltext zum Menü den ich probiert habe. Dieser gibt aber nur eine Fehlermeldung beim Aufruf aus.

Hier die Fehlermeldung

Parse error: parse error, unexpected T_VARIABLE in E:\wampp-0.2.1c\htdocs\Versuch_mit_Radio\db_test.php on line 9

Denke mal das PHP da irgendwas nicht versteht.



Der Menü Q.text

[HTML]
[BODY]

[FORM]
[SELECT NAME="auswahl"]
[?php
include ("config.php");
$sql = "SELECT * FROM sender ORDER BY id"
$result = mysql_db_query($database,$sql);
$rows = mysql_num_rows($result);
$i = 0;
while ($i [$rows) {
$arr = mysql_fetch_array($result);
$id = $arr["id"];
$name = $arr["name"];
echo "[OPTION VALUE=\"$id\"]$name";
$i++;}[/OPTION]
?]
[/SELECT][INPUT TYPE="SUBMIT" VALUE="go"]
[/FORM]
[/BODY]
[/HTML]

Also, aus der DB Tabelle soll der Wert id in den Value Bereich geschrieben werden.Beim öffnen des Menüs, sollen dann die Namen aus der Tabelle im Menü angezeigt werden.

Kann mir hierzu jemand helfen?

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

Beitragvon Marwin » Donnerstag 24. Juli 2003, 22:45

Hi Rudi,

du hast lediglich ein abschließendes Semikolon in der Zeile 9 vergessen!

$sql = "SELECT * FROM sender ORDER BY id";


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

Beitragvon Marwin » Donnerstag 24. Juli 2003, 23:09

Was mir gerade ins Auge fällt, du hast einen weiteren Fehler in deinem PHP-Code. Und zwar befindet sich das schließende OPTION-Tag nicht innerhalb des ECHO-Befehls. Dieser Code läuft fehlerfrei und ist zudem etwas kürzer und übersichtlicher:

Code: Alles auswählen
<HTML>
<BODY>

<FORM>
<SELECT NAME="auswahl">
<?php

include ("config.php");
$sql = "SELECT id, name FROM sender ORDER BY id"
$result = mysql_db_query($database,$sql);

while (list($id, $name) = mysql_fetch_row($result))
 {
  echo "<OPTION VALUE=\"$id\">$name</OPTION>";
 }

?>
</SELECT><INPUT TYPE="SUBMIT" VALUE="go">
</FORM>
</BODY>
</HTML>


1. Wenn du lediglich die Werte der Spalten ID und NAME benötigst, dann hole nicht die Werte aller (durch das *) Spalten. (Das klingt jetzt wie ein Vorwurf, das soll er aber nicht sein) Stell dir nur mal vor, du arbeitest später mit sehr großen Tabellen mit sehr viel mehr Spalten. Wenn du dann die Werte einer Spalte holen möchtest, dann ist das Auslesen einer Spalte doch deutlich schneller aus das Auslesen aller Spalten.

2. list($id, $name) = mysql_fetch_row($result) holt aus dem Ergebnis (in $result) nacheinander jede von deiner SELECT-Anweisung zurückgelieferte Zeile und speichert die Inhalte der beiden Spalten in den Variablen ID und NAME.

3. Möglicherweise hast du das einfach vergessen zu posten: Das FORM-Tag ist unvollständig, darin fehlen noch die Angaben ACTION und METHOD.

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

Beitragvon Rudi » Freitag 25. Juli 2003, 01:36

Hallo Marwin,

danke Dir erstmal für deine Ausführungen.
Habe das angepasste Script mal so hier rauskopiert und auf meinem Server probiert.
Leider bekomme ich nur diese Fehlermeldung:

Parse error: parse error, unexpected T_VARIABLE in E:\wampp-0.2.1c\htdocs\Versuch_mit_Radio\db_test.php on line 10


Line 10, ist dieser String.

$result = mysql_db_query($database,$sql);

Wie gesagt, bin ein absoluter Neuling in PHP und MySql. Deshalb weis ich nicht woran das liegen kann. Vieleicht ist die Tabelle selber daran Schuld.

Die Tabelle habe ich mit folgendem Script erstellt.

[?
include ("config.php");
mysql_query("CREATE TABLE sender (
id int(255) NOT NULL auto_increment,
name varchar(100) NOT NULL,
url varchar(250) NOT NULL,
PRIMARY KEY (id)
);");

mysql_close();
echo "Die Tabelle wurde angelegt";
?]

Die Tabelle ist auch so wie in dem Script vorgegeben erstell worden.

Habe andere Scripts probiert die mit MySQL einwandfrei auf meinem Rechner laufen.
Nur für das was ich machen will, habe ich nichts passendes im Netz gefunden und nun muß ich selber ran. ;-)

Das Form Tag ist noch nicht da. Weil ich ehrlich gesagt noch keinen blassen Dunst habe, wie ich aus diesem Pulldown Menü die URL´s aus der Datenbank in eine neue Seite übergebe.

Das müsste aber irgendwie so aussehen, wenn ich nicht irre.

[form method="post" value="$url" action="player.php"]

Aber diese Angaben werden wohl, - damit die Übergabe der URL funktioniert - , etwas dürftig sein.


Freue mich schon auf die nächste Antwort.

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

Beitragvon Marwin » Freitag 25. Juli 2003, 12:11

:lol: Der Fehler ist, dass in Zeile zehn drei Zeichen zu viel stehen:

$result = mysql_query($database,$sql);


Das db_ musst du löschen. Dann funktioniert es.


Der FORM-Tag sollte folgendermaßen aussehen:

[form method="post" action="player.php"]


Lediglich das VALUE war zu viel. Diesen Parameter gibt es im FORM-Tag nicht.

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

Beitragvon Rudi » Freitag 25. Juli 2003, 12:50

Hi Marwin,

diese kleine Änderung im String von Line 10 hat bei mir nichts gebracht!
Bekomme immer noch die selbe Fehlermeldung.
Habe die Datenbank mit den dazugehörigen Dateien jetzt mal auf einen 2ten Lokalen Webserver übertragen.
Wollte mal testen ob es vieleicht an dem Server liegt. Aber auch dort bekomme ich die selbe Fehlermeldung ausgegeben.
Der Ordner für die Datenbank heist bei mir radlinks und die Tabelle heist Sender.
Kann es sein, daß ich die Variable $database im String von Line 10 mit dem Namen der Datenbank, etwa so $radlinks oder so "radlinks", austauschen muß?
In meinem PHP Editor wird mir die Datei als Pulldown angezeigt. Wenn ich die Datei dann aber im Browser aufrufe, bekomme ich keinen connect zur Datenbank.
Oder ist es sogar möglich, das ich die Tabelle falsch aufgebaut habe, so das PHP damit nichts anfangen kann?


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

Beitragvon Rudi » Freitag 25. Juli 2003, 13:17

Hi Marwin,

habe jetzt nochmal im Script rumgepopelt und siehe da, jetzt funktioniert es!

Hier das Script:

[html]
[/head]
[style type="text/css"]
<!--

.rudistyle{
background-color: #c0c0c0;
color: #000080;
font-size: 7pt;
font-family: arial;

}

-->
[/style]
[body bgcolor="000000" text="red"]
[FORM]
[SELECT class="rudistyle" NAME="auswahl"]
[?php

include ("config.php");
$query = "SELECT id, name FROM sender";
$result = mysql_query($query);

while (list($id, $name) = mysql_fetch_row($result))
{
echo "[OPTION VALUE=\"$id\"]$name[/OPTION]";
}

?]
[/SELECT][INPUT class="rudistyle" TYPE="SUBMIT" VALUE="go"]
[/FORM]
[/BODY]
[/HTML]


Nun ist die Frage. Wie bekomme ich jetzt über das Pulldown Menü die zu der jeweiligen ID und Namen gehörige URL in eine neue andere Datei übergeben?

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

Beitragvon Marwin » Freitag 25. Juli 2003, 16:17

Zunächst habe ich eine Bitte an dich. Kannst du beim nächsten Posten von PHP-Code diesen in entweder CODE oder QUOTE einschließen? (siehe die Buttons im Formular, besser ist CODE) Der Code hebt sich dann besser vom restlichen Betrag ab.

Als erstes musst du den FORM-Tag folgendermaßen erweitern:

Code: Alles auswählen
<form method="post" action="player.php">


Danach erstellst du die Datei welche du im Parameter ACTION angegeben hast, hier ist es player.php.
In diese schreibst du folgenden Inhalt:

Code: Alles auswählen
<?php

/* Hier den Code zum Herstellen der Verbindung zur Datenbank */

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

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

echo "URL: ".$url;

?>


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

Beitragvon Rudi » Freitag 25. Juli 2003, 16:49

Hallo,

da bin ich schon wieder!
Habe den FORM-Tag in das Menü Script eingefügt und das player.php Script erstellt.

Bekomme damit aber jetzt wieder eine Fehlermeldung.

Code: Alles auswählen
Parse error: parse error, unexpected T_VARIABLE in E:\wampp-0.2.1c\htdocs\Versuch_mit_Radio\player.php on line 11


Der Code für das Player Script sieht jetzt so aus:

Code: Alles auswählen
<?php

$dbname="radlinks";
$dbhost="localhost";
$dbuser="root";
$dbpass="";
mysql_connect($dbhost,$dbuser,$dbpass);
mysql_select_db($dbname);

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

list($url) = mysql_fetch_row($result)

echo "URL: ".$url;

?>


Da muß wieder eine Angabe in dem Script einen falschen Wert aufweisen.

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

Beitragvon Marwin » Freitag 25. Juli 2003, 19:56

Entschuldigung, das ist mein Fehler. Ich habe in meinem letzten Beitrag gleich zwei Semikolons (die Mehrzahl von Semikolon heißt bestimmt anders, aber du weißt ja was ich meine) vergessen. Einmal in der Zeile

Code: Alles auswählen
$sql = [B]...[/B]


und dann in dieser:

list($url) = ...


So, jetzt sind die Semikolen (?) da.

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

Beitragvon Rudi » Freitag 25. Juli 2003, 21:05

Nabend,

ja ist doch klar was Du meinst. Hatte auch schon etwas mit den Semikolen probiert.
Aber immer verschiedene Fehlermeldungen erhalten.
Jetzt habe ich die Semikolen dort eingefügt wo du geschrieben hast und nun werden die Fehlermeldungen schon dramatischer.

Fehlermeldung 1:

Code: Alles auswählen
Warning: Wrong parameter count for mysql_db_query() in E:\wampp-0.2.1c\htdocs\Versuch_mit_Radio\player.php on line 11


Fehlermeldung 2:

Code: Alles auswählen
Warning: mysql_fetch_row(): supplied argument is not a valid MySQL result resource in E:\wampp-0.2.1c\htdocs\Versuch_mit_Radio\player.php on line 13
URL:


Jetzt scheint die Datenbank nicht mehr zu wissen was ich von ihr will.

]]]]]]]]]]]]]]]]

Mußte mal editiern.

Habe jetzt hier noch ein $url eingefügt und die ertse Fehlermeldung ist weg!

Code: Alles auswählen
$result = mysql_db_query($sql,$url);



Aus der 2ten Fehlermeldung ist jetzt diese geworden:

Code: Alles auswählen
Parse error: parse error, unexpected =, expecting ( in E:\wampp-0.2.1c\htdocs\Versuch_mit_Radio\player.php on line 13


Leider weis ich nicht wo ich die Klammer einsetzen muß.
Habe zwar schon einige Möglichkeiten durch. Komme aber nicht wirklich weiter.

[[[[[[[[[[[[[[[[[


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

Beitragvon Marwin » Samstag 26. Juli 2003, 14:58

Das ist ja langsam nicht mehr normal ;)

Kopiere doch bitte diesen Code in die Datei player.php

Code: Alles auswählen
<?php

$dbname = "radlinks";
$dbhost = "localhost";
$dbuser = "root";
$dbpass = "";

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

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

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

mysql_close($verbindung);


echo "URL: ".$url;

?>


Bedenke, dass MySQL auf Groß- und Kleinschreibung achtet. D.h. die Tabelle sender darf nur aus Kleinbuchstaben bestehen. Wenn der MySQL-Query fehlerhaft sein sollte, dann gibt die Funktion echo mysql_error(); eine entsprechende Fehlermeldung aus.

Ich empfehle dir SelfPHP, DSP und das PHP Handbuch (auch PHP Manual genannt) herunterzuladen.
SelfPHP ist eine kleine Kurzreferenz der meisten PHP-Funktionen. DSP ist eine empfehlenswerte Referenz sowohl für Datenbanken im Allgemein, als auch für MySQL und PHP.
Das PHP Handbuch dokumentiert alle PHP-Funktionen. Das solltest du dir auf jeden Fall herunterladen.

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

Beitragvon Rudi » Samstag 26. Juli 2003, 16:02

Hi Marwin,

ich kanns Dir nachfühlen , dass du schon fast am verzweifeln bist.
Mir gehts da nicht anders. Bin Heute erst um 3 Uhr ins Bett und mußte um 4 schonwieder raus.
Aber es hat mich einfach nicht mehr losgelassen!

Nun den.
Habe den von Dir hier aufgeschriebenen Code in meine player.php eingefügt.
Was soll ich sagen? Am besten nichts! Ich drücke es mal so aus -] :P :P :P :D :D :D
Es klappt, jede URL aus meiner Test Tabelle wird korrekt ausgegeben!!! :)

Danke Dir tausendmal, das du dir selbst auf einem Samstag die Zeit genommen hast, wo ein normaler Mensch eigendlich mit einem Bier in der Hand und nem Kotelett aufm Teller im Garten sitzt.

Ich hoffe aber das ich Deine Nerven nicht zu sehr strapaziert habe und du in den nächsten 6 Monaten nichts mehr von mir hören willst !

Ich hätte da nämlich noch eine knifflige Frage oder auch zwei.
Übrigens habe ich mir das selfphp Tut. kurz bevor ich hier aufs Board bin gesogen!!!

So, jetzt werde ich mal schauen, ob die ausgegebenen URL´s in der player.php auch in ein Player Script eingefügt und gestartet werden können.

Wünsche Dir noch ein schönes Wochenende!

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

Beitragvon Marwin » Samstag 26. Juli 2003, 18:07

Puh, ich habe schon langsam an mir selbst gezweifet.

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


Zurück zu PHP

 


  • { RELATED_TOPICS }
    Antworten
    Zugriffe
    Letzter Beitrag

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder

cron