Problem bei Formular

Zneaf

Erfahrenes Mitglied
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:
PHP:
<?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">&nbsp;<input type="reset" value="Abbrechen"></td>
	</tr>
</table>
</form>

Falls ihr noch Fragen habt, sagt einfach bescheid bitte.

Vielen Dank im Voraus ;)

LG Zneaf =)
 
Zuletzt bearbeitet:
Zu Frage 1: Ich mache sowas immer mit While.

PHP:
$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.

}

Frage 2 check ich nicht!

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):
PHP:
<?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>

Mit diesem Code ist die Auswahlliste leer =(

Hoffe du kannst mir da weiterhelfen...ich finde den Fehler nicht.

Vielen Dank für die Hilfe :)

LG Zneaf
 
Hallo Zneaf,

ändere das
PHP:
<select name="dj1"> 
    <?php 
        while ($rowdj = mysql_fetch_array($sqldj)) { 
            $dj = $row->username; 
            echo "<option value='$dj'>$dj</option>"; 
        } 
    ?> 
</select>
in
PHP:
<select name="dj1"> 
    <?php 
        while ($rowdj = mysql_fetch_assoc($sqldj)) { 
            $dj = $rowdj['username']; 
            echo "<option value=\"$dj\">$dj</option>"; 
        } 
    ?> 
</select>

dann sollte es (hoffentlich) klappen.

Gruß
 
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 :D *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 ^^).

PHP:
<?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());

?>

Gruß Zneaf =)
 
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
 
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:
PHP:
<?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">&nbsp;<input type="reset" value="Abbrechen"></td>
	</tr>
</table>
</form>
</center>
</body>
</html>

Also es wird mir keinerlei Fehlermeldung angezeigt...die Auswahlliste ist halt einfach leer :(

Danke für deine Hilfe =)

LG Zneaf
 
Zurück