WinFuture-Forum.de: Frage zur Umbenennung von ID's in vollnamen - WinFuture-Forum.de

Zum Inhalt wechseln

Nachrichten zum Thema: Entwicklung
  • 3 Seiten +
  • 1
  • 2
  • 3

Frage zur Umbenennung von ID's in vollnamen oder so ähnlich

#1 Mitglied ist offline   Stefan_der_held 

  • Gruppe: Offizieller Support
  • Beiträge: 10.925
  • Beigetreten: 08. April 06
  • Reputation: 267

geschrieben 18. Februar 2012 - 21:26

Nabend Leute,

arbeite mal wieder n bischen an meiner Website... Mittlerweile wird für jede "id" die Titelzeile geändert... ein i-Tüpfelchen fehlt noch:

Die URL sollte möglichst mit geändert werden z.B. von

s-geschwind.de/index.php?id=1


in

s-geschwind.de/Hauptseite


Hier bin ich aber vollends überfragt wie das gehen soll...

Den Site-Quelltext kann man weitdesgehend hier einsehen:

http://s-geschwind.de

EDIT
Wen mein Lösungsweg für die Titelzeile interessiert hier der entsprechende Code
<title>
		<?php
		$id= $_GET["id"];
		if($id =="")
		{
		include("INCLUDE/title/1");
		}
		elseif ($id =="1")
		{
		include("INCLUDE/title/1");
		}
		elseif ($id =="2")
		{
		include ("INCLUDE/title/2");
		}
		elseif ($id =="3")
		{
		include ("INCLUDE/title/3");
		}	
		elseif ($id =="4")
		{
		include ("INCLUDE/title/4");
		}
		else
		{
		include("INCLUDE/title/1");
		}		
						
	?>
</title>


In den Zieldateien steht der entsprechende "Text"

Dieser Beitrag wurde von Stefan_der_held bearbeitet: 18. Februar 2012 - 21:32

Eingefügtes Bild
0

Anzeige

#2 Mitglied ist offline   LostSoul 

  • Gruppe: aktive Mitglieder
  • Beiträge: 127
  • Beigetreten: 01. Juni 05
  • Reputation: 11

geschrieben 19. Februar 2012 - 13:41

Guten Tag.

Das ist kein PHP-/Skript-Thema, sondern eines des Webservers. Schau mal bei Google nach "mod_rewrite" (wenn es ein Apache-Server ist) bzw. grundsätzlich mal unter http://de.wikipedia..../Rewrite-Engine

Übrigens ist der obige Code, nun, suboptimal. Für solche "Reihungen" sollte du eher switch() als if/elseif-Anweisungen nehmen.
0

#3 Mitglied ist offline   mush 

  • Gruppe: aktive Mitglieder
  • Beiträge: 877
  • Beigetreten: 29. Mai 07
  • Reputation: 7

geschrieben 19. Februar 2012 - 16:03

Meine Lösung ist folgende:

.htaccess Auszug
RewriteEngine On
RewriteBase /

RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} !^/index.php
RewriteCond %{REQUEST_URI} !^/(folder|folder/.*)$ ### pro Ordner eine Zeile (exclude z.B. für Images, JS, etc.)
RewriteRule (.*) index.php?args=$1 [L]


Dann kann man mit
function getArgs($args) {
    $delimiter = '/';
    if(substr($args, -1) == $delimiter) {
        $args = substr($args, 0, -1);
    }
    return explode($delimiter, $args);
}

$args = @getArgs($_GET['args']);

ein Array aus Parametern einlesen.

Also mit http://domain.tld/foo/bar bekommst $args[0] = 'foo' und $args[1] = 'bar'.

EDIT:
Du kannst übrigens auch mit is_numeric() bzw. ctype_alnum() und file_exists() arbeiten, um diese grausamen Abfragen zu vermeiden. Das wird schnell unübersichtlich und hässlich.

Dieser Beitrag wurde von mush bearbeitet: 19. Februar 2012 - 16:27

insane in the membrane
0

#4 Mitglied ist offline   Stefan_der_held 

  • Gruppe: Offizieller Support
  • Beiträge: 10.925
  • Beigetreten: 08. April 06
  • Reputation: 267

geschrieben 19. Februar 2012 - 17:02

ich seh schon... um oop komm ich wohl nicht länger umher ;D hab mich bislang eigentlich immer erfolgreich vor gedrückt ;D

Danke werde mich mal damit befassen.
Eingefügtes Bild
0

#5 Mitglied ist offline   mush 

  • Gruppe: aktive Mitglieder
  • Beiträge: 877
  • Beigetreten: 29. Mai 07
  • Reputation: 7

geschrieben 19. Februar 2012 - 17:11

Also mit Objektorientierung hat das noch garnichts zutun ;)
insane in the membrane
0

#6 Mitglied ist offline   Stefan_der_held 

  • Gruppe: Offizieller Support
  • Beiträge: 10.925
  • Beigetreten: 08. April 06
  • Reputation: 267

geschrieben 19. Februar 2012 - 17:52

hm? ein Array habe ich eigentlich immer mit OOP in Verbindung... naja... dass ich OOD/OOP hatte is ja auch schon etwas her ;D seitdem immer gemieden wo es nur geht
Eingefügtes Bild
0

#7 Mitglied ist offline   N1truX 

  • Gruppe: aktive Mitglieder
  • Beiträge: 2.795
  • Beigetreten: 06. Juli 06
  • Reputation: 2

geschrieben 19. Februar 2012 - 22:32

Ein Array kann man in PHP auch als assoziatives Array ansprechen und behandeln, was ja schon Ähnlichkeiten, besser Grundzüge von OOP besitzt. Aber OOP geht ja noch wesentlich weiter als das ;-)
PC: AMD FX-8150 | Sapphire Radeon HD 5770 @OC-Bios | GA-990XA-UD3 - 4x4 GB DDR3-2133 | OCZ Agility II 128 GiB SSD (OS) & 10 TB-Storage-Server | Win7 Professional x64
NB: Sony Vaio VPCYB16 - AMD Fusion E-350 - 1x4 GiB Kingston DDR3-1333 - 64 GiB Super*Talent SSD
0

#8 Mitglied ist offline   Holger_N 

  • Gruppe: aktive Mitglieder
  • Beiträge: 3.123
  • Beigetreten: 11. September 10
  • Reputation: 32

geschrieben 20. Februar 2012 - 10:37

Das mit den Titeln würde ich so machen, dann muß man einfach immer nur erweitern.


<?php

$titel[1] = "Titel 1";
$titel[2] = "Titel 2";
$titel[3] = "Titel 3";
$titel[4] = "Titel 4";



if (isset($_GET['id'])) {$ausgabe = $titel[$_GET['id']];} else {$ausgabe = "Standardtitel"; }

echo("<titel>".$ausgabe."</titel>");

?>



Die Zuordnung kann man ja auch auslagern und includieren.
Eingefügtes Bild
0

#9 Mitglied ist offline   FenKeN 

  • Gruppe: aktive Mitglieder
  • Beiträge: 222
  • Beigetreten: 22. September 11
  • Reputation: 8

geschrieben 20. Februar 2012 - 13:41

Was mich da gerade interessiert, passt zwar nicht wirklich zum Thema, aber Holger.. Warum machst du bei deiner if geschweite Klammern, wenn sie eh nur eine Zeile haben?
if (isset($_GET['id'])) 
   $ausgabe = $titel[$_GET['id']];
else 
   $ausgabe = "Standardtitel";


dürfte eigentlich reichen
MVC Tutorial
<?php
	echo "Liebe Grüße FenKeN";
?>
0

#10 Mitglied ist offline   Stefan_der_held 

  • Gruppe: Offizieller Support
  • Beiträge: 10.925
  • Beigetreten: 08. April 06
  • Reputation: 267

geschrieben 20. Februar 2012 - 16:52

Beitrag anzeigenZitat (Holger_N: 20. Februar 2012 - 10:37)

Das mit den Titeln würde ich so machen, dann muß man einfach immer nur erweitern.


<?php

$titel[1] = "Titel 1";
$titel[2] = "Titel 2";
$titel[3] = "Titel 3";
$titel[4] = "Titel 4";



if (isset($_GET['id'])) {$ausgabe = $titel[$_GET['id']];} else {$ausgabe = "Standardtitel"; }

echo("<titel>".$ausgabe."</titel>");

?>



Die Zuordnung kann man ja auch auslagern und includieren.


Danke für den Tipp... PHP ist bei mir doch schon eingerosteter als ich gedacht hab ;D so sieht das schon saubererererer aus und hab somit nicht mehr drölftausend Files. So machen mers :-)

@CryztaN:
Schon wahr... ist nochweniger... aber finde Holger's Lösungsweg doch etwas übersichtlicher/besser dokumentierbar.
Eingefügtes Bild
0

#11 Mitglied ist offline   Holger_N 

  • Gruppe: aktive Mitglieder
  • Beiträge: 3.123
  • Beigetreten: 11. September 10
  • Reputation: 32

geschrieben 20. Februar 2012 - 18:09

Ich hab mir das so angewöhnt und brauche das für meine Übersichtlichkeit. Normalerweise schreib ich das auch noch über mehrere Zeilen, also so:


if ( Bedingung )

     {
      //dann
     }

     else

     {
      //sonst
     }




Dann hab ich ganz übersichtlich meine Blöcke und man weiß ja nie, was an Ereignissen noch dazukommt. Also statt der einfachen Zuweisung des Titels an die Variable $ausgabe, könnte ja auch eine mehrzeilige, komplizierte dynamische Titelerstellung kommen.

Dieser Beitrag wurde von Holger_N bearbeitet: 20. Februar 2012 - 18:12

Eingefügtes Bild
1

#12 Mitglied ist offline   FenKeN 

  • Gruppe: aktive Mitglieder
  • Beiträge: 222
  • Beigetreten: 22. September 11
  • Reputation: 8

geschrieben 21. Februar 2012 - 08:16

Beitrag anzeigenZitat (Holger_N: 20. Februar 2012 - 18:09)

Also statt der einfachen Zuweisung des Titels an die Variable $ausgabe, könnte ja auch eine mehrzeilige, komplizierte dynamische Titelerstellung kommen.


Und genau da braucht man eh wieder die geschweifen klammern ;).
MVC Tutorial
<?php
	echo "Liebe Grüße FenKeN";
?>
0

#13 Mitglied ist offline   Holger_N 

  • Gruppe: aktive Mitglieder
  • Beiträge: 3.123
  • Beigetreten: 11. September 10
  • Reputation: 32

geschrieben 21. Februar 2012 - 09:05

Beitrag anzeigenZitat (CryztaN: 21. Februar 2012 - 08:16)

Und genau da braucht man eh wieder die geschweifen klammern ;).


Jo eben und wenn ich die bei den Sachen, wo sie nicht zwingend gebraucht werden wegließe, dann vergäße ich sie möglicherweise bei den Sachen wo man sie braucht. So schreib ich die immer mit, ist übersichtlicher und prinzipiell ja auch nicht falsch. Im Gegenteil - alles immer schön eindeutig hab ich mal gelernt.

Es gibt da ja zwei Herangehensweisen. Die einen schreiben so kurz wie möglich und stopfen alles ineinander und verschachteln, dass man gar nicht mehr durchsieht und die Anderen schreiben übersichtlich und sparen sich das Kommentieren. Ich klammere zum Beispiel sehr gerne, auch wenn es nicht nötig ist. Sogar bei Berechnungen wo beispielsweise Punkt- vor Strichrechnung schon das richtige Ergebnis brächte, klammere ich 100%ig sicher nochmal so, wie ich die Berechnung gern hätte.

Mir war das früher auch mal passiert, dass ich auch Sachen weggelassen habe, die nicht zwingend notwendig waren und es hat alles super funktioniert aber nach der Umstellung von PHP4 auf 5 ging es plötzlich nicht mehr und dann ging die große Fehlersuche los.
Eingefügtes Bild
0

#14 Mitglied ist offline   Witi 

  • Gruppe: aktive Mitglieder
  • Beiträge: 5.796
  • Beigetreten: 13. Dezember 04
  • Reputation: 36

geschrieben 21. Februar 2012 - 19:00

@CryztaN. Ich setze auch immer aus Gründen der Lesbarkeit geschweifte Klammern. Wenn du wie ich an Software gearbeitet hast, die mehrere Millionen Zeilen Code enthält, dann würdest du dir auch wünschen, dass man das immer so machen würde. ;)

Ich bin bspw auch nicht wirklich Fan des ternären Operators.
Aus dem Beispiel von oben
if (isset($_GET['id'])) 
   $ausgabe = $titel[$_GET['id']];
else 
   $ausgabe = "Standardtitel";

wird
$ausgabe = (isset($_GET['id'])) ? $titel[$_GET['id']] : "Standardtitel";

Es ist zwar kürzer und nur in einer Zeile, aber für mich einfach unleserlich.

Btw...der Quellcode-Abschnitt wird knallen, wenn als id ein Wert übertragen wird, der in $titel nicht vorhanden ist.
witi@jabber.ccc.de 0xAAE321A2

50226 - Witis Blog
0

#15 Mitglied ist offline   Holger_N 

  • Gruppe: aktive Mitglieder
  • Beiträge: 3.123
  • Beigetreten: 11. September 10
  • Reputation: 32

geschrieben 21. Februar 2012 - 20:40

Beitrag anzeigenZitat (Witi: 21. Februar 2012 - 19:00)

...

Btw...der Quellcode-Abschnitt wird knallen, wenn als id ein Wert übertragen wird, der in $titel nicht vorhanden ist.


Ja das wäre für den Fall, dass die id dynamisch generiert wird aber dann sollte man auch den Titel auf eine andere solche Weise generieren. Ich find das aber trotzdem irgendwie schön, dass es in der Programmiererei für ein Problem so viele unterschiedliche Lösungen und Ansätze gibt.
Eingefügtes Bild
0

Thema verteilen:


  • 3 Seiten +
  • 1
  • 2
  • 3

1 Besucher lesen dieses Thema
Mitglieder: 0, Gäste: 1, unsichtbare Mitglieder: 0