Datenfeld aufsplitten

Collapse
X
 
  • Filter
  • Time
  • Show
Clear All
new posts

  • 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?

    Comment


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

      Comment


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

        Comment


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

          Comment


          • #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...

            Comment


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

              Comment


              • #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()); 
                Last edited by jbo; 18-02-2004, 19:40.

                Comment


                • #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

                  Comment


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

                    Comment


                    • #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>"
                      Last edited by jbo; 20-02-2004, 17:14.

                      Comment


                      • #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

                        Comment


                        • #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

                          Comment


                          • #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.
                            Last edited by jbo; 23-02-2004, 15:47.

                            Comment


                            • #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...

                              Comment

                              Working...
                              X