Finde Fehler im PHP-Switch nicht.

Diskutiere Finde Fehler im PHP-Switch nicht. im Programmierung Forum im Bereich Software Forum; Hallo Community, wieder muss ich euch durch mit einem relativ banalen Problem belästigen. Ich finde einfach nicht den Fehler im Script nicht...
G

Ghost in the Shell

Gast
Hallo Community,
wieder muss ich euch durch mit einem relativ banalen Problem belästigen.
Ich finde einfach nicht den Fehler im Script nicht:
<?php
include "mysql.php";
function switch_link($art)
{
if($art=="direkt")
{

switch($target)
{
$nav_direkt = mysql_query("select * from nav where `direkt`=`1`");
while ($dsatz = mysql_fetch_assoc($nav_direkt))
{

$link_direkt= $dsatz["link"];
$content_direkt= $dsatz["content"];
case $link_direkt:
$include = $content_direkt;
break;
}


default:
echo = "";

}
include $include;
}
?>
Theoretisch sollte der Code gehen, nur tut er das leider nicht. Dafür bekomme ich die Fehlermeldung
Parse error: syntax error, unexpected T_WHILE, expecting T_CASE or T_DEFAULT or '}' in /var/www/virtual/phpproject.de/htdocs/0.4/sys/functions_lib.php on line 10
Anscheinend bin ich zu blind um den Fehler zu finden.
 
S

SuperTux

Gast
Der Inhalt deiner mysql.php ist sicher auch wichtig.
 
DerZong

DerZong

MODERATOR/FAQ-Team
Team
Mitglied seit
12.10.2004
Beiträge
4.677
Alter
41
Wer oder was sagt dir, dass der Code "theoretisch" gehen müsste?
Erstens fehlt noch eine "}"-Klammer und zweitens ist der CASE-Block unerreichbar, er muss in der Stufe direkt im Anschluss an die SWITCH-Anweisung kommen (das sagt ja auch schon die Fehlermeldung: Unerwarteter Befehl: while, erwartete Befehle: case bzw. default)

Und noch ein kleiner Tip am Rande: Wenn du Schwierigkeiten haben solltest, deinen eigenen Code zu lesen, dann füge dir Kommentare insbesondere bei Anweisungsblöcken ein ( {, } ) - sagt dir das Beispiel "Dangeling ELSE" etwas? ;)

Ich habe den Code mal etwas "lesbarer" gestaltet und die fehlende }-Klammer ergänzt (wobei ich natürlich nicht wissen kann, ob sie dort wirklich richtig ist). Um dein switch-"Problem" müsstest du dich jedoch selber kümmern - vielleicht ist aber auch ein anderer Aufbau ohne switch die bessere Wahl :sleepy

PHP:
<?php 
include "mysql.php";
function switch_link($art)
{
  if($art=="direkt")
    {
      switch($target)
      {

// den folgenden WHILE-Block musst du komplett umstrukturieren - so wird es
// nicht funktionieren, da nach einem SWITCH immer ein CASE oder DEFAULT
// folgen muss.
        $nav_direkt = mysql_query("select * from nav where `direkt`=`1`");
        while ($dsatz = mysql_fetch_assoc($nav_direkt))
        {
          $link_direkt= $dsatz["link"];
          $content_direkt= $dsatz["content"];

          case $link_direkt:
            $include = $content_direkt;
            break; 
        } // Ende WHILE-Block

        default: 
          echo = "";
      } // Ende SWITCH-Block
    include $include;

  }  // könnte hier die fehlende Klammer für die IF-Anweisung hingehören?

} // Ende function switch_link
?>
 
G

Ghost in the Shell

Gast
Wirklich geholfen ist mir damit auch nicht, da die Funktion weiter geht und ich vorher alle Klammern überprüft habe, das war lediglich ein Ausschnitt, hatte wohl leider vergessen die darauffolgende Klammer mit einzufügen. Die mysql.php included lediglich den connect befehl, mehr nicht.

Das was übrig bleibt ist die switch-Anweisung, wie sollte ich diese denn anderes realisieren, etwa mit IF-konstruktionen?
 
DerZong

DerZong

MODERATOR/FAQ-Team
Team
Mitglied seit
12.10.2004
Beiträge
4.677
Alter
41
Du musst aber schon zugeben, dass es schwierig wird, dir bei deinem Code zu helfen, wenn wir zum einen gar nicht wissen, was der Code denn nun beabsichtigen soll. Und zum anderen: Je kleiner der Ausschnitt aus dem Gesamtcode ist, um so schwieriger wird es für Außenstehende, ihn auf Funktionalität hin zu überprüfen. Und du hast selber gesehen, dass es nicht immer leicht ist, den Ausschnitt auch "vollständig" zu kopieren.

Sicher, eine IF-Konstruktion wäre eine Möglichkeit - ob es jedoch die "richtige" ist, kann man zum jetzigen Zeitpunkt sicherlich noch nicht sagen.
 
G

Ghost in the Shell

Gast
Eigentlich müsstest du erkennen was es macht :) , die Funktion ist sogar relativ einfach. Das Script liest lediglich den vom Benutzer eingegebenen Pfad aus und verlinkt ihn dann wenn der kurzlink per $target übergeben wird.


Ich versuchs mal mit IF-Anweisungen, wenns klappt bekommt ihr das Script.
 
Thema:

Finde Fehler im PHP-Switch nicht.

Finde Fehler im PHP-Switch nicht. - Ähnliche Themen

  • Microsoft Store kann keine Apps finden / laden / installieren: Fehler: Code: 0x000001F8 / CV: Andkf8Cb8kWEGyEi

    Microsoft Store kann keine Apps finden / laden / installieren: Fehler: Code: 0x000001F8 / CV: Andkf8Cb8kWEGyEi: Ich habe schon alles versucht: Store deinstalliert und wieder neu installiert. sfc/ scannow und die DISM Befehle durchgeführt So langsam weiss...
  • Upgrade von 1803 auf 1809 schlägt fehl - finde jedoch den Fehler nicht -> bitte helfen

    Upgrade von 1803 auf 1809 schlägt fehl - finde jedoch den Fehler nicht -> bitte helfen: Hallo, seit mehreren Tagen versuche ich, mein Dell-Notebook von 1803 auf 1809 zu aktualisieren, jedoch erhalte ich jedes mal den Fehler...
  • finde den fehler

    finde den fehler: Guten Tag, für die Arbeit muss ich eine Preissensitivitätsanalyse machen und habe die zwei folgenden Formeln unter anderem verwendet. Beide...
  • Ich finde meinen Fehler

    Ich finde meinen Fehler: Bin grade bei der Entschlüsselung und immer kommt genau das gleiche bei Raus habt ihr nen Plan wo der Fehler ist FOR /F "skip=%skip%" %%A IN...
  • [App Vorstellung] Finde den Fehler

    [App Vorstellung] Finde den Fehler: Hallo zusammen :) Ich möchte an dieser Stelle ein Spiel vorstellen welches ich programmiert habe und seit letzter Woche im Windows Store...
  • Ähnliche Themen

    Oben