[Variablen] Zu lange Variable!!! Hilfe!!!

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

  • [Variablen] Zu lange Variable!!! Hilfe!!!

    Hallo,

    habe ein Problem mit einer Variablen. Ich habe aus einer Berechnung eine ziemlich lange Zeichenkette in eine MySQL-Tabelle geschrieben. Nun möchte ich im nächsten step diesen Wert wieder in eine Variable schreiben und dann zerlegen und nach einer bestimmten Kombination suchen.

    Das funktioniert auch alles soweit wunderbar, solange die Variable nicht zu lange wird. Ich habe leider festgestellt, daß, nachdem meine Variable nun wirklich sehr groß geworden ist(ca. 70000 Zeichen), sich diese nicht mehr richtig mit meinem php-script verarbeiten lässt.
    Was vorher noch mit einer kurzen Zeichenkette funktionierte, funktioniert nun nicht mehr.

    Bin irgendwie grade am Ende mit meinem Latein...kann mir jemand helfen???

    Vielen Dank,
    joker11

  • #2
    Was hast du denn vor mit dem Text? Was funktioniert nicht?

    Kommentar


    • #3
      Versuche die Entfernung zweier Postleitzahlen anzuzeigen. Hierfür steht in der Variablen jeweils die betreffende Postleitzahl und dahinter die Entfernung.

      Nun möchte ich aus dieser Variablen die gesuchte Postleitzahl finden, und wenn das script das hat, soll es die nächsten vier Stellen der Variable rausziehen, was dann der gesuchten Entfernung entspricht. Und genau das funktioniert nicht. Wenn ich die Variable kleiner mache funktioniert´s, aber bei der Länge leider nicht.

      Danke schonmal für die schnelle Antwort.
      joker11

      Kommentar


      • #4
        und warum schreibst du das alles in ein tabellenfeld? schreib doch plz und entfernung separat in eine eigene Tabelle, dann brauchst auch nicht solche langen felder...oder versteh ich was falsch?

        Kommentar


        • #5
          ;-)

          Nein, daß verstehst Du ganz richtig. Werd ich mal als nächstes testen, war nur extremst verwundert über das Ergebnis. Außerdem habe ich die Befürchtung, daß das bei der Methode auch passiert.

          Gibt´s da irgendwelche Restriktionen mit Variablenlängen, oder worauf man achten muss?

          Kommentar


          • #6
            irgendwann ist jeder speicher mal voll. darauf musst du achten. und auf ein ordentliches konzept
            it's not a bug,
            it's a feature!

            Kommentar


            • #7
              Nein!
              Eine Zeilenlänge von 70000 Zeichen stellt für PHP eigentlich kein Problem dar. Strings dürfen so fett werden, wie Hauptspeicher da ist. Danach hagelt es memory_limit Meldungen.

              Aber deine Datenhaltung scheint mir schon der ersten NormalForm zu wiedersprechen.
              Siehe: Die 5 Normal Formen
              Wir werden alle sterben

              Kommentar


              • #8
                Ohne Code ist das eh nur rumgestocher.
                [FONT="Helvetica"]twitter.com/unset[/FONT]

                Shitstorm Podcast – Wöchentliches Auskotzen

                Kommentar


                • #9
                  Jup, werde mich heute abend gleich mal dranwerfen und die Daten auf zwei Spalten aufteilen...bin mal gespannt, ob´s dann läuft...macht das ganze ja auch etwas übersichtlicher ;-).

                  Zu der Sache mit dem Code...kann ihn gerne heute abend reinstellen, aber wie gesagt, wenn die Variable nicht so lang ist, funktioniert es ja auch. Deshalb denke ich nicht, daß es sich um ein Code-Problem handelt. Werde es aber heute abend trotzdem einstellen.

                  Danke schon mal an alle, für die wirklich schnelle und anregende Hilfe! Das ist echt gut!!!

                  joker11

                  Kommentar


                  • #10
                    um mal auf das ursprungsproblem einzugehen.

                    mysql wird den string beim einfügen abschneiden. 70.000 zeichen, da reicht ja nicht mal der datentyp TEXT.

                    das soll jetzt aber nicht heißen, dass du MEDIUMTEXT draus machen sollst. ich wollte lediglich darauf hinweisen, weil es komischerweise in diesem thread noch nicht geschehen ist.

                    Kommentar


                    • #11
                      Original geschrieben von joker11

                      Zu der Sache mit dem Code...kann ihn gerne heute abend reinstellen, aber wie gesagt, wenn die Variable nicht so lang ist, funktioniert es ja auch. Deshalb denke ich nicht, daß es sich um ein Code-Problem handelt. Werde es aber heute abend trotzdem einstellen.
                      Wenn ich das richtig verstanden habe, kommen hier auch reguläre Ausdrücke zum Einsatz. In PHP mit den falschen Funktionen und schlampig dahingeschrieben Ausdrücken kann es bei einer gewissen Zeichenlänge dazu kommen, dass eine Variable plötzlich leer ist. Von daher: Ohne Code -> rumgestocher.
                      [FONT="Helvetica"]twitter.com/unset[/FONT]

                      Shitstorm Podcast – Wöchentliches Auskotzen

                      Kommentar


                      • #12
                        Ausserdem ist es absolut schleierhaft, wie die genannten Daten so gross werden können. 70'000 Zeichen gehen alleweil als Buch durch.
                        Gruss
                        H2O

                        Kommentar


                        • #13
                          So, sorry, hab jetzt etwas auf mich warten lassen...aber:

                          es geht!!!

                          Danke für den Tipp, daß doch einfach auf zwei Spalten aufzuteilen, habe ich versucht und schon geht´s.

                          Wenn´s noch jemanden interessieren sollte, hier der code, aber wie schon gesagt, der funktioniert, war tatsächlich die Länge der Variable.

                          Und naja, auf knapp 70000 Zeichen komme ich, da ich eine Datei mit knapp 8300 Postleitzahlen habe.
                          8300x5=41500
                          Zu jeder Postleitzahl kommt dann noch mit vier Stellen die Entfernung zur Ursprünglichen dazu:
                          8300x4=33200

                          33200+41500=74700 Zeichen.

                          Code:

                          $datenlaenge = strlen($plzdaten);
                          $datenlaenge = $datenlaenge/5;

                          while ($y<$datenlaenge)
                          {
                          $datenplz2= substr($plzdaten, $count, 5);

                          if ($datenplz2 == $plzneu)
                          {
                          //Berechnung der Wertes, welcher abzulaufen ist
                          $a=$y+1;
                          $zahl=$a*4;
                          $entfernung= substr($entfernungdaten, $zahl, 4);
                          }
                          $y=$y+1;
                          $count=$count+5;
                          }
                          $y="0";
                          $count="0";


                          Danke nochmal an alle!!! Ihr seid echt super!!!
                          joker11

                          Kommentar

                          Lädt...
                          X