tutorials.de Buch-Aktion 05/2012
Seite 1 von 2 12 LetzteLetzte
ERLEDIGT
JA
ANTWORTEN
16
ZUGRIFFE
318
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    Zneaf Zneaf ist offline Mitglied Gold
    Registriert seit
    Feb 2011
    Beiträge
    155
    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-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">&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 =)
    Geändert von Zneaf (20.08.11 um 19:29 Uhr) Grund: hatte was noch was vergessen^^
     

  2. #2
    daniel_sun daniel_sun ist offline Mitglied Gold
    Registriert seit
    Mar 2006
    Beiträge
    100
    Zu Frage 1: Ich mache sowas immer mit While.

    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.


    Frage 2 check ich nicht!

    Gruß
    Daniel Sun
    Zneaf bedankt sich. 

  3. #3
    Zneaf Zneaf ist offline Mitglied Gold
    Registriert seit
    Feb 2011
    Beiträge
    155
    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-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>
    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
     

  4. #4
    Avatar von Raisch
    Raisch Raisch ist offline extraordinary bit
    Registriert seit
    Aug 2011
    Ort
    Berlin
    Beiträge
    333
    Hallo Zneaf,

    ändere das
    PHP-Code:
    <select name="dj1"> 
        <?php 
            
    while ($rowdj mysql_fetch_array($sqldj)) { 
                
    $dj $row->username
                echo 
    "<option value='$dj'>$dj</option>"
            } 
        
    ?> 
    </select>
    in
    PHP-Code:
    <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ß
    Zneaf bedankt sich. 

  5. #5
    daniel_sun daniel_sun ist offline Mitglied Gold
    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
    Zneaf bedankt sich. 

  6. #6
    Zneaf Zneaf ist offline Mitglied Gold
    Registriert seit
    Feb 2011
    Beiträge
    155
    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
     

  7. #7
    Zneaf Zneaf ist offline Mitglied Gold
    Registriert seit
    Feb 2011
    Beiträge
    155
    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-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());

    ?>
    Gruß Zneaf =)
     

  8. #8
    Zneaf Zneaf ist offline Mitglied Gold
    Registriert seit
    Feb 2011
    Beiträge
    155
    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
     

  9. #9
    daniel_sun daniel_sun ist offline Mitglied Gold
    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.
    Zneaf bedankt sich. 

  10. #10
    Zneaf Zneaf ist offline Mitglied Gold
    Registriert seit
    Feb 2011
    Beiträge
    155
    Hi daniel_sun

    Hier das gesamte Script:
    PHP-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">&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
     

  11. #11
    daniel_sun daniel_sun ist offline Mitglied Gold
    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:

    PHP-Code:
     while ($rowdj mysql_fetch_assoc(mysql_query($sqldj))) { 
    Deswegen hatte ich oben in meinem Beispiel ja auch $result = mysql_query($sql) und im fetch stand dann $result und nicht SQL

    Gruß
    daniel_sun
    Zneaf bedankt sich. 

  12. #12
    Zneaf Zneaf ist offline Mitglied Gold
    Registriert seit
    Feb 2011
    Beiträge
    155
    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
     

  13. #13
    daniel_sun daniel_sun ist offline Mitglied Gold
    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.
     

  14. #14
    Avatar von timestamp
    timestamp timestamp ist offline Mitglied Rubin
    Registriert seit
    May 2010
    Ort
    Marburg
    Beiträge
    1.479
    Zitat Zitat von daniel_sun Beitrag anzeigen
    Du produzierst ne endlosschleife...die bricht php automatsch ab daher wird der rest des ScRipts (Textfeld) nicht mehr angezeigt.
    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 ) {  

    Zneaf bedankt sich. 
    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

  15. #15
    Zneaf Zneaf ist offline Mitglied Gold
    Registriert seit
    Feb 2011
    Beiträge
    155
    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

  1. Formular problem
    Von Wulfel1992 im Forum PHP
    Antworten: 2
    Letzter Beitrag: 05.10.08, 09:43
  2. Formular - Problem
    Von xXRoggieXx im Forum PHP
    Antworten: 8
    Letzter Beitrag: 04.02.08, 09:16
  3. Problem mit Formular
    Von maxiwagner im Forum PHP
    Antworten: 6
    Letzter Beitrag: 24.08.07, 11:50
  4. Problem mit Formular
    Von r3ddragon im Forum PHP
    Antworten: 1
    Letzter Beitrag: 22.08.07, 15:55
  5. Problem mit Formular
    Von ArneH im Forum PHP
    Antworten: 4
    Letzter Beitrag: 09.07.05, 16:14

Stichworte