-
Hallöchen zusammen

auf meiner Website biete ich unseren DJ's die Möglichkeit, den Text einer Laufschrift zu zu ändern, die sich auf der Startseite befindet.
Dadurch wird für alle Benutzer klar ersichtlich, welcher DJ gerade Musik macht und welcher Musiksteal gespielt wird.
Bisher funktioniert das ganze auf folgende Weise:
Sobald ein DJ diese Funktion im Menu anklickt, wird ein Formular (coaonline.php) geladen.
Dieses Formular bietet lediglich ein Eingabefeld (Thema der Sendung), da der Username des DJ's automatisch per $_SESSION ausgelesen wird.
Nachdem der DJ das Eingabefeld ausgefüllt hat und das Formular abgeschickt hat, werden die Daten (Username + Thema der Sendung) in einer Datenbank eingetragen.
In dieser Datenbank befindet sich immer nur 1 Datensatz, da dieser einfach immer wieder per UPDATE überschrieben wird, wenn ein DJ das Formular abschickt.
Diesen Datensatz lasse ich dann einfach in einer Separaten Datei (coa.php) für die Laufschrift auslesen.
Die Laufschrift sieht dann wie folgt aus:
Currently on Air: "Name des DJ's" mit: "Thema der Sendung"
Hier das Problem:
Manchmal machen mehrere DJ's gleichzeitig eine Live - Sendung und wollen daher natürlich alle DJ's in der Laufschrift eintragen (was zur Zeit leider nicht möglich ist, da ich ja wie erwähnt den Usernamen des DJ'S auslesen lasse, der das Formular aufgerufen hat).
Ein einfaches Textfeld möchte ich allerdings nicht verwenden, damit es keine Tippfehler oder ähnliches gibt.
Wie das neue Formular aussehen sollte:
Im neuen Formular sollen 3 Auswahllisten sein, in denen alle DJ's aufgelistet werden und 1 Textfeld, in dem man das Thema der Sendung eintragen kann.
Per SELECT lasse ich die Usernamen aller DJ's aus der Datenbank "user" auslesen.
Die ausgelesenen Usernamen der DJ's sollen das in den Auswahllisten angezeigt werden, sodass man bequem per Mausklick die gewünschten DJ's auswählen kann, die gerade eine Live - Sendung geben.
Somit könnten bis zu 3 DJ's gleichzeitig in der Laufschrift engetragen werden.
Hier meine Fragen:
1. Welchen Schleifentyp müsste ich verwenden, um für jeden DJ ein <option> in den <select> einzubinden und somit eine Auswahlliste mit sämtlichen DJ's zu erhalten?
2. Wie kann ich festlegen, dass er für jeden DJ genau 1 <option> zum anklicken in den <select> einfügt?
Hier mein bisheriger Code:
Falls ihr noch Fragen habt, sagt einfach bescheid bitte.PHP-Code:<?php
require_once("config.php");
// SQL-Anweisung an die Datenbank senden, um die Benutzernamen aller Resident DJ's auslesen zu lassen.
$sqldj = "SELECT
username
FROM
user
WHERE
residentdj = 'x'";
$resdj = mysql_query($sqldj) or die( 'Error[SELECT|User]: <br /><pre>' . $sqldj . '</pre><br />MySQL-Error: ' . mysql_error() );
if ( array_key_exists('submit', $_POST) ) {
require_once("config.php");
$coa = trim(strip_tags(stripslashes($_POST['coa'])));
$mit = trim(strip_tags(stripslashes($_POST['mit'])));
// SQL-Anweisung basteln, um Daten in die DB-Tabelle einzufügen.
if ($coa == "" or $mit == "") {
echo "<hr><center><font face=\"Arial\" color=\"#333333\"><b>Bitte fülle ALLE Felder aus.</b></font></center><hr>" ;
}else {
require_once("config.php");
$sql = "UPDATE
coa
SET
coa=\"$coa\",
mit=\"$mit\"";
// SQL-Anweisung an die DB schicken und im Fehlerfall eine Meldung ausgeben.
$res = mysql_query($sql) or exit( __LINE__.', '.__FILE__.'<br />' .mysql_error());
// Wenn kein Fehler aufgetreten ist auf die Startseite weiterleiten.
echo "<meta http-equiv='refresh' content='0; url=index.php?site=home'>" ;
}
}
?>
<!-- Eingabemaske für Currently on Air -->
<form action="<?php $_SERVER['PHP_SELF']; ?>" method="post">
<table width ="500" table="0" cellspacing="0" cellpadding="2">
<tr>
<td><font face="Arial" color="#333333"><b>Currently on Air:</b></font></td>
</tr>
</table>
<table width ="500" table="0" cellspacing="0" cellpadding="2">
<tr>
<td><!-- hier soll Auswahlliste 1 sein --></td>
<td><!-- hier soll Auswahlliste 2 sein --></td>
<td><!-- hier soll Auswahlliste 3 sein --></td>
</tr>
</table>
<table width ="500" table="0" cellspacing="0" cellpadding="2">
<tr>
<td><font face="Arial" color="#333333"><b>mit:</b> <i>(Thema der Sendung)</i></font></td>
<td><input type="text" size="30" name="mit"></td>
</tr>
</table>
<br>
<table width ="500" table="0" cellspacing="0" cellpadding="2">
<tr>
<td><input type="submit" name="submit" value="übernehmen"> <input type="reset" value="Abbrechen"></td>
</tr>
</table>
</form>
Vielen Dank im Voraus
LG Zneaf =)Geändert von Zneaf (20.08.11 um 19:29 Uhr) Grund: hatte was noch was vergessen^^
-
20.08.11 20:01 #2
- Registriert seit
- Mar 2006
- Beiträge
- 100
Zu Frage 1: Ich mache sowas immer mit While.
Frage 2 check ich nicht!PHP-Code:$sql = "SELECT XYZ FROM BLABLA";
$result = mysql_query($sql);
while($row = mysql_fetch_array($result)){
//Hier kommen die optionfelder rein. so wird für jeden user ein Select-Eintrag erstellt.
}
Gruß
Daniel Sun
-
Hi,
erstmal vielen Dank für die super schnelle Antwort =)
Frage 2 hast du bereits beantwortet mit deinem post
Es ging darum, dass ich wissen wollte, wie man es schafft, dass pro DJ nur 1 select-eintrag erstellt wird.
Also ich hab das mal versucht, was du mir gepostet hast...hat leider nicht funktioniert
Hier der Teil des Codes, den ich verändert habe (den gesamten hatte ich ja oben gepostet):
Mit diesem Code ist die Auswahlliste leer =(PHP-Code:<?php
require_once("config.php");
// SQL-Anweisung an die Datenbank senden, um die Benutzernamen aller Resident DJ's auslesen zu lassen.
$sqldj = "SELECT
username
FROM
user
WHERE
residentdj = 'x'";
$resdj = mysql_query($sqldj) or die( 'Error[SELECT|User]: <br /><pre>' . $sqldj . '</pre><br />MySQL-Error: ' . mysql_error() );
?>
<select name="dj1">
<?php
while ($rowdj = mysql_fetch_array($sqldj)) {
$dj = $row->username;
echo "<option value='$dj'>$dj</option>";
}
?>
</select>
Hoffe du kannst mir da weiterhelfen...ich finde den Fehler nicht.
Vielen Dank für die Hilfe
LG Zneaf
-
Hallo Zneaf,
ändere das
inPHP-Code:<select name="dj1">
<?php
while ($rowdj = mysql_fetch_array($sqldj)) {
$dj = $row->username;
echo "<option value='$dj'>$dj</option>";
}
?>
</select>
dann sollte es (hoffentlich) klappen.PHP-Code:<select name="dj1">
<?php
while ($rowdj = mysql_fetch_assoc($sqldj)) {
$dj = $rowdj['username'];
echo "<option value=\"$dj\">$dj</option>";
}
?>
</select>
Gruß
-
21.08.11 00:20 #5
- Registriert seit
- Mar 2006
- Beiträge
- 100
So wie Raisch es beschrieben hat funktioniert es. Füllst die variable $rowdj mit den Werten aus der DB aber rufst die aus $row ab. Das kann ja nicht funktionierten.
Du greifst immer mit $Variablenname['Spaltenname'] auf die Werte in der DB zu. Und php geht durch While Spalte für Spalte duch und führt die Aktion mit den jeweiligen Werten aus.
Gruß
Daniel Sun
-
Hi zusammen

habe meinen Code genau so abgeändert, wie Raisch gesagt hat, aber leider tut sich immer noch nichts
@daniel_sun: das mit $row undso war n tippfehler
*sorry*
Habt ihr noch andere Vorschläge / Ideen, woran das liegen könnte, dass die Auswahlliste nicht gefüllt wird?
Vielen Dank im Voraus
Wünsch euch nen schönen Sonntag =)
LG Zneaf
-
Hallo

ich bins nochmal =)
Ich wollte euch blos noch die config.php posten, weil ich mir nicht sicher bin, ob diese nicht vielleicht von Bedeutung bei der Problemsuche sein könnte (ist schließlich die einzige Datei, die ich hier noch nicht gepostet habe
).
Gruß Zneaf =)PHP-Code:<?php
// DB-Zugriffsdaten
$db_config = array(
'server' => '',
'user' => '',
'password' => '',
'database_name' => ''
);
// Verbindung zum DB-Server herstellen und im Fehlerfall eine Meldung ausgeben
$connection = mysql_connect(
$db_config['server'],
$db_config['user'],
$db_config['password']
) or exit( __LINE__.', '.__FILE__.'<br />' .mysql_error());
// Verbindung zur Datenbank herstellen und im Fehlerfall eine Meldung ausgeben
$db_select = mysql_select_db(
$db_config['database_name'],
$connection
) or exit( __LINE__.', '.__FILE__.'<br />' .mysql_error());
?>
-
Hi

hat vielleicht noch jemand eine Idee, wo der Fehler liegen könnte bzw. warum das Script nicht funktioniert?
Würde mich sehr freuen, wenn noch jemand Ideen / Vorschläge hätte.
Vielen Dank dafür =)
LG Zneaf
-
24.08.11 13:04 #9
- Registriert seit
- Mar 2006
- Beiträge
- 100
Du sagst es geht nicht. Wird den ein Fehler ausgegeben? Poste doch bitte mal das Komplette Script in dem du die Select-Auswahl hast.
-
Hi daniel_sun

Hier das gesamte Script:
Also es wird mir keinerlei Fehlermeldung angezeigt...die Auswahlliste ist halt einfach leerPHP-Code:<?php
session_start();
?>
<html>
<head>
<title>Currently on Air online</title>
</head>
<body link="#333333" vlink="#333333" alink="#333333">
<center>
<?php
require_once("config.php");
// SQL-Anweisung an die Datenbank senden, um die Benutzernamen aller Resident DJ's auslesen zu lassen.
$sqldj = "SELECT
username
FROM
user
WHERE
residentdj = 'x'";
$resdj = mysql_query($sqldj) or die( 'Error[SELECT|User]: <br /><pre>' . $sqldj . '</pre><br />MySQL-Error: ' . mysql_error() );
if ( array_key_exists('submit', $_POST) ) {
require_once("config.php");
$coa = trim(strip_tags(stripslashes($_POST['coa'])));
$mit = trim(strip_tags(stripslashes($_POST['mit'])));
// SQL-Anweisung basteln, um Daten in die DB-Tabelle einzufügen.
if ($coa == "" or $mit == "") {
echo "<hr><center><font face=\"Arial\" color=\"#333333\"><b>Bitte fülle ALLE Felder aus.</b></font></center><hr>" ;
}else {
require_once("config.php");
$sql = "UPDATE
coa
SET
coa=\"$coa\",
mit=\"$mit\"";
// SQL-Anweisung an die DB schicken und im Fehlerfall eine Meldung ausgeben.
$res = mysql_query($sql) or exit( __LINE__.', '.__FILE__.'<br />' .mysql_error());
// Wenn kein Fehler aufgetreten ist auf die Startseite weiterleiten.
echo "<meta http-equiv='refresh' content='0; url=index.php?site=home'>" ;
}
}
?>
<!-- Eingabemaske für Currently on Air -->
<form action="<?php $_SERVER['PHP_SELF']; ?>" method="post">
<table width ="500" table="0" cellspacing="0" cellpadding="2">
<tr>
<td><font face="Arial" color="#333333"><b>Currently on Air:</b></font></td>
</tr>
</table>
<table width ="500" table="0" cellspacing="0" cellpadding="2">
<tr>
<td>
<select name="dj1">
<?php
while ($rowdj = mysql_fetch_assoc($sqldj)) {
$dj = $rowdj['username'];
echo "<option value=\"$dj\">$dj</option>";
}
?>
</select>
</td>
<td></td>
<td></td>
</tr>
</table>
<table width ="500" table="0" cellspacing="0" cellpadding="2">
<tr>
<td><font face="Arial" color="#333333"><b>mit:</b> <i>(Thema der Sendung)</i></font></td>
<td><input type="text" size="30" name="mit"></td>
</tr>
</table>
<br>
<table width ="500" table="0" cellspacing="0" cellpadding="2">
<tr>
<td><input type="submit" name="submit" value="Senden"> <input type="reset" value="Abbrechen"></td>
</tr>
</table>
</form>
</center>
</body>
</html>
Danke für deine Hilfe =)
LG Zneaf
-
24.08.11 13:23 #11
- Registriert seit
- Mar 2006
- Beiträge
- 100
Oh ganz klar
in $SQLdj steht nur die SQL-Anweisung ohne mysql Query.
Dann muss die Zeile so lauten:
Deswegen hatte ich oben in meinem Beispiel ja auch $result = mysql_query($sql) und im fetch stand dann $result und nicht SQLPHP-Code:while ($rowdj = mysql_fetch_assoc(mysql_query($sqldj))) {

Gruß
daniel_sun
-
Hi

vielen Dank für die schnelle Rückmeldung
Leider funktioniert es nun auch nicht richtig.
habe den Code so abgeändert, wie du gesagt hast und es passiert folgendes:
Er lädt nurnoch diese eine Auswahlliste...das Textfeld wird nicht mehr geladen.
Auserdem befindet sich in der Auswahlliste nur der Erste DJ und dieser wird unendlich oft untereinander gelade. D.h. er lädt nur den Ersten DJ...aber diesen halt unendlich oft.
Ergibt das für dich einen Sinn? =)
Danke im Voraus
LG Zneaf
-
24.08.11 14:33 #13
- Registriert seit
- Mar 2006
- Beiträge
- 100
Du produzierst ne endlosschleife...die bricht php automatsch ab daher wird der rest des ScRipts (Textfeld) nicht mehr angezeigt.
Die Frage ist nun wie du die Endlosschreife produzierst. Lass dir an besten mal mit vardump() die $rowdj ausgeben. um mal zusehen was wirklich drin steht.
-
Nicht ganz korrekt. Der Rest des Scriptes wird nicht angezeigt weil's eine Endlosschleife ist, nicht weil PHP abbricht. Da die Schleife theoretisch unbegrenzt durchläuft (eventuell durch max_execution_time ausgebremst) wird der restliche Teil des Codes einfach niemals erreicht werden

Das Problem liegt eher darin, dass das Result immer neu erzeugt wird, es also für die Schleife so aussieht, als gäbe es unendlich viele DJs in der Tabelle. Daher das Result vorher in einer Variablen abspeichern:
PHP-Code:$result = mysql_query( $sqldj ) or die('Error: '.mysql_error() );
while( $rowdj = mysql_fetch_assoc( $result ) {
}
Bei Problemen mit Codes, postet bitte den entsprechenden Codeausschnitt und setzt den in entsprechende Tags.
( [cpp] [/cpp] [css] [/css] [html] [/html] [java] [/java] [javascript] [/javascript] [php] [/php] [sql] [/sql] )
"Funktioniert nicht" ist keine Fehlermeldung. Bitte eine genaue Fehlerbeschreibung und, wenn vorhanden, Fehlermeldungen posten.
RegEx Tutorial
PHP Funktionsreferenz
-
Hi

das mit vardump müsstest du mir bitte kurz erklären. Das hab ich bisher noch nie gemacht (sorry)
Dank dir =)
LG Zneaf
Ähnliche Themen
-
Formular problem
Von Wulfel1992 im Forum PHPAntworten: 2Letzter Beitrag: 05.10.08, 09:43 -
Formular - Problem
Von xXRoggieXx im Forum PHPAntworten: 8Letzter Beitrag: 04.02.08, 09:16 -
Problem mit Formular
Von maxiwagner im Forum PHPAntworten: 6Letzter Beitrag: 24.08.07, 11:50 -
Problem mit Formular
Von r3ddragon im Forum PHPAntworten: 1Letzter Beitrag: 22.08.07, 15:55 -
Problem mit Formular
Von ArneH im Forum PHPAntworten: 4Letzter Beitrag: 09.07.05, 16:14



7Danke

Zitieren

Login






[PHP][Snippet] Array zu XML konvertieren