String via explode trennen und wieder mit neuen Werten zusammen setzten....

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

  • String via explode trennen und wieder mit neuen Werten zusammen setzten....

    Hallo liebe Comm,

    ich sitze seit gestern an diesen Problem dran und habe anscheinend ein rießen Brett vor den Kopf....

    Aus der Datenbank benkomme ich einen folgenden Inhalt eines Feldes:

    1|1|1|1|1|1|0|1|1|1|1|1|1|1|1|1|1|1|1|1|1|1|1|1|1

    Per Get bekomme ich dann eine Position die den Wert dieser Position änder soll von 1 > 0 oder 0 > 1

    und dann sollte der gesammte wert wieder neu in die Datenbak geschrieben werden....

    Beispiel:

    aus der DB kommt

    1|1|1|1|1|1|0|1|1|1|1|1|1|1|1|1|1|1|1|1|1|1|1|1|1

    per get bekomm ich die Position 9

    dann sollte der Wert ja folgend aussehen

    1|1|1|1|1|1|0|1|0|1|1|1|1|1|1|1|1|1|1|1|1|1|1|1|1

    da ja die Position 9 ja 1 hatte sollte nun 0 drin stehen aber bei meinen Code steht dann

    1|1|1|1|1|1|1|1|0|1|1|1|1|1|1|1|1|1|1|1|1|1|1|1|1

    er hat die position 9 wohl geändert aber die Position 7 hat er von 0 auf 1 geändert....

    Code:
    $split_lvlcode = explode("|",$row2["mc_lvlcode"]) ;
    
            $arr_size=count($split_lvlcode);
            for($i=0;$i<$arr_size;$i++)
            {
                if ($G_pos == $i) {
                        if ($G_stat == 1){
                            $stat = 0;
                        } 
                        if ($G_stat == 0){
                            $stat = 1;
                        } 
                    $new_lvlcode = $new_lvlcode.$stat.'|';
                }else {
                    $new_lvlcode = $new_lvlcode.$user_functions[$i].'|';
                }
            } 
            $lvlcode = substr($new_lvlcode, 0, -1);
    $row2["mc_lvlcode"] = 1|1|1|1|1|1|0|1|0|1|1|1|1|1|1|1|1|1|1|1|1|1|1|1|1
    $G_pos = 9
    $G_stat = 1

    wo liegt den da bitte men Gedanken Fehler???? Wäre super wenn ihr mir da irgend wie helfen könnt

    LG Donny

  • #2
    PHP-Code:
    $string '1|1|1|1|1|1|0|1|1|1|1|1|1|1|1|1|1|1|1|1|1|1|1|1|1';
    $pos 9;

    $arr explode('|'$string);
    if (
    $pos <= count($arr)) {
        
    $arr[$pos-1] = (bool)$arr[$pos-1] ? 1;
        
    $string implode('|'$arr);
        echo 
    $string// 1|1|1|1|1|1|0|1|0|1|1|1|1|1|1|1|1|1|1|1|1|1|1|1|1
    } else
        echo 
    'Position zu groß.'
    Basics lernen angesagt, sowas ist 1. Stunde PHP!
    Zuletzt geändert von ApoY2k; 28.09.2010, 20:54.
    This is what happens when an unstoppable force meets an immovable object.

    Kommentar


    • #3
      OMG ich sollte wirklich die Bücher wieder rausholen -.- vielen Dank
      bin doch schon sehr eingestaubt^^

      Danke schön für deine schnelle Hilfe

      Kommentar


      • #4
        1|1|1|1|1|1|0|1|1|1|1|1|1|1|1|1|1|1|1|1|1|1|1|1|1
        So was speichert man nicht in DBs!
        Es sei denn du willst bewusst gegen die erste Normalform verstoßen.
        Dann frage ich aber: Warum?


        Welches DBMS verwendest du? MySQL?
        Dann wäre der Datentype SET evtl. was für dich.
        Wir werden alle sterben

        Kommentar


        • #5
          nein die 0 und 1 sind nur zur verständlichkeitshalbe von mir eingesetzt worden^^ ich weiß schon das Werte so nicht gespeichert werden sollten^^ mir ging es nur um einen Gedankenanstoss für mein eigentliches Problem

          Aber danke für deinen Anstoß auf Set das brauche ich wo anders das hatte ich auch schon wieder vergessen^^

          Kommentar


          • #6
            nein die 0 und 1 sind nur zur verständlichkeitshalbe von mir eingesetzt worden^^ ich weiß schon das Werte so nicht gespeichert werden sollten^^
            Ich meine nicht die 0 und 1, sondern die |
            Wir werden alle sterben

            Kommentar


            • #7
              nein das Trennzeichen habe ich vorher geändert da ich gelesen hatte das das Zeichen nicht besonders schlau sei zu trennen^^ aber den genauen Grund habe ich noch nicht rausgefunden aber bin am lesen und stöbern^^

              Kommentar


              • #8
                Werte sollten gar nicht mit einem Zeichen getrennt werden, egal um welches Zeichen es sich handelt.

                Kommentar


                • #9
                  aber bin am lesen und stöbern
                  Stöbere!

                  Zum Beispiel auch hier:
                  Die 1. Normalform
                  Definition:
                  Ein Relationstyp ist in der 1. Normalform, wenn alle Attribute maximal einen Wert haben. Am Kreuzungspunkt einer Spalte mit einer Reihe darf also maximal ein Datenwert stehen. Das Nichtvorhandensein von Daten ist zulässig.

                  Mit anderen Worten: Wiederholungsgruppen sind nicht erlaubt.
                  Aus: Die 5 Normal Formen
                  Zuletzt geändert von combie; 28.09.2010, 22:53.
                  Wir werden alle sterben

                  Kommentar

                  Lädt...
                  X