Fehler im PHP

Heute ist Stammtischzeit:
Jeden Donnerstag 20:30 Uhr hier im Chat.
Wer Lust hat, kann sich gerne beteiligen. ;)
  • Hallo,
    bin gerade dabei auf meinem Webserver eine kleine PHP Seite zu erstellen mit der ich die laufenden Radiosender ändern kann, doch leider sehe ich den Fehler nicht :/

    ...

    [code=php]if($_POST['Radiosender']=="BigFm") {
    shell_exec("mpc play 1");
    }

    if($_POST['Radiosender']=="Rock Antenne") {
    shell_exec("mpc play 2");
    }[/php]

    Könnte bitte jemand den Fehler korriegieren? :danke_ATDE:

  • Sieht aus, als würde value per Post übergeben werden und nicht der Name des Radiosenders.

    Sprich einfach mal den Inhalt von value anpassen, um nicht nur Zahlen zu übergeben, wenn das Script eine Zeichenkette erwartet.

    Oder du passt dein PHP-Script an und verwendest dort die übergebenen Zahlen.

  • Hab den Code getestet. Es müsste jetzt laufen.

    Ich nehme an, dass du die Datei auch richtig aufrufst. Sprich sie liegt auf dem Webserver und du öffnest sie ordentlich mit dem Browser?

    Pack mal in die IF's noch ein: echo "test erfolgreich";
    Damit siehst du dann, ob dein PHP ordnungsgemäß ausgeführt wird. Bekommst du den Text angezeigt, dann stimmt etwas mit dem shell_exec nicht. Du könntest es mit root-Rechten ausführen.

  • Da du für mpc die selbe Nummer verwendest wie es im <select> hinterlegt ist, kannst du dir die ganzen if Schleifen sparen. Desweiteren kannst du den PHP Code oberhalb des forms platzieren um dir darüber anzuzeigen welcher Sender ausgewählt ist. Ich würde dir aber auch empfehlen anstatt shell_exec(); lieber exec(); zu nutzen da du dir dann mögliche Fehlermeldungen o.ä. ausgeben lassen kannst, siehe dazu auch >> hier <<

    [code=php]<?php
    $RadioSender = "BigFM:1,Rock Antenne:2,Antenne Bayern:3,SWR 3:4,House:5,N-JOY:6,Jam FM:7,1Live:8";

    if (isset($_POST['Radiosender']) AND !empty($_POST['Radiosender'])) {
    exec("mpc play ".$_POST['Radiosender']."", $output, $return_var);
    }

    if (isset($output) AND !empty($output)) {
    foreach ($output AS $line) { echo $line."<br/>\n"; }
    }
    ?>

    <form name="RadioForm" action="" method="post">
    <select name="Radiosender">
    <option value="0">Radio ausschalten</option>
    <?php
    foreach (explode(",", $RadioSender) AS $RS) {
    $Selected = "";
    $RS = explode(":", $RS);
    if (isset($_POST['Radiosender']) AND !empty($_POST['Radiosender']) AND $_POST['Radiosender'] == $RS[1]) { $Selected = 'selected="selected"'; }
    echo " <option value="".$RS[1]."" ".$Selected.">".$RS[0]."</option>\n";
    }
    ?>
    </select>
    </form>
    [/php]

    Das sieht auf den ersten Blick vielleicht kompliziert aus, ist aber etwas flexibler ;)
    Oben brauchst du nur die gewünschten Sender in die Liste eintragen, im Format: Sender:Nummer
    Mehrere Sender getrennt durch ein Komma.
    Die foreach erstellt dann für diese Liste automatisch eine Auswahl. Falls zuvor bereits ein Sender mal ausgewählt war, also über $_POST übergeben wurde, ist dieser Sender auch in der select Auswahl ausgewählt (selected).

    Das könnte man auch vereinfachen indem man einfach nur eine Liste ohne Nummer erstellt, und die foreach dann selber die Nummer setzt und erhöht, aber das wollt ich jetzt nicht auch noch abändern :D

    Wofür deine Option 9 = "Radio ausschalten" sein sollte konnte ich jetzt aber nicht nachvollziehen

  • Neben dem dass meigrafds code wirklich netter ist, hast du in deinem 2x "Name=Radiosender" verwendet.
    Für Form und select. Könnte mir vorstellen, dass das zu Problemen, wie du sie hast führt.

    --
    man ist das System-Anzeigeprogramm für die Handbuchseiten von Linux.

  • Vielen Dank nochmal für eure Hilfe!!!
    Bin mit eurer Lösung leider nicht klar gekommen, habe aber eine andere Vorlage gefunden und für mich abgeändert!

    [code=php]<html>
    <head>
    <title>HomeControl</title>
    <script language="JavaScript" type="text/javascript">
    <!--
    var loading;
    function folderSubmit(clear)
    {
    if (document.formname.selection[document.formname.selection.selectedIndex].value != '') {
    if (loading == null || clear != null) {
    loading = true;
    document.formname.submit();
    }
    }
    }
    // -->
    </script>
    </head>
    <body>
    <form name="formname" method="post" action="<?=$_SERVER['PHP_SELF'];?>">
    <select name="selection" class="schrift-b" id="selection" onchange="folderSubmit()">
    <option value="0" selected="selected">Bitte Radiosender auswählen..</option>
    <option value="1" >BigFM</option>
    <option value="2" >Rockantenne</option>
    <option value="3" >Antenne Bayern</option>
    <option value="4">SWR 3</option>
    <option value="5">House</option>
    <option value="6">N-JOY</option>
    <option value="7">Jam FM</option>
    <option value="8">1Live</option>
    <option value="9">Radio ausschalten</option>
    </select>
    </form>
    <?
    if(isset($_POST['selection']) && $_POST['selection'] != 0){
    switch($_POST['selection']){
    case 1:
    echo "BigFM";
    shell_exec("mpc play 1");
    break;

    case 2:
    echo "Rock Antenne";
    shell_exec("mpc play 2");
    break;

    case 3:
    echo "Antenne Bayern";
    shell_exec("mpc play 3");
    break;
    case 4:
    echo "SWR 3";
    shell_exec("mpc play 4");
    break;

    case 5:
    echo "House";
    shell_exec("mpc play 5");
    break;

    case 6:
    echo "N-Joy";
    shell_exec("mpc play 6");
    break;
    case 7:
    echo "Jam FM";
    shell_exec("mpc play 7");
    break;

    case 8:
    echo "1 Live";
    shell_exec("mpc play 8");
    break;

    case 9:
    echo "Radio ausgeschaltet";
    shell_exec("mpc stop");
    break;
    }
    }
    ?>
    </body>
    </html>[/php]

  • da sollte der folgende PHP-Schnipsel reichen

    [code=php]
    if(isset($_POST['selection']) {
    shell_exec("mpc play " . $_POST['selection'] );
    }
    [/php]

    Gruß Clonix

    Kommentare in Scripten/Sourcecodes machen nicht nur DIR das Leben leichter ;)

    Einmal editiert, zuletzt von Clonix (1. Oktober 2014 um 23:40)

Jetzt mitmachen!

Du hast noch kein Benutzerkonto auf unserer Seite? Registriere dich kostenlos und nimm an unserer Community teil!