• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

Problem mit PHP Funktion

Status
Für weitere Antworten geschlossen.

Hanashi

Neues Mitglied
Hallo Leute,
ich habe ein BB-Code geschrieben mit dem Ein Benutzername angezeigt wird, wenn man auf den Benutzernamen klickt soll man auf seine Seite kommen. Dafür brauche ich dir ID, die ich mit einer Funktion auslese. Es gibt keine Fehlermeldung allerdings geht der Link nicht.
PHP:
$entry = "[user]D@rKrieger91[/user]";

function userlink($userline)
{
$sql = "SELECT * FROM user WHERE user='$userline'";
$query = mysql_query($sql);
while ($row = mysql_fetch_assoc($query)) {
$userlint = $row[id];
return $userlint;
}
}
$entry = preg_replace('|\[user\](.*?)\[/user\]|', '<a href="./?s=1&z='.userlink('$1').'" target="_blank">$1</a>', $entry);

echo $entry;

Eigentlich sollte der Link jetzt ?s=1&z=1 anzeigen aber es wird nur ?s=1&z= angezeigt.

Bitte helft mir!

Gruß Peter

EDIT: Hier die Vorschau: http://studychat.de/test.php
 
Zuletzt bearbeitet:
Werbung:
PHP:
//userlink('$1') != userlink($1)
//Deswegen =>
$entry = preg_replace('|\[user\](.*?)\[/user\]|', '<a href="./?s=1&z='.userlink($1).'" target="_blank">$1</a>', $entry);
Wenn du die Variabele in '$1' schreibst, wird das nicht als Variable sondern als Sting verwedet. Und einen User der $1 heißt wird es bestimmt nicht geben ;-)

Viele Grüße,
Marlin
 
Danke, allerdings zeigt er mir jetzt folgende Fehlermeldung an:
Code:
Parse error: syntax error, unexpected T_LNUMBER, expecting T_VARIABLE or '$' in /users/meineseite/www/test.php on line 18

Gruß Peter

EDIT: Auserdem kann es ja jetzt nicht richtig sein, da eine Variable, ja nicht mit Zahlen beginnen darf. Wie kann ich $1 lang schreiben?
 
Zuletzt bearbeitet:
Werbung:
ich glaube du musst die 1 escapen, etwa so

PHP:
'<a href="./?s=1&z='.userlink('\1').'" target="_blank">\1</a>'

@marlin-b
es geht nicht um den user $1 sondern um das was zwischen [user] und [/user] steht
 
Leider zeigt er mir den Link immer noch nicht so an wie es eigentlich sein sollte. Gibt es eigentlich einen anderen Weg die ID des Benutzers aus der Datenbank auszulesen
Gruß Peter
 
bei mir funktioniert es so und auch mit deiner variante klappt es. an deiner funktion muss etwas nicht stimmen. die funktion gibt wahrscheinlich keinen wert zurück. überprüfe das mal und füge in der funktion nach der while schleife

PHP:
while ($row = mysql_fetch_assoc($query)) {
$userlint = $row[id];
return $userlint;
}

noch ein return '0';

hinzu. dann gibt er dir auch einen wert zurück, wenn keine user in der DB gefunden wurden
 
Werbung:
dann muss ich mal den fehler suchen, denn er gibt den Wert immer noch nicht zurück, jetzt gibt er aber wenigstens 0 zurück, wahrscheinlich kommt die Variable $1 nicht wirklich an.
Gruß Peter

Edit: zumindest habe ich rausbekommen, dass die Daten in der Funktion ankommen, wenn ich return $userline angebe kommt wenigstens der Benutzername, allerdingsfunktioniert das mit dem auslesen der Datenbank noch nicht.
 
Zuletzt bearbeitet:
Vielen Dank.
Ich hab eine Lösung gefunden:
PHP:
$entry = "[user]D@rKrieger91[/user]";

function userlink($entry)
{
  $regex = '#\[user\](.*)\[/user\]#';

  if (is_array($entry)) {
    //$entry = '<div style="margin-left: 10px">'.$entry[1].'</div>';
    $sql = "SELECT * FROM user WHERE user='$entry[1]'";
    $query = mysql_query($sql);
    $row = mysql_fetch_assoc($query);
    $entry = '<a href="./?s=1&z='.$row[id].'" target="_blank">'.$entry[1].'</a>';
  }

  return preg_replace_callback($regex, 'userlink', $entry);
}

$entry = userlink($entry);

echo $entry;

Gruß Peter
 
Werbung:
Status
Für weitere Antworten geschlossen.
Zurück
Oben