PHP include
Sago
- php
0 Metalgurke0 Sago0 dedlfix
3 Metalgurke0 Sago
1 dedlfix
0 Tom0 Sago
Hallo, ich habe eine PHP funktion gefunden, siehe unten, die mir ein "Tagcloud" aus vorgegebenen Begriffen generiert.
Macht genau das was ich will. Allerdings möchte ich das PHP auf meiner Seite includen. Da ich leider nicht so fit bin in PHP weis ich jetzt nicht was ich in meine HTML/PHP schrieben muss , damit die Tags auch wirklich angezeigt werden.
Wie ich Include ist kein Problem, der unten genannte Code steht in dieser IncludeSeite.
<? echo $tags; ?> bringt mir nur den ersten Begriff?
Danke
Sago
function printTagCloud($tags) {
// $tags is the array
arsort($tags);
$max_size = 32; // max font size in pixels
$min_size = 12; // min font size in pixels
// largest and smallest array values
$max_qty = max(array_values($tags));
$min_qty = min(array_values($tags));
// find the range of values
$spread = $max_qty - $min_qty;
if ($spread == 0) { // we don't want to divide by zero
$spread = 1;
}
// set the font-size increment
$step = ($max_size - $min_size) / ($spread);
// loop through the tag array
foreach ($tags as $key => $value) {
// calculate font-size
// find the $value in excess of $min_qty
// multiply by the font-size increment ($size)
// and add the $min_size set above
$size = round($min_size + (($value - $min_qty) * $step));
echo '<a href="#" style="font-size: ' . $size . 'px" title="' . $value . ' things tagged with ' . $key . '">' . $key . '</a> ';
}
}
$tags = array('weddings' => 32, 'birthdays' => 41, 'landscapes' => 62, 'ham' => 51, 'chicken' => 23, 'food' => 91, 'turkey' => 47, 'windows' => 82, 'apple' => 27);
printTagCloud($tags);
Hi Sago,
leider kann ich nicht wirklich nachvollziehen was jetzt genau dein Problem ist.
Der PHP Code ist korrekt und funktioniert. Warum übernimmst du diesen dann nicht einfach?
Wenn ich dich richtig verstanden habe, hast du den PHP-Code in einer extra Datei ausgelagert und möchtest diesen nun in deine "HTML/PHP" inkludieren.
Das sollte soweit kein Problem sein. Dazu verwendest du einfach den PHP Befehl "include". Nachzulesen auf PHP.net
Vielleicht erläuterst du nochmal im Detail woran es hapert.
Vielleicht habe ich dich aber auch falsch verstanden.
Gruß Metalgurke
Hi
Der PHP Code ist korrekt und funktioniert. Warum übernimmst du diesen dann nicht einfach?
In meiner index.php steht an erster Stelle <?php include 'files/include.php';?>
In der include.php steht die Funktion (die funktioniert :) )
Wenn ich die Funktion direkt in die index.php schreibe funktioniert alles wie gewünscht (Alle Tags werden angezeigt), ich will aber nicht auf jeder Seite (index.php; index1.php..) die Funktion schreiben sondern nur die "Echo Ausgabe" (sorry, ich kenne den Fachbegriff nicht) angezeigt bekommen (aus der include.php).
Wenn ich aber in den Quellcode von index.php schreibe: <? echo $tags; ?> wird nur der erste Tag angezeigt?
Vielleicht habe ich dich aber auch falsch verstanden.
Liegt wahrscheinlich daran, dass ich nicht weiß wovon ich rede ;) PHP ist Neuland für mich!
Grüße
Sago
Hi!
Wenn ich die Funktion direkt in die index.php schreibe funktioniert alles wie gewünscht (Alle Tags werden angezeigt), ich will aber nicht auf jeder Seite (index.php; index1.php..) die Funktion schreiben sondern nur die "Echo Ausgabe" (sorry, ich kenne den Fachbegriff nicht) angezeigt bekommen (aus der include.php).
Ein include wirkt so, als ob der inkludierte Code an der Stelle im Script steht. Du musst in Gedanken die include-Anweisung durch dein Inhalt der angegebenen Datei ersetzen. Herauskommen muss zusammen mit dem Rest in der inkludierenden Datei funktionierender Code.
In deiner include-Datei befindet sich eine Funktion. Wenn du sie ausführen willst, musst du sie aufrufen. Jedes Script, das die Datein inkludiert, muss also auch noch die Funktion aufrufen. Alternativ kannst du den Aufruf auch noch in die zu inkludierenden Datei schreiben.
Wenn ich aber in den Quellcode von index.php schreibe: <? echo $tags; ?> wird nur der erste Tag angezeigt?
Eigentlich sollte das Wort "Array" angezeigt werden. Das macht PHP immer, wenn du versuchst, ein Array mit einer einfachen Ausgabeanweisung auszugeben.
Lo!
Wenn ich aber in den Quellcode von index.php schreibe: <? echo $tags; ?> wird nur der erste Tag angezeigt?
Komisch das er dir überhaupt ein Tag anzeigt, denn es handelt sich ja hierbei um ein Array und nicht um ein Anker-Tag, welches ja übrigens durch die ausgelagerte Funktion generiert wird.
Naja, es kann sich hierbei nur um Anfängerprobleme handeln ;)
Pass auf, folgender Code funktioniert bei mir wunderbar.
In der Datei include.php steht die ausgelagerte Funktion.
<?php
include 'include.php';
$tags = array('weddings' => 32, 'birthdays' => 41, 'landscapes' => 62, 'ham' => 51, 'chicken' => 23, 'food' => 91, 'turkey' => 47, 'windows' => 82, 'apple' => 27);
?>
<html>
<head>
<title>blaa</title>
</head>
<body>
<?php
printTagCloud($tags); // An dieser Stelle werden die Tags generiert
?>
</body>
</html>
Ich bin mir nicht sicher auf welchem Stand du bist, aber evtl. solltest du dir nochmal grundlegende programmiertechnische Dinge, wie bspw. Funktionsdefinition, Funktionsaufruf, Parameterübergabe bei Funktionen, verdeutlichen. Mir kommt es nämlich so vor, als ob dir nicht wirklich klar ist, was du da eigentlich machst :) *nicht böse gemeint*
Ich hoffe dir trotzdem geholfen zu haben.
Moin,
Komisch das er dir überhaupt ein Tag anzeigt, denn es handelt sich ja hierbei um ein Array und nicht um ein Anker-Tag, welches ja übrigens durch die ausgelagerte Funktion generiert wird.
»»
Ja Sorry, dedlfix und Du haben recht: es wird "Array" angezeigt!
Naja, es kann sich hierbei nur um Anfängerprobleme handeln ;)
»»
Mein reden, Anfänger ;)
Pass auf, folgender Code funktioniert bei mir wunderbar.
Ich hatte printTagCloud($tags) auch schon probiert, DA wurde mir nur der erste Tag angezeigt. Allerdings hatte ich $tags = array nicht mit in die Index.php geschrieben. Sitze gerad nicht an MEINEM Rechner. Werde ich heute Abend ausprobieren. Danke schön!
Mir kommt es nämlich so vor, als ob dir nicht wirklich klar ist, was du da eigentlich machst :) *nicht böse gemeint*
Damit könntes Du recht haben, aber ich bin stets bemüht ;) Null Problemo !
Ich hoffe dir trotzdem geholfen zu haben.
Das sehe ich dann heute Abend...
Gruß
Sago
Hi!
Der PHP Code ist korrekt und funktioniert.
Er ist nur dann korrekt, wenn man unter allen Umständen ausschließen kann, dass HTML-eigene Zeichen (<>&") in den Begriffen vorkommen. Ansonsten würde in dieser Zeile
echo '<a href="#" style="font-size: ' . $size . 'px" title="' . $value . ' things tagged with ' . $key . '">' . $key . '</a> ';
htmlspecialchars($key) statt nur $key die Korrektheit herstellen. $size ist berechnet, kann also nur ein Zahlenwert sein. Bei $value gehe ich auch davon aus, dass der Wert durch eine Rechenoperation erstellt wurde, also auch eine Zahl ist. Wenn daran Zweifel bestehen, kann man mit intval() einen Zahlenwert erzwingen.
Allerdings würde ich printf() mit Platzhaltern statt echo mit String-Raus-Rein verwenden.
printf('<a href="#" style="font-size: %spx" title="%s things tagged with %3$s">%3$s</a> ', $size, $value, htmlspecialchars($key));
Und bei diesen beiden Zeilen ist jeweils das array_values() überflüssig.
// largest and smallest array values
$max_qty = max(array_values($tags));
$min_qty = min(array_values($tags));
max() und min() interessieren sich nur für die Werte im Array. Die Schlüssel werden nicht beachtet, egal ob sie nun numerisch oder String sind.
Lo!
Hello,
Hallo, ich habe eine PHP funktion gefunden,
Wie ich Include ist kein Problem, der unten genannte Code steht in dieser IncludeSeite.
Wenn Du Funktionen benutzen willst, müssen die dem aufrufenden Script zur Verfügung stehen. Das kannst Du erreichen, indem Du sie ins Script kopierst, oder mit einer externen Sammlung von Funktionen komplett einbindest ins Script (Include, include_once, require, require_once).
Im Script musst Du die Funktion dann noch aufrufen und ihr beim Aufruf die passenden Argumente übergeben.
Funktionen, die direkt auf die Standardausgabe schreiben (echo) sind i.d.R. Kinderkram. Besser ist es, den gewünschten HTML-String als Rückgabewert der Funktion zu erzeugen.
Liebe Grüße aus dem schönen Oberharz
Tom vom Berg
Hi Tom
Wenn Du Funktionen benutzen willst, müssen die dem aufrufenden Script zur Verfügung stehen. Das kannst Du erreichen, indem Du sie ins Script kopierst, oder mit einer externen Sammlung von Funktionen komplett einbindest ins Script (Include, include_once, require, require_once).
»»
OK, bei mir gibt es eine include.php
Funktionen, die direkt auf die Standardausgabe schreiben (echo) sind i.d.R. Kinderkram. Besser ist es, den gewünschten HTML-String als Rückgabewert der Funktion zu erzeugen.
Hier sprechen wir aber sowas von nicht die gleiche Sprache, BAHHNHOF ;) Aber Google gibt mir dazu was raus. Werde ich mir gleich mal anschauen!
Danke und "Nie mehr dritte Liga, nie mehr nie mehr!!" (solltes Du BTSV Fan sein!)
Grüße
Sago