AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

PHP-Problem

Ein Thema von CalganX · begonnen am 14. Okt 2002 · letzter Beitrag vom 15. Okt 2002
Antwort Antwort
Seite 1 von 2  1 2      
CalganX

Registriert seit: 21. Jul 2002
Ort: Bonn
5.403 Beiträge
 
Turbo Delphi für Win32
 
#1

PHP-Problem

  Alt 14. Okt 2002, 12:19
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]
  Mit Zitat antworten Zitat
Alexander

Registriert seit: 28. Aug 2002
Ort: Oldenburg
3.513 Beiträge
 
Turbo Delphi für .NET
 
#2
  Alt 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
Alexander
  Mit Zitat antworten Zitat
Chewie

Registriert seit: 10. Jun 2002
Ort: Deidesheim
2.886 Beiträge
 
Turbo Delphi für Win32
 
#3
  Alt 14. Okt 2002, 19:23
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.
Martin Leim
Egal wie dumm man selbst ist, es gibt immer andere, die noch dümmer sind
  Mit Zitat antworten Zitat
Christian Seehase
(Co-Admin)

Registriert seit: 29. Mai 2002
Ort: Hamburg
11.105 Beiträge
 
Delphi 11 Alexandria
 
#4
  Alt 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);
#----------------------------------------------
Tschüss Chris
Die drei Feinde des Programmierers: Sonne, Frischluft und dieses unerträgliche Gebrüll der Vögel.
Der Klügere gibt solange nach bis er der Dumme ist
  Mit Zitat antworten Zitat
Benutzerbild von RomanK
RomanK

Registriert seit: 7. Jun 2002
Ort: Kirchheim unter Teck
1.036 Beiträge
 
Delphi 7 Personal
 
#5
  Alt 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
Ich bin nämlich ned der PHP-Guru
Roman Keller
Krieg ist Gottes Art den Amerikanern Geographie beizubringen!
  Mit Zitat antworten Zitat
Chewie

Registriert seit: 10. Jun 2002
Ort: Deidesheim
2.886 Beiträge
 
Turbo Delphi für Win32
 
#6
  Alt 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];
}
Martin Leim
Egal wie dumm man selbst ist, es gibt immer andere, die noch dümmer sind
  Mit Zitat antworten Zitat
CalganX

Registriert seit: 21. Jul 2002
Ort: Bonn
5.403 Beiträge
 
Turbo Delphi für Win32
 
#7
  Alt 15. Okt 2002, 08:57
! STOP !
Hat sich bereits alles erledigt...

Chris
  Mit Zitat antworten Zitat
Daniel
(Co-Admin)

Registriert seit: 30. Mai 2002
Ort: Hamburg
13.919 Beiträge
 
Delphi 10.4 Sydney
 
#8
  Alt 15. Okt 2002, 09:03
Hallo Chakotay,

woran lag es denn?
Daniel R. Wolf
mit Grüßen aus Hamburg
  Mit Zitat antworten Zitat
CalganX

Registriert seit: 21. Jul 2002
Ort: Bonn
5.403 Beiträge
 
Turbo Delphi für Win32
 
#9
  Alt 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
  Mit Zitat antworten Zitat
CalganX

Registriert seit: 21. Jul 2002
Ort: Bonn
5.403 Beiträge
 
Turbo Delphi für Win32
 
#10
  Alt 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
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 01:10 Uhr.
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