Problem mit automatischem Austausch in Text

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

  • Problem mit automatischem Austausch in Text

    Ich habe folgendes Problem.

    Ich habe zwei Tabellen. In der einen befindet sich der Text und in der anderen verschiedene Personen. Nun möchte ich das bei der Ausgabe verglichen wird ob in dem Text eine Person vorkommt die sich auch in der Tabelle mit den Personen befindet. Wenn dem so ist soll der Name im Text durch einen Link ausgetauscht werden.

    Nun habe ich folgendes Problem. Soweit klappt das auch, nur wird leider nur die erste gefundene Person in der Tabelle[Person] im Text ausgetauscht auch wenn im Text selber mehrere Personen sind, die eigentlich auch in der Tabelle [Person] ist.

    Hier der Quellcode:

    PHP-Code:
    <?php

    $dbcnx 
    mysql_connect("$host""$user""$passwort");
    mysql_select_db("$datenbank");

    $result = @mysql_query("SELECT * FROM hefte  WHERE (link='$link')");

    $result2 = @mysql_query("SELECT * FROM lexikon");

    if (!
    $result) {
    echo(
    "Fehler beim Abruf der Daten aus der Datenbank!");
    exit();
    }
    while (
    $row mysql_fetch_array($result) AND $row2 mysql_fetch_array($result2)) {

    $vari "$row[inhalt]";
    $array_1 = array("$row2[name]");
    $array_2 = array("<a href='$row2[link].html'>$row2[name]</a>");


    for(
    $x=0;$x<200;$x++){

      
    $vari str_replace($array_1[$x],$array_2[$x],$vari);
    }

    echo 
    str_replace(" "," ",$vari); 

    }
    ?>
    Wie bekomme ich es hin, das alle Namen im Text ausgetauscht werden, und nicht nur der erste gefundene?

  • #2
    versuch mal sowas:

    PHP-Code:
    mysql_connect($host$user$passwort);
    mysql_select_db($datenbank);

    $sQuery1"SELECT * FROM hefte  WHERE link='"$link ."'";
    $sQuery2 "SELECT * FROM lexikon";

    $hRes1 mysql_query($sQuery1) or die(mysql_error());
    $hRes2 mysql_query($sQuery2) or die(mysql_error());

    while(
    $aRow1 mysql_fetch_assoc($hRes1))
        
    $aHefte $aRow1['inhalt'];
    while(
    $aRow2 mysql_fetch_assoc($hRes2))
        
    $aName$aRow2['name'];

    foreach(
    $aHefte as $sHeft)
    {
        foreach(
    $aName as $sName)
        {
             
    $sHeft str_replace($sName"<a href=\"_link_\"".$sName."</a>"$sHeft);
        }
    }

    print_r($aHefte); 
    require_once('gehirn_v_02beta.php');

    Kommentar


    • #3
      Ersteinmal Danke für deine Hilfe, aber ich erhalte nun folgende Fehlermeldung:

      Warning: Invalid argument supplied for foreach() in c:\apache\htdocs\detail.php on line 19

      Kommentar


      • #4
        ändere die while-scleifen mal
        PHP-Code:
        while($aRow1 mysql_fetch_assoc($hRes1))
            
        $aHefte[] = $aRow1['inhalt'];
        while(
        $aRow2 mysql_fetch_assoc($hRes2))
            
        $aName[] = $aRow2['name']; 
        Ich denke, also bin ich. - Einige sind trotzdem...

        Kommentar


        • #5
          Danke, aber das funktioniert auch nicht. Ich habe aber mittlerweile das Problem gelöst. Es lag bei meinem ursprünglichen Script an der while Schleife.

          Hier der Code, der jetzt funktioniert.

          PHP-Code:
          <?php

          mysql_connect
          ($host$user$passwort);
          mysql_select_db($datenbank);

          $result mysql_query("SELECT * FROM hefte WHERE link='$link'");
          $result2 mysql_query("SELECT * FROM lexikon");

          if (!
          $result) {
          echo(
          "Fehler beim Abruf der Daten aus der Datenbank!");
          exit();
          }
          while (
          $row mysql_fetch_array($result)){
          $vari $row['inhalt'];
          $i=0;

          while(
          $row2 mysql_fetch_array($result2)) {
          $array_1[$i] = $row2['name'];
          $array_2[$i] = '<a href="'.$row2['link'].'.html">'.$row2['name'].'</a>';
          $i++;
          }
          for(
          $x=0;$x<count($array_1);$x++){
          $vari str_replace($array_1[$x],$array_2[$x],$vari);
          }
          echo 
          $vari;
          }
          ?>
          Trotzdem vielen Dank für eure Hilfe.

          Kommentar

          Lädt...
          X