Ankündigung

Einklappen
Keine Ankündigung bisher.

var1 von einer for in die andere

Einklappen

Neue Werbung 2019

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

  • var1 von einer for in die andere

    ich hab 2 for-schleifen:
    Code:
    					for($d=0; $d<=$count_rows; $d++) {
    						$XML .= $fields[$d];
    						if($d != $count_rows) {
    							$XML .= ",";
    						}
    					}
    					$XML .= ") VALUES (";
    					for($e=0; $e<=$count_rows; $e++) {
    						$XML .= "'".$rows[$fields[$d]][$e]."'";
    						if($e != $count_rows) {
    							$XML .= ",";
    						}
    					}
    nun brauch ich die $d Variable vom ersten for auch im 2ten for... nur wie bekomm ichs hin? ich hab schon versucht die erste for-schleife in der 2ten so hinzubekommen, dass sie mir $d immer so bastelt, wie in der ersten aber will nicht!


  • #2
    wenn ich dich richtig verstehe könnte es so gelöst werden
    Code:
    for($e=0,$d=0;$e<=$count_rows;$e++,$d++)
    es können mehrere variablen in einer forschleife initalisiert werden
    wenn du es anders meinst, formulier am besten deine frage noch mal genauer

    Kommentar


    • #3
      ich hoffe du meinst es nicht so!!
      wenn dan Falsches Forum
      Code:
        for($d=0; $d<=$count_rows; $d++) 
      { 
                        $XML .= $fields[$d]; 
                        if($d != $count_rows) 
                        { 
                           $XML .= ","; 
                         } 
                      $XML .= ") VALUES ("; 
      
                     for($e=0; $e<=$count_rows; $e++) 
                      {
                        $XML .= "'".$rows[$fields[$d]][$e]."'"; 
                        if($e != $count_rows)
                          { 
                                 $XML .= ","; 
                          } 
                       }
      }
      http://www.dhsmedia.de
      http://www.deutsch-im-blick.de

      Kommentar


      • #4
        Zitat von kid01
        ich hoffe du meinst es nicht so!!
        wenn dan Falsches Forum
        Code:
          for($d=0; $d<=$count_rows; $d++) 
        { 
                          $XML .= $fields[$d]; 
                          if($d != $count_rows) 
                          { 
                             $XML .= ","; 
                           } 
                        $XML .= ") VALUES ("; 
        
                       for($e=0; $e<=$count_rows; $e++) 
                        {
                          $XML .= "'".$rows[$fields[$d]][$e]."'"; 
                          if($e != $count_rows)
                            { 
                                   $XML .= ","; 
                            } 
                         }
        }
        Nein, weil ich so 3 Spalten und aufma 9 oder X Einträge habe! Das hatte ich auch schon ausprobiert.

        @ burner.nst: ich hoffe mal das klappt, ich gucks mir sofort mal an.

        // Edit:
        brauch ich doch garned ma testen. $d ist dann das gleiche wie $e und das bringts ja ned. Das ganze sieht ja so aus:

        Array[0] = UserName

        Array[0][0] = freq.9
        Array[0][1] = progman_
        Array[0][2] = joerg_
        ...
        Array[0][n] = ...

        Array[1] = E-Mail

        Array[1][0] = webmaster@realscripts.de
        Array[1][1] = progman@provider.de
        Array[1][1] = provider@provider.de
        ...
        Array[1][n] = ...

        es geht aber nicht nur von 0 - 2 sondern von 0 - X... Also muss $d, X-mal Y sein und $e immer +1...

        Kommentar


        • #5
          Zitat von kid01
          ich hoffe du meinst es nicht so!!
          wenn dan Falsches Forum
          So isses.

          Zitat von freq.9
          Nein, weil ich so 3 Spalten und aufma 9 oder X Einträge habe! Das hatte ich auch schon ausprobiert.

          ...

          es geht aber nicht nur von 0 - 2 sondern von 0 - X... Also muss $d, X-mal Y sein und $e immer +1...

          An Deiner Art und Weise, ein Problem für andere verständlich zu fomulieren, solltest Du dringend arbeiten

          -> moved

          Kommentar


          • #6
            wie soll denn $e im vergleich zu $d sein???
            du musst schon etwas genauere angaben machen

            Kommentar


            • #7
              Zitat von meikel
              An Deiner Art und Weise, ein Problem für andere verständlich zu fomulieren, solltest Du dringend arbeiten

              -> moved
              das Problem ist eigentlich ganz simpel, nur das umzusetzen is bisl komplex (für mich)... Es müssen in diesem Beispiel 4 Query´s erstellt werden. In der DB sind 3 Spalten (ID, name, lalala) und es gibt, da es ja 4 Query´s werden, 4 Einträge... Nun sollen die Query´s aber dynamisch erstellt werden. Um einen vollständigen Query zu erstellen muss ich einmal alle Spaltennamen eintragen in den Query und X-mal (also so oft, wie es Spalten gibt) die Values eintragen. Also hab ich schonmal eine for-Schleife die die Query´s erstellt. Drin noch eine for-Schleife die die Spaltennamen einträgt und danach noch eine die dann die Values der Spalten einträgt. Bei der ersten for-Schleife wird $a immer erhöht. Also pro Eintrag ein Query. Dann wird in der 2ten die Variable $d immer erhöht womit dann auch der Spaltenname ausgelesen wird aus dem Array. Nun kommt die 3te for.Schleife, die dann die Values der Spalten ausliest aus dem Array. Da wird $e immer erhöht. Da aber die Daten im Array so stehen: Array[Spaltenname][Spalteninhalt], und ich für den Spaltennamen die Var $d brauche funzt das ganze nicht.

              So sollte es sein:
              1) Spaltennamen eintragen von Array[0] --> zugehörigen Spaltennamen von Array[0][n] eintragen
              2) Spaltennamen eintragen von Array[1] --> zugehörigen Spaltennamen von Array[1][n] eintragen
              3) Spaltennamen eintragen von Array[2] --> zugehörigen Spaltennamen von Array[2][n] eintragen
              .... usw ...

              das nach dem --> ist immer Array[$d][$e] nur hab ich dieses $d ja nicht mehr in der zweiten for-Schleife. Die for-Schleife müsste nach jedem Durchlauf pausieren, den 3te durchlaufen lassen einmal und dann wieder eine Runde laufen und dann wieder die 3te durchlaufen..usw...

              Nur das bekomme ich mit dem Code bis jetzt nicht hin, weil erst die eine for-Schleife durchläuft, und dann erste die andere!

              // Edit:

              Zitat von burner.nst
              wie soll denn $e im vergleich zu $d sein???
              du musst schon etwas genauere angaben machen
              Es muss immer so sein:
              $d = 0;
              $d = 0; $e = 0;
              $d = 0; $e = 1;
              $d = 0; $e = 2;
              $d = 1;
              $d = 1; $e = 0;
              $d = 1; $e = 1;
              $d = 1; $e = 2;

              usw.

              Kommentar


              • #8
                Mir deucht, Du machst Dir da etwas zuviel Arbeit. Ich habe Dir mal ein paar Funktionen zusammenkopiert, mit denen ich mir das Leben erleichtere:
                Code:
                <?php
                # 5 nützliche Funktionen für MySQL
                
                # Autor: meikel at php minus help dot info
                
                # gegeben ist ein assoziatives Array, 
                # $parameter = array ('spalte_1' => 'wert_1', 'spalte_2 => 'wert_2', ... );
                
                # bildet den SET String für UPDATE
                function _build_set ($a, $f = false)
                {
                    $d = ($f === false) ? '' : '`';
                    $r = array();
                    foreach ($a as $k => $v) $r[] = $d.$k.$d.'='."'$v'";
                    return ' SET '.implode(', ',$r).' ';
                } 
                
                # bildet den INSERT INTO String
                function _build_insert ($a, $f = false)
                {
                    $d = ($f === false) ? '' : '`';
                    $col = array();
                    $val = array();
                    foreach ($a as $c => $v)
                    {
                        $col[] = $d.$c.$d;
                        $val[] = "'$v'";
                    }
                    return ' ('.implode(', ',$col).') VALUES ('.implode(', ',$val).') ';
                } 
                
                # erzeugt eine Spaltenliste
                function _build_list ($a, $f = false)
                {
                    $d = ($f === false) ? '' : '`';
                    $r = array();
                    foreach ($a as $k) $r[] = $d.$k.$d;
                    return implode (', ', $r);
                }
                
                # Datum konvertieren
                
                function mysql2date($a, $t = false) # $t Berücksichtigung der Uhrzeit bei DATETIME
                {
                    $d = explode(" ",$a); # in $d[1] wäre dann die Uhrzeit
                    $d[1] = ($t === false) ? ' : ' . $d[1];
                    $d = explode("-",$d[0]);
                    return implode ('.', array_reverse(explode('-', $d[0]))) . $d[1];
                } 
                
                function date2mysql($a)
                {
                    return implode ('-', array_reverse(explode('.', $a)));
                }
                ?>
                Überdenke Dein Problem noch mal und nutze og. Funktionen.

                Kommentar


                • #9
                  Zitat von freq.9
                  Es muss immer so sein:
                  $d = 0;
                  $d = 0; $e = 0;
                  $d = 0; $e = 1;
                  $d = 0; $e = 2;
                  $d = 1;
                  $d = 1; $e = 0;
                  $d = 1; $e = 1;
                  $d = 1; $e = 2;

                  usw.
                  was soll daran so schwer sein?
                  einfach mit ner if-abfrage prüfen ob $e==2 und wenn ja dann erhöhe $d um eins und setze $e auf 0
                  falls nein erhöe $e um eins

                  Kommentar


                  • #10
                    Zitat von burner.nst
                    Zitat von freq.9
                    Es muss immer so sein:
                    $d = 0;
                    $d = 0; $e = 0;
                    $d = 0; $e = 1;
                    $d = 0; $e = 2;
                    $d = 1;
                    $d = 1; $e = 0;
                    $d = 1; $e = 1;
                    $d = 1; $e = 2;

                    usw.
                    was soll daran so schwer sein?
                    einfach mit ner if-abfrage prüfen ob $e==2 und wenn ja dann erhöhe $d um eins und setze $e auf 0
                    falls nein erhöe $e um eins
                    in ner for-Schleife die $e nutzt $e auf 0 setzen? aha? wann endet die Schelife dann?

                    Kommentar


                    • #11
                      dann initalisiere doch eine zähl variable $i die die abruchbedingung festlegt...

                      Kommentar


                      • #12
                        so nun hab ich ma das wichtigste ruasgefiltert:

                        Code:
                        <?php
                        
                        $tables = Array(
                        	0 => "ado"
                        );
                        
                        $fields = Array(
                        	0 => "ID",
                        	1 => "name",
                        	2 => "lalala"
                        );
                        
                        $rows = Array(
                        	"ID" => Array(
                        		0 => 1,
                        		1 => 2,
                        		2 => 3,
                        		3 => 4
                        	),
                        	"name" => Array(
                        		0 => "freq.9",
                        		1 => "progman",
                        		2 => "joerg",
                        		3 => "bazzi"
                        	),
                        	"lalala" => Array(
                        		0 => "Hallo",
                        		1 => "Wie",
                        		2 => "Gehts",
                        		3 => "Dir"
                        	)
                        );
                        
                        $count_rows = count($rows)-1;
                        $count_tables = count($tables)-1;
                        
                        $XML = '';
                        for($a=0; $a<=$count_tables; $a++) {
                        	$count = count($rows[$fields[$a]])-1;
                        	for($r=0; $r<=$count; $r++) {
                                for($d=0; $d<=$count_rows; $d++) {
                                    $e = 0;
                                    $XML .= "'".$rows[$fields[$d]][$e]."'";
                                    if($d != $count_rows) {
                                        $XML .= ",";
                                    }
                                    $e++;
                                }
                            	$XML .= "
                        \n";
                            }
                        }
                        
                        echo $XML;
                        
                        ?>
                        Nun hat man diese Ausgabe:
                        '1','freq.9','Hallo'
                        '1','freq.9','Hallo'
                        '1','freq.9','Hallo'
                        '1','freq.9','Hallo'
                        So muss es aber aussehen:
                        '1','freq.9','Hallo'
                        '2','progman','Wie'
                        '3','joerg','Gehts'
                        '4','bazzi','Dir'

                        Kommentar


                        • #13
                          Zitat von freq.9
                          Nun hat man diese Ausgabe:
                          '1','freq.9','Hallo'
                          '1','freq.9','Hallo'
                          '1','freq.9','Hallo'
                          '1','freq.9','Hallo'
                          So muss es aber aussehen:
                          '1','freq.9','Hallo'
                          '2','progman','Wie'
                          '3','joerg','Gehts'
                          '4','bazzi','Dir'
                          Deine Quell-Arrays sind etwas suboptimal, aber es geht auch...:

                          Code:
                          <?php
                          
                          $fields = Array(
                          	0 => "ID",
                          	1 => "name",
                          	2 => "lalala"
                          );
                          
                          $rows = Array(
                          	"ID" => Array(
                          		0 => 1,
                          		1 => 2,
                          		2 => 3,
                          		3 => 4
                          	),
                          	"name" => Array(
                          		0 => "freq.9",
                          		1 => "progman",
                          		2 => "joerg",
                          		3 => "bazzi"
                          	),
                          	"lalala" => Array(
                          		0 => "Hallo",
                          		1 => "Wie",
                          		2 => "Gehts",
                          		3 => "Dir"
                          	)
                          );
                          
                          $neu = array();
                          $flag = true;
                          
                          while ($flag)
                          {
                            @reset ($fields);
                            $temp = array();  
                            foreach ($fields as $key)
                            {
                              if (! $temp[] = array_shift($rows[$key]))
                              {
                                $flag = false;
                                continue;
                              }
                              @reset ($rows[$key]);
                            }
                            $neu[] = implode(',', $temp);
                          }
                          
                          echo implode ('<br '>, $neu);
                          
                          ?>
                          "So oder so ähnlich...

                          Kommentar


                          • #14
                            Code:
                            $count_rows = count($rows)-1;
                            $count_tables = count($tables)-1;
                            
                            $XML = '';
                            $e = 0;
                            for($a=0; $a<=$count_tables; $a++) {
                               $count = count($rows[$fields[$a]])-1;
                               for($r=0; $r<=$count; $r++) {
                                    for($d=0; $d<=$count_rows; $d++) {
                                        $XML .= "'".$rows[$fields[$d]][$e]."'";
                                        if($d != $count_rows) {
                                            $XML .= ",";
                                        }
                                    }
                                   $e++;
                                   $XML .= "
                            \n";
                                }
                            }
                            
                            echo $XML;
                            so gehts nun... *froi*.. trotzdem danke fürs gedanken anstrengen! DAAANNKKEE

                            Kommentar

                            Lädt...
                            X