login  Naam:   Wachtwoord: 
Registreer je!
 Forum

Str_replace met SQL in een function (Opgelost)

Offline markla - 13/06/2010 20:11
Avatar van marklaPHP interesse Door middel van een str_replace probeer ik namen van spelers die in een tekst voorkomen om te zetten naar een link.

Ik roep de function aan via:
  1. $artikel = nametolink($record['newsitemcontent']);

en daarna doe ik een :
  1. echo $artikel


De tekst uit $artikel wordt getoond maar de str_replace wordt niet uitgevoerd.

Wat doe ik fout

  1. function nametolink ($article_text)
  2. {
  3. //get all names
  4. $Q_name2link=
  5. "SELECT
  6. a.Player_Achternaam as player_achternaam,
  7. a.Player_Voornaam as player_voornaam,
  8. a.Player_Tussenvoegsel as player_tussenvoegsel,
  9. a.Player_ID as playerid
  10. FROM
  11. af_players a
  12. Order BY a.Player_Achternaam
  13. ";
  14.  
  15. $name2link= mysql_query($Q_name2link) or die ( mysql_error( ) );
  16.  
  17. while($record = mysql_fetch_array($name2link))
  18. {
  19. $Player_Name = $record["player_achternaam"].", ".$record["player_voornaam"]." ".$record["player_tussenvoegsel"];
  20. $find = $record["player_achternaam"];
  21. $replace= '<a href="http://www.website.nl/'.$record["playerid"].'/'.strtolower(clean_url($Player_Name)).'.htm" target="_blank" >'.$record["player_achternaam"].'</a>';
  22. $newtext = str_replace($find, $replace, $article_text);
  23. return $newtext;
  24. }
  25. }

2 antwoorden

Gesponsorde links
Offline ProjectWebdesign - 13/06/2010 21:20 (laatste wijziging 13/06/2010 21:22)
Avatar van ProjectWebdesign Lid Probeer dit maar eens:

  1. function nametolink ($article_text)
  2. {
  3. //get all names
  4. $Q_name2link=
  5. "SELECT
  6. a.Player_Achternaam as player_achternaam,
  7. a.Player_Voornaam as player_voornaam,
  8. a.Player_Tussenvoegsel as player_tussenvoegsel,
  9. a.Player_ID as playerid
  10. FROM
  11. af_players a
  12. Order BY a.Player_Achternaam
  13. ";
  14.  
  15. $name2link= mysql_query($Q_name2link) or die ( mysql_error( ) );
  16.  
  17. while($record = mysql_fetch_array($name2link))
  18. {
  19. $Player_Name = $record["player_achternaam"].", ".$record["player_voornaam"]." ".$record["player_tussenvoegsel"];
  20. $find = $record["player_achternaam"];
  21. $replace= '<a href="http://www.website.nl/'.$record["playerid"].'/'.strtolower(clean_url($Player_Name)).'.htm" target="_blank" >'.$record["player_achternaam"].'</a>';
  22. $article_text = str_replace($find, $replace, $article_text);
  23. }
  24. return $article_text;
  25. }


De fout was dat je return in de while staat, dus de while doet het maar 1 keer. En een return in een while is geen return van de functie. Dus de functie deed ook niks.
Verder zou je de nieuwe tekst continu overschrijven in de while en zou je maar 1 naam erin krijgen.
Bedankt door: markla
Offline markla - 13/06/2010 21:35 (laatste wijziging 14/06/2010 21:45)
Avatar van markla PHP interesse Dat is hem  

vinTage schreef:
Dan zet je niet de oplossing bij deze post, maar bij die de oplossing heeft aangedragen...
Ik heb het aangepast dus
Gesponsorde links
Dit onderwerp is gesloten.
Actieve forumberichten
© 2002-2024 Sitemasters.be - Regels - Laadtijd: 0.196s