Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   PHP-Problem (https://www.delphipraxis.net/1070-php-problem.html)

CalganX 14. Okt 2002 12:19


PHP-Problem
 
Auch, wenn das hier kein PHP-Forum ist...
Ersteinmal die Funktion:
Code:
 function getFileName($id) {
   
  global $cat;
  global $lang;
  global $files;
 
  if ($id == "tut_tp") {       # tutorials
   $lang = "tp";
   $rsite = "tutorials.php";
  } elseif ($id == "tut_delphi") {
   $lang = "delphi";
   $rsite = "tutorials.php";
#----------------------------------------------
  } elseif ($id == "inf_tut") {  # tipps
   $cat = "tuts";
   $rsite = "info.php";
  } elseif ($id == "inf_tipp") {
   $cat = "tipps";
   $rsite = "info.php";
#----------------------------------------------   
  } elseif ($id == "") {          # others
   $rsite = "home.php";
#----------------------------------------------   
  } elseif ($id == "tipp_tp") {  # tipps
   $lang = "tp";
   $rsite = "tipps/list.php";
  } elseif ($id == "tipp_delphi") {
   $lang = "delphi";
   $rsite = "tipps/list.php";
#----------------------------------------------   
  } elseif ($x = array_search($id, $files)) {   # list
   $rsite = $files[$x];
#----------------------------------------------   
  } else {                   # errorhandling
   $rsite = "../errors/404.php";
  }
 
  return $rsite;
 
 }
Nun ist das Problem, dass wenn $id nicht im Array ist, so klappt alles, aber wenn $id bspw. "links" ist, so wird "404.php" zurückgegeben...
Woran könnte das liegen?

Chris

[edit=Admin]Ich habe das mal nach "Programmieren allgemein" verschoben[/edit]

Alexander 14. Okt 2002 19:00

ich habe beim schnellen Überfliegen festgestellt das beim letzten elseif nur ein = steht, müssten dort nicht zwei stehen?

Sonst würde mir auch nichts einfallen

Chewie 14. Okt 2002 19:23

Zitat:

Zitat von alexander
ich habe beim schnellen Überfliegen festgestellt das beim letzten elseif nur ein = steht, müssten dort nicht zwei stehen?

Nein, müssten glaube ich nicht, da es sich um eine Zuweisung handelt. Der Rückgabewert der Funktion wird x zugewiesen und anschließend überprüft, ob x TRUE ist.

Christian Seehase 14. Okt 2002 21:34

Moin Chewie,

ich kenn' mich zwar mit PHP nicht aus, aber ein wenig mit C.
Eine Zuweisung die gleichzeitig als Vergleich fungieren kann?
Das geht?

Wenn ja, vergiss' das folgende.

Also für mein Verständnis soll in der von Alexander angesprochenen Zeile nur verglichen werden. Soll auch noch zugewiesen werden, müsste dass doch so aussehen:

#----------------------------------------------
} elseif ($x == array_search($id, $files)) { # list
$rsite = $files[$x];
$x = array_search($id, $files);
#----------------------------------------------

RomanK 14. Okt 2002 21:58

Abend!

Also:
array_search gibt wenn der Wert von $id in dem Array $Files den index zurück wenn nicht dann False!

Also musst du erst zuweisen und dann überprüfen ob $x != false.
Vielleicht geht das so:

elseif (($x = array_search($id, $files)) and ($x != False) )

Falls es ned stimmt, einfach vergessen :roll:
Ich bin nämlich ned der PHP-Guru :cry:

Chewie 14. Okt 2002 22:02

Ich bin mir auch nicht ganz sicher, aber auf die Erklärung bin ich gekommen, als ich z. B. diesen Code gesehen hab:

Code:
$result = mysql_query("SELECT * FROM selfphp_funktionen");   while($row = mysql_fetch_row ($result)) {
  echo $row[0] . " - ";
  echo $row[1] . " - ";
  echo $row[2] . " - ";
  echo $row[3] . "
";
}
Das ist aus SelfPHP. Es funktioniert und ist im Prinzip das gleiche wie obiges.
Und man kann ja auch schreiben:
Code:
echo $string = 'Ich bin ein String';
anstatt von
Code:
$string = 'Ich bin ein String';
echo $string;
.

Nachtrag:
Außerdem wäre der Code wohl sinnlos, wenn man prüfen wollte, ob $x der Rückgabe von array_search entspricht, da $x vorher nicht definiert ist. Wenn dann müsste man das letzte Stück so schreiben:
Code:
if(array_search($id,$files)) {
  $x = array_search($id,$files);
  $rsite = $files[$x];
}

CalganX 15. Okt 2002 08:57

! STOP !
Hat sich bereits alles erledigt... :oops:

Chris

Daniel 15. Okt 2002 09:03

Hallo Chakotay,

woran lag es denn?

CalganX 15. Okt 2002 09:17

Daran, dass ich weiteroben im Quelltext einen Fehler mit den Variablen gemacht habe... Desweiteren habe ich die Fehlerabfrage an eine andere Stelle gesetzt...

Chris

CalganX 15. Okt 2002 09:23

Um nochmal eine Frage hinterher zu schieben: Folgendes Problem:
Der folgende Source funktioniert in der Hinsicht nicht, dass immer die if-Abfrage ausgeführt wird...

Code:
if (strpos($id, "tut_") == 0) {
 $rsite = "tutorials.php";
 $lang = substr($id, strpos($id, "_")+1, strlen($id));
} elseif { #...
Soll heißen, wenn $id bspw. "tut_tp" ist so soll $rsite = "tutorials.php" und $lang = "tp"...

Allerdings wird, wie gesagt, $rsite = "tutorials.php" ($lang ist dann immer was anderes)... Was tun?

Chris


Alle Zeitangaben in WEZ +1. Es ist jetzt 12:56 Uhr.
Seite 1 von 2  1 2      

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz