29. maj 2011 - 13:39Der er
17 kommentarer og 1 løsning
str_replace med variabler fra MySQL
Hej
Jeg forsøger at lave en str_replace, hvor variablerne skal findes i en MySQL db. Ganske kort er formålet, at der søges efter nøgle ord, hvorefter disse nøgleord erstattes af samme nøgleord, hvor der er indlagt link til en side.
Og det driller desværre lidt, når variablerne kaldes i databasen - kan fint få det til at virke, hvis jeg lægger det direkte i en fil, men det er bøvlet i længden. Her er, hvad jeg har forsøgt mig med:
<?php $sqlCommand = "SELECT * FROM table_link"; $query = mysqli_query($myConnection, $sqlCommand) or die (mysqli_error()); while ($row = mysqli_fetch_array($query)) { $needle = $row["search_keyword"]; $link = $row["link"]; $haystack = $row["text"]; }
splazz, så må jeg igang med at teste, for jeg er indtil nu overbevist om at mit forslag vil resultere i en delete knop for alle records. permo123456, jeg kommer tilbage.
Tak for hjælp indtil videre. Er rigtigt, at jeg har flere linier, der skal hentes fra tabellen, så skal have en løsning, der kan håndtere det. Har prøvet med #2, men får kun output:
array
Hvad gør jeg galt eller mangler?
Skal måske lige sige, at den ene variabel trækker jeg fra et andet sted, men der er vel ikke noget galt i, at mit dataudtræk er som her, som så bruges i dit eksempel?!?!
Teksten, der skal søges i $haystack er den samme for hver side, mens der er forskellige nøgleord, der skal erstattes i den tekst.
Ganske kort fortalt, så er det brødteksten på en given side, som skal gennemsøges for nøgleord, og hvor de nøgleord skal erstattes med samme ord, men med indbygget link.
Har også prøvet Christians forslag. Her vises brødteksten korrekt, men der sker ikke erstatning som ønsket.
Har også prøvet at trække data fra begge tabeller, men desværre også uden positivt resultat =>
$sqlCommand = "SELECT * FROM table_link,table_text";
Prøver at rode lidt med det, men hvis I har gode forslag, hører jeg meget gerne disse! :-)
Vil være super glad, hvis du gider det og kan finde tid på et senere tidspunkt. Skal nok melde ud, hvis det lykkes mig at få løst mit problem i mellemtiden.
Kan lige kort fortælle, at jeg har prøvet lidt frem og tilbage med dit løsningsforslag, men som splazz er inde på, er det kun den sidste række, der bliver omdannet, hvilket er lykkedes mig med denne version af dit script.
$sqlCommand = "SELECT * FROM table_link,table_text WHERE text='$text'"; $query = mysqli_query($myConnection, $sqlCommand) or die (mysqli_error()); while ($row = mysqli_fetch_array($query)) { $needle = $row["search_keyword"]; $link = $row["link"]; $haystack = $row["text"];
Undskyld, men der kommer jeg desværre også lidt til kort, men måske kan jeg forklare det lidt bedre.
Jeg har 2 tabeller i brug i dette script. En, der indeholder den information, der vises på siden, herunder også den brødtekst, jeg skal søge i. Derudover har jeg en anden tabel, hvor jeg udover ID blot har to kolonner: nøgleord og url's. Det er denne tabel, hvor jeg vil have, at rækkerne løbes igennem for at udsøge de nøgleord, der findes i brødteksten, og som så skal erstattes med samme nøgleord med embedded url.
Som du kan se, er der en brødtekst, hvor tekststrengen Gabi Beach er med link, hvilket er resultat af lidt tilretning af Christians script (har jeg indsat i #9), hvor den løber tabellen med nøgleord igennem, men så desværre kun bruger nøgleordet fra sidste linie i tabellen. Dvs. alle øvrige linier i tabellen bliver ikke brugt, således som de skal.
Hvis det hjælper, så kan jeg måske få noget ud på et txt fil (tabellen, jeg ikke lige kan trække ud), som jeg kan maile til dig. Min mail er per.moller999 at yahoo dot com
så skal du først hente teksten ud i én query og derefter hive nøgleord og urls fra den anden tabel, som så løbes igennem og hver gang replacer du i den tekst du hentede i første query...
faktisk som i #1 - du skal bare ikke skrive haystack = $row['text'], men det som variablen du hedder i din første query
Giver desværre samme resultat, hvilket vil sige, at tabellen løbes igennem, men at det kun er nederste linie i tabllen, der omdanner nøgleord som jeg gerne vil have det.
Jeg lader den stå åben ugen ud. Hvis I kommer på nogle gode idéer i mellemtiden, så hører jeg dem naturligvis gerne. Og tak for den hjælp I har givet frem til nu.
hehe, det er svært så glad man kan bliver over småting, nogle gange :)
jeg takker for points :)
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.