Ankündigung

Einklappen
Keine Ankündigung bisher.

[Erledigt] Schleifen und Arrays

Einklappen

Neue Werbung 2019

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

  • [Erledigt] Schleifen und Arrays

    Hi,

    bin gerade mal wieder am rumbasteln und find einfach den Fehler nicht. Hier mal der (notwendige) Code:
    PHP-Code:
    if(isset($_POST['data'])){
    preg_match_all'#^(.+) (\d+)#m'  $_POST['data'], $matches);
    var_dump($matches);

    }
                              
    $spieltag=$_POST["spieltag"];

    echo 
    $spieltag;
    echo 
    $matches[2][0];
    echo 
    $matches[1][0];


    for (
    $x=0;$x<100;$x=$x+1
    {


    mysql_query("UPDATE spiele SET  mw1 = '$matches[2][$x]' WHERE spieltag={$spieltag} AND heim={$matches[1][$x]}");



    Zur Erklärung:
    1. Aus einem Formularfeld wird der Inhalt gelesen und gemäß Suchstring in ein Array verpackt ($matches). Zudem wird noch die Variable $spieltag übergeben.

    2. Teste es gerade, deswegen lasse ich mir kurz mal die notwendigen Werte ausgeben (deswegen die drei echo´s)

    3. Zum Muster: der notwendige Inhalt steht immer in $matches[1][*] und $matches[2][*]. Die Sterne sollen jeweils von 0 beginnend hochgezählt werden.

    4. Das Ergebnis soll dann gemäß der Suchbedingung in der Datenbank geupdated werden und zwar so lange, wie es auch Einträge im Array gibt. Bin mir sicher, dass es hier eine besser Lösung gibt als generell bis 100 hochzählen zu lassen. Das so als Nebenfrage

    Wo ist hier der Fehler? Die Werte werden korrekt ausgegeben und ich bekomm auch keine Fehlermeldung. Einzig und allein wird der Wert nicht eingetragen...

    Jemand eine Ahnung? Danke schon mal!
    Gruß
    Patrick


  • #2
    hey
    ja es gibt ne bessere möglichkeit

    for($x=0;$x<count($array);$x=$x++)
    ob count+1 oder nur count weiß ich nicht findest du bestimmt raus

    mach mal in der forschleife ein
    var_dump($matches[2][$x]) und ein var_dump($matches[1][$x])



    warscheinlich liegt der fehler allerdings im sql

    wie wärs mit
    PHP-Code:
    mysql_query("UPDATE spiele SET  mw1 = '$matches[2][$x]' WHERE spieltag='{$spieltag}' AND heim='{$matches[1][$x]}'"); 

    Kommentar


    • #3
      Kleiner Tipp zum Debuggen:

      Code:
      mysql_query( $sql ) or die( $sql . mysql_error() );
      You know, my wife sometimes looks at me strangely. „Duncan“, she says, „there's more to life than Solaris“. Frankly, it's like she speaks another language. I mean, the words make sense individually, but put them together and it's complete nonsense.

      Kommentar


      • #4
        hmm... ok, danke

        es lag am sql...

        und extra danke für den count ansatz, das hat was gebracht!

        Kommentar


        • #5
          dann brachst du ja nur mehr auf erledigt klicken

          Kommentar


          • #6
            Zitat von clemo Beitrag anzeigen
            for($x=0;$x<count($array);$x=$x++)
            Wenn dann allerdings das count schon vor die for-schleife, damit php nicht bei jedem schleifendurchlauf das array zählen muss, also beispielsweise:
            PHP-Code:
            $c=count($array);
            for(
            $x=0;$x<$c;$x=$x++) 
            Da Du aber eh ja das ganze Array durchgehen willst würde sich foreach noch viel eher anbieten.

            Kommentar


            • #7
              $x=$x++
              Unfug.
              --

              „Emoticons machen einen Beitrag etwas freundlicher. Deine wirken zwar fachlich richtig sein, aber meist ziemlich uninteressant.
              Wenn man nur Text sieht, haben viele junge Entwickler keine interesse, diese stumpfen Texte zu lesen.“


              --

              Kommentar


              • #8
                Ähm, ja, ist mir garnicht aufgefallen beim kopieren...^^

                Kommentar

                Lädt...
                X