Hyperlinks und PHP

Ich will per PHP einen Hyperlink in meine Website einbauen, der die Adresse aus der Variable betreff nimmt. Also habe ich geschrieben:

<a href=$betreff>LINK</a>

Aber es funktioniert nicht. Was habe ich falsch gemacht? Ich habe auch http://$betreff versucht, aber es geht nicht!
 
Alles was in PHP als HTML interpretiert werden soll muss mit echo ausgegeben werden.
Wen du dann was mit echo ausgeben willst das also HTML interpretiert werden soll un da 2 dabei sind einfach durch ' ersetzen,sinst bricht echo da ab.
Code:
echo ("<a href=$betreff>LINK</a>")

Xalon
 
ich weiß nicht ob es wichtig ist, aber es heißt doch

Code:
<a href="URL">name</a>

und nicht

Code:
<a href=URL>name</a>

mfg $oul
 
Original von $oul
ich weiß nicht ob es wichtig ist, aber es heißt doch

Code:
<a href="URL">name</a>

und nicht

Code:
<a href=URL>name</a>

mfg $oul

HTML 4.1 Transitional akzeptiert jedoch beides. Wie es danach aussieht (4.1 Strict oder XHTML) weiß ich jedoch nicht ;)

//nachtrag: Zentriert geht so:
Code:
<center>Das ist ein zentrierter Text</center>
:D
Aber HTML 4.1 Strict müsstest du es mit CSS machen. Ich glaub, das geht mit text-align.
Code:
<span style="text-align:center">Zentrierter Text</span>
;)

Keine Gewähr.
 
Moment, ich hätte da noch 2 worte zu sagen:
PHP ist nicht "eine andere Sprache" als HTML.
Es ist, wie der Name schon sagt, ein Hypertext Preprocessor.
Soll heissen dass der PHP Code vom Server geparst, von mir aus durchgerechnet wird, und dann reines html an den browser geschickt wird.

Du kannst alle html tags in PHP benutzen.

Nur musst du dem Server Sagen dass er diesen Code ausgeben soll, und nicht rechnen damit.

Das geht unter Anderem mit dem echo''; befehl.

Hoffentlich war das verständlich und hilft dir.
 
@ erste Frage:
Schneller (von der Ausführungsgeschwindigkeit) ist es jedoch so:
echo '<a href="'.$betreff.'">Klick mich.</a>';

Lieber gleich richtig lernen. Erspart späteres Umgewöhnen. ;)
 
Original von Sunstepper
@ erste Frage:
Schneller (von der Ausführungsgeschwindigkeit) ist es jedoch so:
echo '<a href="'.$betreff.'">Klick mich.</a>';

Lieber gleich richtig lernen. Erspart späteres Umgewöhnen. ;)

Wobei das auch gehen würde, ohne das man mit Verknüpfungspunkten arbeitet und was weiss ich wievielen einfachen und doppelten Anführungsstrichen, da php alles was in doppelten Anführungszeichen steht nach Variablen durchsucht. Ob's schneller ist weiss ich nicht.

Code:
echo "<a href='$betreff'>Klick mich.</a>";
 
Nein, das ist eben so langsamer.
Eben! Was meinst du denn, wie PHP die Variablen in dem String findet? Muss sie natürlich erst suchen, dann den String verändern usw... das ist ein enormer Mehraufwand.

Hätte mich aber nicht irgendwann jemand darauf hingewiesen, hätte ich meine ganze HP mit den " geproggt, d.h. PHP hätte die Strings nach Variablen durchsucht, obwohl keine drin sind (ich mache so etwas wie "$variable" prinzipiell NIE!!! :P )


MfG, BattleMaker
 
Hallo,
also ich mal nen kleinen Benchmark geschrieben:
PHP:
<?php
define("RUNS",40000);

$test = "TEST";
$variable = "VARIABLE";

ob_start();
$start = (double)microtime()+time();
for($i=0;$i<RUNS;$i++)
	{
	echo "Dies ist ein $test mit einer $variable.";
	}
$ende = (double)microtime()+time();
ob_end_clean();
echo "#1: ".($ende-$start)."<br>";

ob_start();
$start = (double)microtime()+time();
for($i=0;$i<RUNS;$i++)
	{
	echo "Dies ist ein ".$test." mit einer ".$variable.".";
	}
$ende = (double)microtime()+time();
ob_end_clean();
echo "#2: ".($ende-$start)."<br>";

ob_start();
$start = (double)microtime()+time();
for($i=0;$i<RUNS;$i++)
	{
	echo 'Dies ist ein '.$test.' mit einer '.$variable.'.';
	}
$ende = (double)microtime()+time();
ob_end_clean();
echo "#3: ".($ende-$start)."<br>";

ob_start();
$start = (double)microtime()+time();
for($i=0;$i<RUNS;$i++)
	{
	echo "Dies ist ein ";
	echo $test;
	echo " mit einer ";
	echo $variable;
	echo ".";
	}
$ende = (double)microtime()+time();
ob_end_clean();
echo "#4: ".($ende-$start)."<br>";

ob_start();
$start = (double)microtime()+time();
for($i=0;$i<RUNS;$i++)
	{
	echo 'Dies ist ein ';
	echo $test;
	echo ' mit einer ';
	echo $variable;
	echo '.';
	}
$ende = (double)microtime()+time();
ob_end_clean();
echo "#5: ".($ende-$start)."<br>";

?>

Getestet unter WinXP.

PHP4.3.11:
#1: 0.7748589515686 // echo "Hallo $var";
#2: 0.67267489433289 // echo "Hallo ".$var;
#3: 0.67934679985046 // echo 'Hallo'.$var;
#4: 0.65346503257751 //echo "Hallo"; echo $var;
#5: 0.64433789253235 //echo 'Hallo'; echo $var;

PHP 5.0.3:
#1: 0.67918086051941 // echo "Hallo $var";
#2: 0.68585395812988 // echo "Hallo ".$var;
#3: 0.67744398117065 // echo 'Hallo'.$var;
#4: 0.67258596420288 //echo "Hallo"; echo $var;
#5: 0.66632485389709 //echo 'Hallo'; echo $var;


Bei PHP4 gibt es einen kleinen Unterschied, aber bei PHP5 ist der Unterschied kaum messbar, und von Test zu Test zwanken die Ergebnisse.

Desweiteren wurde 40000 Ausgaben simuliert.

Es gibt deutlich effektiver Methoden seinen Script zu optimieren (vorallem SQL mäßig), da ist es relativ egal, wie man die Variablen ausgibt.
 
Bei mir W2K

PHP 5.weis nicht mehr ;)

#1: 0.670268058777
#2: 0.527228116989
#3: 0.61372089386
#4: 0.598748922348


Bei mir sind die unterschiede schon etwas größer. Wo bei der Unterschied bei dieser Beträchtlichen Anzahl an ausgaben, im einzelnen, wohl doch nur sehr klein ist.
 
Danke für den Benchmark.
Hab den Code mal laufen lassen. Linux 2.4, Apache 1.3, PHP 4.4, Produktivumgebung.

#1: 0.1071400642395
#2: 0.065639019012451
#3: 0.064709186553955
#4: 0.05033802986145
#5: 0.050179004669189

Gut, die Unterschiede zwischen #1 und #2/#3 sind nicht weltbewegend, aber immerhin da. #4/#5 sind doppelt so schnell; war mir nicht bewusst. Zwischen " und ' gibt es, wenn keine Variable involviert ist, keine Unterschiede.

Stimme Dir aber zu; SQL-Optimierung bringt weit mehr, aber man will halt immer ordentlich was rausholen. ;)
 
Also ich finde, dass auch geringe Unterschiede auf stark belasteten Servern sehr viel ausmachen koennen. Wenn pro Sekunde tausende Male ein Skript aufgerufen wird, bemerkt man schon die eine oder andere Veraenderung, oder etwa nicht...


Mann die scheiss tastatur hier in der Schule kann keine Sonderzeichen mehr gescheit darstellen. Obwohl das deutsche Schema eingestellt ist... MIST


MfG, BattleMaker
 
Hallo,
@BattleMaker: Aber solch eine Optimierung ist in den meisten Fällen schwachsinnig, und auch der falsche Ansatz, um seinen Script zu optimieren.
Man kann es gut mit dem Sicherheitsbewusstsein der Otto-Normal-User vergleichen.
Was bringt mir eine Firewall, die darauf optimiert wurde, gefährliche Packete zu entdecken, wenn der User einfach immer auf 'Ja' klickt?
Dort wurde dann der Schwerpunkt falsch gesetzt.
Oder was bringt mir der sicherste Kryptographische Algorithmus, denn ich z.B. gegen Timing-Attacken optimiert habe, aber der User weiterhin schlechte Passwörter wählen kann und wird?

Oder was bringt mit eim TEMPEST*-Isoliertes Gebäude, wenn meine Dateifreigabe weiterhin per Internet erreichbar ist.

Und zur SQL-Optimierung:
Wenn man bei einer Tabelle mit 90 000 Einträgen anstatt mysql_num_rows(); lieber den SQL-Befehl COUNT(*) benutzt, um die Anzahl _aller_ Zeilen zu ermitteln, dann ist diese um den Faktor ~2000 schneller.
Ganz abgesehen von dem 90 000 fach kleineren Speicherbedarf.
COUNT(*) benötigt ca. 4 Byte, mysql_num_rows(); Wertet dann aber ca. 90 000 * 4 Byte aus (bei Primary-Key = 4 Byte).



* Computer/Monitore produzieren elektrische Felder, Tempest-isoliert bedeutet, dass diese Strahlen absorbiert sind. Sonst kann man per Empfangsgerät auf mehrere hundert Meter das Monitorbild "empfangen".
 
@ Elderan:
Kennst du empfehlenswerte Sites zum Thema SQL-Optimierung? Ich kenn mich schon bisschen aus und Google bedienen / Manual lesen kann ich auch, aber falls du ein paar gute Sites auf Lager hast, immer her damit. :)
Danke.
 
Hallo,
leider kenn ich keine gute Übersicht dafür.

Aber hier wird es sehr detailliert beschrieben, aber leider nicht speziell dafür gedacht:
http://dev.mysql.com/doc/refman/4.0/de/mysql-optimisation.html


Sonst sollte ein gutes (My)-SQL helfen, denn man sollte bedenken: Für PHP ist MySQL eine Blackbox.
Also je genauer man MySQL sagt was man möchte, umso schneller wird der Script.

Denn bei mysql_num_rows(); gibt MySQL alle 90 000 Datensätze zurück, und PHP zählt dann nach, wieviele es sind.
Allerdings könnte man sie weiter noch ausgeben, die Datensätze.

Bei COUNT(); wird aber nur die Anzahl der Datensätze zurückgegeben, welche die Datenbank aus dem 'Inhaltsverzeichnis' entnimmt.

Auch sollte man viel mit JOIN etc. Arbeiten.

P.S. Webserver Stress Tool ist perfekt, um größere Scripts bei großer Belastung, z.B. 100 000 Klicks/Stunde, zu testen.
 
Zurück
Oben