Datenfeld aufsplitten

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

  • Datenfeld aufsplitten

    Ich bekomme Daten in einer CSV-Datei. Die Daten übernehme ich dann in eine mySql-Datenbank. Im Feld Adresse steht z.B. folgender Eintrag:
    Teststr. 6 / ST. WENDEL 66606 GERMANY.
    Ich habe leider keinen Einfluss auf den Aufbau der Datenbank, ich muss mit den Daten klarkommen, so wie ich sie kriege.
    Das Ziel soll sein, dass danach Teststr. 6 66606 ST. WENDEL steht.
    Wie würdet Ihr die Geschichte angehen?
    Meiner Meinung nach sollte das mit strtok zu realisieren sein, ich finde aber keinen Ansatz, wie ich die Postleitzahl vor den Ort kriege.
    Thx im voraus für einen Vorschlag.

  • #2
    Schon mal im Forum gesucht?

    Kommentar


    • #3
      ja und wenn ich die Lösung erkannt hätte, hätte ich keinen Eintrag geschrieben

      Kommentar


      • #4
        Also, ich würde wohl ne einfache Kombination aus explode und implode verwenden. Der Rest versteht sich dann von selbst, oder?

        Kommentar


        • #5
          Nicht so richtig, wenn Du mir einen Ansatz geben könntest, wäre ich dankbar.

          Kommentar


          • #6
            PHP-Code:
            $string='Teststr. 6 / ST. WENDEL 66606 GERMANY.';
            $array1=explode(' / '$string);
            $array2=explode(' '$array1[1]);
            array_pop($array2);
            $array1[1]=implode(' '$array2);
            $string=implode(' '$array1); 
            ohne garantie

            aber schau dir mal substr und strrchar an, das sollte damit eventuell einfacher gehen
            Ich denke, also bin ich. - Einige sind trotzdem...

            Kommentar


            • #7
              Besten Dank, das war genau der Anstoss, den ich brauchte. Manchmal klappt einfach nicht der Einstieg.

              Kommentar


              • #8
                Hast Du noch einen Tip, wie ich die Datenbankeinträge nacheinander bearbeiten kann? Ich hole mir im Moment alle Einträge in ein array, ich möchte aber jeden Eintrag einzeln bearbeiten und dann wieder zurückschreiben, oder hab ich einen grundliegenden Denkfehler?

                PHP-Code:
                $sql="SELECT Address
                    FROM tabelle
                    WHERE Signup='"
                .$date."'";
                $resultmysql_query($sql) or die(mysql_error()); 
                Zuletzt geändert von jbo; 18.02.2004, 20:40.

                Kommentar


                • #9
                  PHP-Code:
                  function edit_element($element){
                  return 
                  strtoupper(strrev($element));
                  }

                  $values = array("strasse","baum","haus");

                  for(
                  $i=0$i<count($values); $i++){ 
                  $values[$i] = edit_element($values[$i]);
                  }

                  echo 
                  implode("<br />",$values); 
                  Der Sinn sei mal dahingestellt

                  Kommentar


                  • #10
                    Der Code ist nicht Dein Ernst, oder?

                    Kommentar


                    • #11
                      Ok, explode bringt es in dieser Kombination nicht. Wie würdet Ihr den Code anpacken?


                      Original geschrieben von jbo
                      Versuche erstmal die "\" herauszubekommen, aber er die Ausgabe ist immer noch mit "\", array_pop hab ich auch ausprobiert, aber es tut sich nichts. Was könnte denn mein Fehler sein?


                      PHP-Code:
                      mysql_connect ("xxx"); 
                      mysql_select_db ("xxx") OR die("Verbindung zur Datenbank fehlgeschlagen"); 
                      $sql="SELECT Address 
                          FROM test 
                          WHERE Signup='"
                      .$date."'"
                      $resultmysql_query($sql) or die(mysql_error()); 
                      if (!
                      $result) { 
                         echo 
                      "Anfrage ($sql) konnte nicht ausgeführt werden : " mysql_error(); 
                         exit; 

                      if (
                      mysql_num_rows($result) == 0) { 
                         echo 
                      "Keine Zeilen gefunden, Abbruch"
                         exit; 

                      while (
                      $row mysql_fetch_assoc($result)) { 
                      $string $row["Address"]; 
                      explode(' / '$string); 
                      echo 
                      $string
                      echo 
                      "<br>"
                      Zuletzt geändert von jbo; 20.02.2004, 18:14.

                      Kommentar


                      • #12
                        Wieso sollte mein vorheriger Post nicht ernstgemeint sein? Sollte nur zur Veranschaulichung dienen, wie man alle Elemente eines Arrays nacheinander bearbeiten kann. Ich dachte, das hättest du gewollt...

                        Nungut, wieso überträgst du den Array den du durch das explode() erzeugst denn in keine Variable? Was soll er dir sonst nützen?

                        Probier es doch mal so:

                        PHP-Code:
                        //Vorher: Teststr. 6 / ST. WENDEL 66606 GERMANY
                        //Ziel: Teststr. 6 66606 ST. WENDEL 

                        $string "Teststr. 6 / ST. WENDEL 66606 GERMANY";
                        echo 
                        "Vorher: ".$string."<br><br>";

                        $old_string explode(" / ",$string);
                        $new_string "";

                        $old_string[1] = explode(" ",$old_string[1]);
                        $new_string .= $old_string[0]." ".$old_string[1][count($old_string[1])-2];
                        for(
                        $i=0$i<count($old_string[1])-2$i++) $new_string .= " ".$old_string[1][$i]; 

                        echo 
                        "Nachher: ".$new_string

                        Kommentar


                        • #13
                          Sorry, hab Dich total missverstanden. Hatte gestern etwas Ärger um die Ohren plus eine saubere Grippe. Vielen Dank erstmal, ich werd es probieren, sobald ich wieder einen einigermassen klaren Kopf habe. Nochmal THX

                          Kommentar


                          • #14
                            Hi, das war die richtige Richtung. Wenn ich das laufen lasse, bekomme ich als Ergebnis: Teststr. 6 St. Wendel

                            Ich hab dann folgendes geändert:

                            PHP-Code:
                            $new_string .= $old_string[0]." ".$old_string[1][count($old_string[1])-1];
                            for(
                            $i=0$i<count($old_string[1])-1$i++) $new_string .= " ".$old_string[1][$i]; 
                            und erhalte als Ergebnis: Teststr. 6 66606 Germany ST. WENDEL .
                            Wenn jetzt noch Germany und ST. Wendel die Plätze tauschen, dann bin ich einen Schritt weiter. Hast Du nochmal einen Tip für mich? Ich versteh den Zusammenhang noch nicht, warum ich dieses Ergebnis bekomme, wenn ich bei count anstatt -2 eine -1 eingebe, bzw. wie ich auf das gewünschte Ergebnis komme.
                            Zuletzt geändert von jbo; 23.02.2004, 16:47.

                            Kommentar


                            • #15
                              Versuch es mal so:

                              PHP-Code:
                              $new_string .= $old_string[0]." ".$old_string[1][count($old_string[1])-2];
                              for(
                              $i=0$i<count($old_string[1])-2$i++) $new_string .= " ".$old_string[1][$i];
                              $new_string .= " ".$old_string[1][count($old_string[1])-1]; 
                              Wegen dem count: Überleg einfach erstmal was alles vom ursprünglichem String im betreffendem Array ist und wie die Elemente aussehen...dann kommst du schon dahinter...

                              Kommentar

                              Lädt...
                              X