Ankündigung

Einklappen
Keine Ankündigung bisher.

function in einer function - help!

Einklappen

Neue Werbung 2019

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • function in einer function - help!

    Hallo!

    Gleich vorweg, bin absoluter Anfänger. Dennoch möchte ich mit meinem beschränktem PHP-Wissen ein Gästebuchscript zu modifizieren.
    Also, erstmal zum Verständnis: Das Script unterstüzt ICQ. Aber bei den Icons neben den Einträgen wird dieses hässliche standard ICQ Blümchen angezeigt. Dies möchte ich gerne durch eigene Grafiken ersetzen. Habe nun nach langem Suchen einen Codeschnipsel dafür gefunden. Ist eine Function, die über den ICQ-Server den Onlinestatus einer Nummer überprüft, und dann entweder eine "online" oder eine "offline"-grafik ausgibt. Alleine funzt diese function auch super. Schon getestet. Sie wird mit "echo GetICQ(1234567);" aufgerufen. Die Zahl steht für die ICQ-Nummer.

    So weit so gut. Die Originalzeile des Gästebuchscripts, wo das ICQ-gif ausgegeben wird lautet:
    PHP-Code:
    <?php

    echo "<a href=\"http://www.icq.com/".$eintraege[4]."\"><img src=\"http://web.icq.com/whitepages/online?icq=".$eintraege[4]."&img=5\" border=\"0\" alt=\"".$eintraege[4]."\"></a>";

    ?>
    Ich hab nun versucht beides zu kombinieren. Die Betonung liegt auf versucht

    PHP-Code:
    <?php

    echo "<a href=\"http://wwp.icq.com/scripts/Search.dll?to=".$eintraege[4]."\">".GetICQ($eintraege[4])."</a>";

    ?>
    Nunja,.... was soll ich noch sagen... das funzt so nicht wirklich. es wird an der Stelle einfach gar nix ausgegeben. Die function sollte aber einen kompletten <img>-Tag ausspucken. So wie ich das sehe, ist doch .$eintraege[4]. auch schon der Aufruf einer function. oder? Ich hab dann um schusseligkeitsfehler auszuschliessen einfach mal probiert die erste function in einer Variable zu puffern. Ergebnis:

    PHP-Code:
    <?php

    $mes 
    $eintraege[4];
    echo 
    "<a href=\"http://wwp.icq.com/scripts/Search.dll?to=".$eintraege[4]."\">".GetICQ($mes)."</a>";

    ?>
    dabei heraus kam zumindest schon mal mein eigenes ICQ-Blümchen
    Aber nicht ganz so, wie ich das wollte. Der ImageTag wird zwar ausgegeben, aber VOR dem <a href>!! Somit ist kein Link auf dem Bild. Kann mir jemand erklären, wo's klemmt? Hab schon alle möglichen Variationen des Aufrufs versucht. .GetICQ($mes). oder .$GetICQ($mes). oder $GetICQ($mes) usw.
    Ja, ich weiss, für sowas gibt es ein Handbuch. Ist bloß blöd, wenn man wie ich nicht weiss, wonach man denn da suchen muss.
    Ich hoffe also inständig, dass jemand so lieb ist, und mir bei der Vollendung meines Gästebuchs hilft. :wink: *liebguck*


  • #2
    ist doch .$eintraege[4]. auch schon der Aufruf einer function. oder?
    nein, $eintraege ist ein Feld, $eintraege[4] greift auf das Element mit dem Index 4 zu und die beiden Punkte verbinden das ganze als Zeichenkette mit dem davor und dem danach stehenden Zeugs.
    Wie sieht der Code zu GetICQ($uin) aus?

    Genausogut wie
    $mes = $eintraege[4];
    echo "<a href=\"http://wwp.icq.com/scripts/Search.dll?to=".$eintraege[4]."\">".GetICQ($mes)."</a>";
    funktioniert, sollte auch
    echo "<a href=\"http://wwp.icq.com/scripts/Search.dll?to=".$eintraege[4]."\">".GetICQ($eintraege[4])."</a>";
    klappen. Wenn nicht, hast Du sicherlich unterwegs noch etwas anderes geändert.
    Dieses nutzlose Zuweisen von irgendwelchen Werten ist zwar weitverbreitet, aber eben komplett nutzlos bis kontraproduktiv.

    Kommentar


    • #3
      Hallo.

      Ich vemute, dass die Funktion, die du gefunden hast bislang garnicht in diesem Kontext eingesetzt
      wird. Sieht so aus, als ob $eintraege[x] einfach die ICQ-Nummer enthält. Diese wird in der URI des
      einzubauenden Bildes einfach als Parameter eingesetzt und der ICQ-Server gibt das entsprechende
      Bild zurück. Dass hieße, dass du hier eine Funktion brauchst, die den Status bei ICQ abfragt und dann
      true oder false oder hier noch besser 'online' oder 'offline' zurückgibt. Die bindest du dann z.B. so ein:

      PHP-Code:
      echo '<a href="http://wwp.icq.com/...?to=' $eintraege[4] . '">';
      echo 
      '[img]img/icq_' MyICQStatusFunc($eintraege[4]) . '[/img]';
      echo 
      '</a>'
      Um die Funktion GetICQ() umzubiegen, druck sie doch mal hier ab (und bitte die überlangen Zeilen
      umbrechen!)

      Basti

      Kommentar


      • #4
        Uiii!! Danke für die schnellen Antworten!
        Also... fangen wir mal mit der ICQ Funktion an:

        PHP-Code:
        <?php

        function GetICQ($uin) {
            if (!
        is_numeric($uin)) return FALSE;

            
        $fp fsockopen('status.icq.com'80, &$errno, &$errstr8);
            if (!
        $fp) return FALSE;

            
        $request "HEAD /online.gif?icq=$uin HTTP/1.0\r\n"
                      
        ."Host: web.icq.com\r\n"
                      
        ."Connection: close\r\n\r\n";
            
        fputs($fp$request);

            do {
                
        $response fgets($fp1024);
            }
            while (!
        feof($fp) && !stristr($response'Location'));

            
        fclose($fp);

            if (
        strstr($response'online1')) echo "<img src=\"images/icq_on.gif\" border=\"0\">";
            if (
        strstr($response'online0')) echo "<img src=\"images/icq_off.gif\" border=\"0\">";
            if (
        strstr($response'online2')) echo "<img src=\"images/icq_error.gif\" border=\"0\">";
            
            return 
        FALSE;
        }

        ?>
        $eintraege[4] ist natürlich das, was dann die ICQ-Nummer ausgibt.
        Also die reine nummer, wie sie der user bzw. das script in die Flatfiledatenbank gespeichert hat.

        Ich paste jetzt auch mal eben den htmlcode, dens mir hinterher ausspuckt.

        PHP-Code:
        <?php

        [img]images/icq_error.gif[/img][url="http://wwp.icq.com/scripts/Search.dll?to=123456"][/url]

        ?>
        Wie ihr seht, wird das Bild noch vor dem Link ausgegeben. Das passiert auch, wenn ich das von euch vorgeschlagene .GetICQ($eintraege[4]). benutze. Folglich ist das Blümchen nicht klickbar. Das ist aber doof.

        Könnte es sein, dass die echo Ausgabe oben in der function das problem ist? Also das mitten in der Zeile nochma der <img> tag mit echo ausgegeben wird? Die Logik sagt mir ansonsten, dass eigentlich alles stimmen muss! Tuts aber nicht :wink:
        Greetz.... Nico

        Kommentar


        • #5
          Kommando zurück! Habs geschafft! *freu*
          Hab noch ein bisschen rumgespielt, und das echo in der function durch return ersetzt. Dann gehts auch!
          Aber trotzdem vielen lieben Dank für eure Hilfe!
          Vielleicht kann jemand anders den code ja auch noch gebrauchen.
          Greetz...

          Kommentar

          Lädt...
          X