1. Diese Seite verwendet Cookies. Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies. Weitere Informationen

Werte aus Datenbanktabelle in arrays

Dieses Thema im Forum "PHP" wurde erstellt von rernanded, 23. Dezember 2016.

  1. rernanded

    rernanded Erfahrenes Mitglied

    Hi,
    habe das Problem Werte aus der Tabelle "worte_bedeutungen" mit den Spalten "wort" und "bedeutung" in 2 arrays zu übertragen, damit ein Text so verändert wird, daß die Worte darin, wenn sie deckungsgleich mit Werten aus Spalte "wort" sind, durch die entsprechenden Werte aus der Spalte "bedeutung" ersetzt werden.
    MONI

    Dazu mein Script bisher:
    PHP:
    1. <form action="<?php $_SERVER["PHP_SELF"]; ?>" method="post">
    2. <textarea name="text" cols="100" rows="10"></textarea>
    3. <input type="submit" value="ersetzen">
    4. </form>
    5. <br />
    6. <?php
    7. $zeichenkette = $_POST['text'];
    8.  
    9. $wort = array();
    10.  
    11. $wort[0] = '/\b'.wort.'\b/';
    12.  
    13. $bedeutung = array();
    14.  
    15. $bedeutung[0] = 'bedeutung';
    16.  
    17.  
    18. echo $zeichenkette."<br /><br /><br />";
    19. echo "<b>";
    20. echo preg_replace($wort, $bedeutung, $zeichenkette);
    21. echo "</b>";
    22. ?>
    So hole ich die Werte aus der Tabelle:
    PHP:
    1. <?php
    2.     define('MYSQL_HOST',     'host');
    3.     define('MYSQL_USER',     'user');
    4.     define('MYSQL_PASS',     'pw');
    5.     define('MYSQL_DATABASE', 'db');
    6.  
    7.         @mysql_connect(MYSQL_HOST, MYSQL_USER, MYSQL_PASS) OR
    8.         die("Keine Verbindung zur Datenbank. Fehlermeldung:".mysql_error());
    9.         mysql_select_db(MYSQL_DATABASE) OR
    10.         die("Konnte Datenbank nicht benutzen. Fehlermeldung: ".mysql_error());
    11.  
    12. $sql = "SELECT * FROM worte_bedeutungen";
    13. $result = mysql_query($sql) OR die(mysql_error());
    14. $i = 1;
    15. while ($row = mysql_fetch_assoc($result))
    16. {
    17.    $wort[$i] = $row[wort];
    18.    $bedeutung[$i] = $row[bedeutung];
    19.    $i++;
    20. }
    21. //echo "<pre>";
    22. print_r($wort);
    23. echo "<br />";
    24. print_r($bedeutung);
    25. //echo "</pre>";
    26. ?>
     
    Zuletzt bearbeitet: 23. Dezember 2016
  2. Yaslaw

    Yaslaw n/a Moderator

    Wo genau liegt das Problem?
    Was ergeben die print_r Auswertungen?

    Beim preg_replace sieht es soweit gut aus. Ausser dass du in deinem Script einen Text mitgibst, der nix zu übersetzen drin hat. Der Text den du durchsuchst hat nur 3 Zeilenumbrüche.
     
  3. rernanded

    rernanded Erfahrenes Mitglied

    @Yaslaw


    print_r ergibt folgende Ausgabe (Beispiel):
    HTML:
    1. (
    2.    [0] => Apfel
    3.    [1] => Banane
    4.    [2] => Kirsche
    5.        (
    6.            [0] => apple
    7.            [1] => banana
    8.            [2] => cherry
    9.        )
    10. )
    preg_replace enthält als $zeichenkette den Inhalt aus der Form (name=text).

    Moni
     
    Zuletzt bearbeitet: 27. Dezember 2016
  4. Yaslaw

    Yaslaw n/a Moderator

    Code (PHP):
    1. $wort = array();
    2.  
    3. $wort[0] = '/\b'.wort.'\b/';
    1) wort ist hier keine Variable. SOndern irgendwas. Als Variable müsstest es $wort heissen
    2) Willst du aus jedem Eintrag in $wort ein Pattern bilden und nicht nur den Ersten Wert überschreiben.
    3) überschreibst du mit $wort=array(); deine Auswahl aus der Datenbank mit einem leeren Array.
    4) auch den $bedeutung ¨berschriebst du mit einem einem leeren Array

    Nach dem obigen Code müsste pirnt_r auf $wort so aussehen
    ([0]=>wort)

    Zuerst beim Auslesen aus der DB gleich den Pattern bilden
    Code (PHP):
    1. while ($row = mysql_fetch_assoc($result))
    2. {
    3.    $pattern[i] ="/\b{$row['wort']\b/";
    4.    $wort[$i] = $row['wort'];
    5.    $bedeutung[$i] = $row['bedeutung'];
    6.    $i++;
    7. }
    Und im Form dann etwa
    Code (PHP):
    1. $zeichenkette = $_POST['text'];
    2.  echo $zeichenkette."<br /><br /><br />";
    3. echo "<b>";
    4. echo preg_replace($pattern, $bedeutung, $zeichenkette);
     
  5. rernanded

    rernanded Erfahrenes Mitglied

    @Yaslaw

    Ja danke Du hast mich auf die Lösung gebracht. Jetzt gehts wie gewünscht. Okay.

    Moni
     
Die Seite wird geladen...