Ausgelesene php kommt an den stringanfang wieso?

  • Hey Leute,
    Ich habe diesmal versucht auf diversen seiten zu suchen und die Lösung zu finden aber erfolglos. Das Problem ist eigentlich sehr simpel, ich habe so einige varianten schon versucht aba es klappt nicht, also das Problem:

    Der Code wird ausgelesen es Wird ein string einer Variable zugeteilt wobei am ende der <?php the_title();?> eingefügt werden soll.


    PHP
    <?php 
    $titel='Kaliteli-Dizi &raquo; Blog Archive  &raquo; '.the_title();
    print $titel;?>

    Habe bei der PHP auch schon versucht gegebenfalls nach dem .the:title(); ein weiteres komma einzutragen aufgrund des zeilenumbruchs, kein unterschied, wobei dies glaub ich sowieso eher die falsche Lösung wäre.

    Ausgabe:

    Code
    Kurtlar.Vadisi.Pusu.BL.57Kaliteli-Dizi » Blog Archive  »

    Gewolltes Ziel

    Code
    Kaliteli-Dizi » Blog Archive  » Kurtlar.Vadisi.Pusu.BL.57

    Wieso verschiebt sich der Php befehl der die Überschrift des Posts bei wordpress ausgibt nach vorne?
    Vielen Dank warte auf eure tipps


    Der eigentliche Grund für diese Versuchte Konstruktion ist eigentlich.

    PHP
    <?php $useronlines = $wpdb->get_results("SELECT userid, username, url, type, referral, location FROM $wpdb->useronline WHERE type='member' && location=");
    
    
    foreach ($useronlines as $useronline) {
        echo 'Der angemeldete User:<a href="?author='.$useronline->userid.'">'.$useronline->username.'</a> befindet sich derzeit: '.urldecode($useronline->referral);
     echo'Location:'.$useronline->location;
    
    
    }
    ?>

    Wie ihr sieht habe ich hier eine weitere bedingung wo die location verglichen werden soll. Aber wenn ich den Code dementsprechend einfüge funktioniert das nicht wieso? TEST:

    PHP
    <?php $useronlines = $wpdb->get_results("SELECT userid, username, url, type, referral, location FROM $wpdb->useronline WHERE type='member' && location='Kaliteli-Dizi » Blog Archive  » '. the_title()");
    
    
    foreach ($useronlines as $useronline) {
        echo 'Der angemeldete User:<a href="?author='.$useronline->userid.'">'.$useronline->username.'</a> befindet sich derzeit: '.urldecode($useronline->referral);
     echo'Location:'.$useronline->location;
    
    
    }
    ?>

    Liegt es vielleicht daran das der folgende php code the_title(); eine bereits vorhandene Grundfunkton von Wordpress ist?

    CMS ist Wordpress :D
    Was meint ihr wie kann ich dieses problem angehen!

    4 Mal editiert, zuletzt von musti1989 (26. Mai 2009 um 01:07)

  • Doofe Frage, hast du versucht, es andersrum zu machen? (nein, ich weiß auch nicht, warum das funktionieren sollte).
    Meine nächstliegende Vermutung wäre, dass the_title() nicht einfach eine Zeichenkette zurückgibt, sondern noch irgendwas anderes macht. Zum Beispiel denke ich, dass sie den Titel direkt ausgibt und keinen String liefert.

    Zitat

    Kurtlar.Vadisi.Pusu.BL.57Kaliteli-Dizi » Blog Archive »


    Der rot markierte Teil ist der, der direkt beim Aufruf der Funktion the_title() ausgegeben wird. Wie gesagt, alles nur eine Vermutung.

    Information will frei verfügbar sein.

    Don't eat unpeeled hedgehogs.

  • Doofe Frage, hast du versucht, es andersrum zu machen? (nein, ich weiß auch nicht, warum das funktionieren sollte).
    Meine nächstliegende Vermutung wäre, dass the_title() nicht einfach eine Zeichenkette zurückgibt, sondern noch irgendwas anderes macht. Zum Beispiel denke ich, dass sie den Titel direkt ausgibt und keinen String liefert.

    Der rot markierte Teil ist der, der direkt beim Aufruf der Funktion the_title() ausgegeben wird. Wie gesagt, alles nur eine Vermutung.

    Klar hab ich das versucht :D
    Das ist auch meine Vermutung...
    Achja bevor ich es vergesse vermute wenn ich dann hald die Datenbankabfrage durchführe zeigt er den the_title() nicht. Deshalb stimmt die Bedingung nicht und die User werden nicht aufgelistet, weil wenn ich die Bedingung so stelle

    PHP
    <?php $useronlines = $wpdb->get_results("SELECT userid, username, url, type, referral, location FROM $wpdb->useronline WHERE type='member' && location='Kaliteli-Dizi » Blog Archive  » Kurtlar.Vadisi.Pusu.BL.57'");foreach ($useronlines as $useronline) {    echo 'Der angemeldete User:<a href="?author='.$useronline->userid.'">'.$useronline->username.'</a> befindet sich derzeit: '.urldecode($useronline->referral); echo'Location:'.$useronline->location;}?>

    Dann zeigt er mir nur für den Folgenden Post mit dem Titel die user.

    Einmal editiert, zuletzt von musti1989 (26. Mai 2009 um 01:06)

  • Habe Auch schon versucht eine weitere Leerzeile nach der . $out einzufügen. Weil vlt die ausgabe eine weitere Leerzeile beinhaltet. Die Print funktion ist ausschlie´ßlich für den Test ob der Wert angezeigt wird und es Funktioniert einwandfrei, aber irgentwie ist die bedingung trotzdessen nicht erfüllt weil er mit keinen einzigen user aufzählt. Hmm mist:confused:

  • Genau! Also wird es ausgegeben.
    Deshalb einfach so:

    PHP
    <?
    echo 'Kaliteli-Dizi &raquo; Blog Archive  &raquo; ';
    the_title();
    ?>


    Dann funktioniert das schonmal. ;)

    Und für den String:

    PHP
    ob_start();
    the_title();
    $title = 'Kaliteli-Dizi &raquo; Blog Archive  &raquo; ' . ob_get_clean();

    Aber sag mal:
    Was soll das location in der Tabelle, wofür wird das gebraucht? Was soll das Script genau machen?
    Ich würde eher URLs vergleichen als Titel.
    Achte natürlich darauf, dass der Titel escaped wird! (Injection, mysql_real_escape_string)

    Viele liebe Grüße
    The User

  • Der sinn dieser Abfrage ist das Die Members aus der WP_useronline Datenbank erscheinen die gerade auf dem jeweiligen post sich befinden. Dazu hatte ich 2 mäglichkeiten. Entweder den Referral mit der funktion <?php the_permalink(); ?> Zu vergleich. Wobei hier das Problem auftritt das der permalink ebenfall von wordpress gegebene function ist und sich einfach nicht so einfach mit urlencode encoden lässt damit die Referral und der Permalink verglichen werden kann. Die 2. möglichkeit war es die Location einfach zu vergleichen. Da gibt es das problem mit den urlencode nicht. Deshalb habe ich diese Variante bevorzugt:D

    PHP
    <?php 
    ob_start();
    the_title();
    $titeln='Kaliteli-Dizi &raquo; Blog Archive  &raquo; ' . ob_get_clean();
    print $titeln; ?>

    So nur zum Test mal ob die Ausgabe richtig ist. Allen funktioniert einwandfrei. Ausgabe:

    Code
    Kaliteli-Dizi » Blog Archive  » Kurtlar.Vadisi.Pusu.BL.57

    Alles einwandfrei und wenn ich es wieder in die bedingung setze dann zeigt er mir garnix:) ist ja ne tolle sache:confused:

    Kann es vlt daran liegen das er nur den string also das was in den '' also 'Kaliteli-Dizi &raquo; Blog Archive &raquo; ' abarbeitet und deshalb die bedingung nicht erfüllt wird. Würde es einen unterschied ergeben wenn ich dort dann eine variable verwenden würde? Dann würde ich die Zusammengebaute location einfach in einem string abspeichern und wieder ausgeben lassen ? Ich glaube auf die weise wie wir das bis jetzt versucht haben wird es nämlich nicht funzen...

    Einmal editiert, zuletzt von musti1989 (26. Mai 2009 um 23:48)

  • <?php
    ob_start();
    the_title();

    $useronlines = $wpdb->get_results("SELECT userid, username, url, type, referral, location FROM $wpdb->useronline WHERE type='member' && location='Kaliteli-Dizi &raquo; Blog Archive &raquo; " . ob_get_clean()."'");

    foreach ($useronlines as $useronline) {
    echo 'Der angemeldete User:<a href="?author='.$useronline->userid.'">'.$useronline->username.'</a> befindet sich derzeit: '.urldecode($useronline->referral);
    echo'Location:'.$useronline->location;

    }
    ?>


    Ganz wichtig, Syntax beachten. Ist jetzt natürlich trotzdem ungetestet.
    Bist du dir denn sicher, dass die Location in diesem Format vorliegt? Vll solltest du erstmal deine eigene Location ausgeben lassen und gucken, ob das so stimmt, würde mcih nämlich wundern.

    Information will frei verfügbar sein.

    Don't eat unpeeled hedgehogs.

  • @ Afrael da kam gar keine ausgabe habe ich mit Print getestet zumindest der ob teil wurde nicht ausgegeben.

    So ebend von der Arbeit zurück. Werde gleich mal das von Pion testen melde mich morgen wieder Vielen dank leute