BlackBoard (http://www.black-board.net/index.php)
- Design, Programmierung & Entwicklung (http://www.black-board.net/board.php?boardid=55)
-- Programmieren (http://www.black-board.net/board.php?boardid=4)
--- PHP funktion wird nicht ausgeführt (http://www.black-board.net/thread.php?threadid=23806)


Geschrieben von 0cool am 16.10.2009 um 16:00:

  funktion wird nicht ausgeführt

Hey Leute,

ich habe mal wieder ein Problem mit PHP. Die Funktion htmlentities wird nicht ausgeführt. Ich will eine zufällige reinfolge von Zitaten erstellen. In diesen Zitaten soll es egal sein, wenn umlaute verwendet werden. Leider werden die Umlaute nicht als umlaute dargestellt, sondern der HTML code für Umlaute wird angezeigt.

Damit ihr mir ichtig helfen könnt, hier der code smile

php:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:

<?PHP
$datei "motto.inc";
$temp file($datei);
$max = (count($temp))/2;

for ($i 0$i $max$i++){
  $motto [$i][Zitat] = htmlentities($temp[$i]);
  $motto [$i][Quelle] = htmlentities($temp[$i +1]);
}

//Variablen vergeben
$maxwert count ($motto)-1;
$nr zufall(0$maxwert);
$zitat $motto[$nr][Zitat];
$quelle $motto[$nr][Quelle];
ausgabe ($zitat$quelle);

//Funktion für die zufällige auswahl der Zitate
function zufall ($min$max){
  srand ((double)microtime()*1000000);
  return (rand($min$max));
}


//Ausgabe der Daten


function ausgabe ($zitat$quelle){
  echo "<div align=\"right\">";
  echo "<b>$zitat</b><br>";
  echo "<small><i>$quelle.</i></small>";
  echo "</div>";
  echo "<hr>";
}
?>


Dazu noch die motto.inc

code:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
Alt wird man wohl, wer aber klug?
Johann Wolfgang von Goethe
Ich habe hier bloß ein Amt und keine Meinung
Friedrich Schiller
Computer sind die Inteligentesten Idioten, die es gibt
Norman Mailer
Politik ist das Paradies zungenfertiger Schwätzer
Georg Bernhard Shaw
Die Welt ist gross genug, das wir alle darin Unrecht haben können!
Arno Schmidt


Danke für eure Hilfe.


Gruß

0cool



Geschrieben von HeaD am 16.10.2009 um 16:21:

 

Probier es mal mit htmlspecialchars() statt htmlentities()...

Soweit ich weiß ist htmlentities() etwas "radikaler" und wandelt wirklich ALLES in HTML um...



Geschrieben von LX am 16.10.2009 um 17:09:

Achtung

Unabhängig von der Umlautgeschichte: schau dir mal array_rand() an.



Geschrieben von 0cool am 16.10.2009 um 17:28:

  PHP funktion wird nicht ausgeführt

@HeaD: danke aber es hat nichts gebracht beide Funktionen geben das selbe aus, nämlich die Umlaute als HTML code.

Wie bekomme ich es hin das am ende die Umlaute als Umlaute dargestellt werden?
Muss ich vielleicht dazu meinen lokalen Webserver so einstellen das ich die Dateien *.htm oder *.html nennen kann?

@LX: ich hatte zuerst die ganze geschichte als array laufen aber jetzt wollte ich mal die Variante probieren.


Gruß

0cool



Geschrieben von HeaD am 16.10.2009 um 21:09:

  RE: PHP funktion wird nicht ausgeführt

Zitat:
Original von 0cool
@LX: ich hatte zuerst die ganze geschichte als array laufen aber jetzt wollte ich mal die Variante probieren.


Öhm, das ist immer noch ein Array !?



Geschrieben von 0cool am 16.10.2009 um 23:34:

  PHP funktion wird nicht ausgeführt

@LX: Das ist mir schon klar, aber eher wohl ein temporäres array. Ich hatte es davor mit einem array versucht in dem die Zitate mit der Quelle stehen, das hat auch gut geklappt, bloss muss ich dann jedesmal ein neues array anlegen um ein Zitat mit Quelle hinzuzufügen und genau das will ich nicht mehr. Ich findes es einfacher über eine externe Datei die eingelesen wird so nach dem muster wie ich es hier mache.
Aber das ist ja auch geschmack sache und ausserdem war das von dir ja auch nur ein Vorschlag, den ich mir angeschaut habe, aber nicht so gut fand.

Trozdem Danke

0cool



Geschrieben von HeaD am 16.10.2009 um 23:53:

 

Ich weiß nicht ob ich da was falsch verstehe, aber es ist doch egal ob das Array aus einer Datei gefüllt wird oder sonstwo. Es ist letztendlich das selbe, ein Array. Diese Random Funktion funktioniert trotzdem...

Dazu könntest du das Zitat und den Autor in eine Zeile schrieben und mit einem Trennzeichen arbeiten, dann gibt es auch nicht so schnell ein Durcheinander...

Zu dem Problem mit den Umlauten fällt mir im Moment nichts anderes ein als eine Funktion schreiben die diese Zeichen sucht und ersetzt. Dabei habe ich aber noch eine Frage, nämlich wieso Du die Umlaute nicht im HTML Code haben willst?



Geschrieben von 0cool am 17.10.2009 um 01:15:

  PHP funktion wird nicht ausgeführt

@HeaD: Danke erstmal für deine Hilfe. Zu deiner Frage mit den Umlauten, mir geht es darum das die Umlaute nachher auf der Webseite nicht als HTML code dargestellt werden, so wie es jetzt gerade ist, sondern das die Umlaute auch als Umlaute dargestellt werden sollen.
Also ein ä soll auch als ä dargestellt werden.

bsp.
Im Moment:
code:
1:
2:
3:
Politik ist das Paradies zungenfertiger Schw&auml;tzer

Ziel:
code:
1:
2:
3:
Politik ist das Paradies zungenfertiger Schwätzer


Egal ob ich in der datei "motto.inc" Umlaute oder html code für die Umlaute verwende, es wird immer der html code für die Umlaute ausgegeben.

Genau da liegt mein Problem.
Wie bekomme ich es hin das die Umlaute auch als Umaute angezeigt werden?


Gruß

0cool



Geschrieben von HeaD am 17.10.2009 um 01:47:

 

Mit welchem Browser arbeitest Du denn? Ich hab Dein Script mal getestet und bei mir sind nur im Quellcode die HTML Codes für Umlaute.. Im Browser als Webseite selbst wird alles korrekt angezeigt..



Geschrieben von 0cool am 17.10.2009 um 12:24:

  PHP funktion wird nicht ausgeführt

@Head: Das ist ja schon mal ein Anfang smile
Ich habe mir die Seite mit 3 Verschiedenen Browsern anzeigen lassen, Firefox 3.5.3, Opera 10.0 und zu guter letzt IE 6.0, doch bei allen drei browser zeigt er mir nur den html code statt den Umlaut oder das "ß".
Was ich auch noch gemacht habe, ich habe mir das script auf 3 verschiedene Webserver ausgeführt und angeschaut, auf diesen Webservern sind die PHP versionen 4.4.7, 4.4.9, 5.1.2 installiert. Das brachte aber auch keinen erfolg.

Woran kann es noch liegen?

Gruß

0c00p



Geschrieben von LX am 17.10.2009 um 13:45:

 

Kannst du uns mal einen Link zu dem Skript auf einem der Webserver geben? Bei mir funktioniert das Skript originalgetreu wie aus dem ersten Beitrag übernommen ebenfalls.



Geschrieben von HeaD am 17.10.2009 um 15:26:

 

Das hier ist jetzt nicht die Lösung zu Deinem Problem, aber ich würd Dir gern zeigen wie klein das Programm mit array_rand() sein kann smile Ist ungetestet, sollte aber funktionieren...

Die PHP Datei:
php:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
<?php
$datei "motto.inc";
$temp file($datei);
    
ausgabe ($temp[array_rand($temp)]);

function ausgabe ($zeile) {
    $zitat explode("µ"$zeile);
    echo "<div align=\"right\">";
    echo "<b>$zitat[0]</b><br>";
    echo "<small><i>$zitat[1].</i></small>";
    echo "</div>";
    echo "<hr>";
}
?>

die motto.inc
code:
1:
2:
3:
4:
5:
Alt wird man wohl, wer aber klug?µJohann Wolfgang von Goethe
Ich habe hier bloß ein Amt und keine MeinungµFriedrich Schiller
Computer sind die Inteligentesten Idioten, die es gibtµNorman Mailer
Politik ist das Paradies zungenfertiger SchwätzerµGeorg Bernhard Shaw
Die Welt ist gross genug, das wir alle darin Unrecht haben können!µArno Schmidt


Dabei kommt dann am Ende das selbe raus smile



Geschrieben von 0cool am 17.10.2009 um 17:16:

  PHP funktion wird nicht ausgeführt

@HeaD: Vielen Dank das werde ich mal ausprobieren.

@LX: Der link zu dem Script: hier
Das kommische ist das das Script auf deinem Webserver auch bei mir funktioniert. smile

[edit]
@LX: ich habe den fehler gefunden, es lag an meinem Editor an den Einstellungen. Ich benütze den Editor Phase5 un dieses Programm wandelt mit den Grundeinstellungen von Projekten Umlaute in HTML code automatisch um. Als ich diese Einstellung deaktivierte und die motto.inc wieder berichtigte, funktionierte es plötzlich.
[/edit]

Danke für eure Hilfe

0cool


Forensoftware: Burning Board 2.3.6, entwickelt von WoltLab GmbH