Denkfehler?

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

  • Denkfehler?

    Bin gerade dabei ein Regatte Programm auf PHP Basis zu schreiben. Komme jetzt aber nicht weiter, wahrscheinlich weil ich wohl den Wald vor Leuter Bäumen nur nicht sehe. Wäre super wenn jemand ne Idee hat.

    Es wird mit Hilfe von einen Formular bestimmte Werte übergeben, die dann in die MySQL Datenbank wandern sollen, mit Hilfe von UPDATE. Da aber nicht feststeht wie viele Werte eingetragen werden sollen, soll dies dynamisch erfolgen anhand der übertragenen Werte. Hier bei handelt es sich um "Name", "start, "ende", "aktive", die jeweils eine fortlaufende Zahl mit sich führen. Weiterhin ist bekannt, wie oft die 4 Werte jeweils vorhanden sind.

    Ein Auszug aus dem Quelltext findet Ihr hier:
    PHP-Code:
    <?php
           
    // ausführen einer SQL Anfrage - Abrufen der Daten aus der Übersicht
           
    $query "SELECT gruppen FROM $uebersicht_ta WHERE id='$wettfahrtserienid'";
           
    $result mysql_query($query)
           or die(
    '<div align="center" class="warning">Anfrage fehlgeschlagen, bitte später nocheinmal versuchen</div>');
           
    $line mysql_fetch_row($result);
           
    $gruppenanzahl=$line[0];
           
    // ausführen einer SQL Anfrage - Abrufen der Daten aus der Gruppen_Yardstick Tabelle
           
    $query "SELECT * FROM $gruppen_ta WHERE id_wettfahrt='$wettfahrtserienid'";
           
    $result mysql_query($query)
           or die(
    '<div align="center" class="warning">Anfrage fehlgeschlagen, bitte später nocheinmal versuchen</div>');
           
    $line mysql_fetch_array($resultMYSQL_NUM);
           
    /*Es wird ein Array zurückgegeben, welches mit folgender Routine in vier weitere Arrays aufgeteilt wird um die Ausgabe vorzubereiten
           Die Variabeln mit $ davor sind die neuen Arrays. */ 
           
    $nr=0;
           
    $nrname=0;
           
    $nrstart=1;
           
    $nrende=2;
           
    $nraktiv=3;
           
    //Erstellt ein Array
           
    $fname= array (1);
           
    $fstart= array (1);
           
    $fende= array (1);
           
    $faktive= array (1);
           foreach (
    $line as $feld) {
                   if (
    $nr==$nrname){
                
    $fname[]=$feld;
                
    $nrname++;
                
    $nrname++;
                
    $nrname++;
                
    $nrname++;
                }
                elseif (
    $nr==$nrstart){
                
    $fstart[]=$feld;
                
    $nrstart++;
                
    $nrstart++;
                
    $nrstart++;
                
    $nrstart++;
                }
                elseif (
    $nr==$nrende){
                
    $fende[]=$feld;
                
    $nrende++;
                
    $nrende++;
                
    $nrende++;
                
    $nrende++;
                }
                elseif (
    $nr==$nraktiv){
                
    $faktiv[]=$feld;
                
    $nraktiv++;
                
    $nraktiv++;
                
    $nraktiv++;
                
    $nraktiv++;
                }
                
    $nr++;
                }
                
            
    // Löscht das erste Element des Arrays (die zuvor eingeführte 1
             
    array_shift ($fname);
            
    array_shift ($fstart);
            
    array_shift ($fende);
            
    array_shift ($faktive);
            
    /* Jetzt wird die Tabelle aufgebaut um in eine Zeile 4 verschiedene Array zu bekommen wird der array_shift Befehl benutzt.
            Eine While Anweisung stopp die prozedure nach erreichen der zugehörigen Gruppenanzahl*/
        
    echo'    
                <table align="center" border="0" cellpadding="2" cellspacing="2">
                    <tr>
                        <td align="center">Nr.</td>
                        <td align="center">Name</td>
                        <td align="center">Yardstick<br>Startwert</td>
                        <td align="center">Yardstick<br>Endwert</td>
                        <td align="center">Aktive</td>
                    </tr>'
    ;
                    
    $nr=1;

     while (
    $nr<=$gruppenanzahl){
         
    $tname array_shift ($fname);
        
    $tstartarray_shift ($fstart);
        
    $tendearray_shift ($fende);
        
    $taktiv array_shift ($faktive);
      echo
    '<tr>
        <td>'
    .$nr.'</td>
        <td align="center"><input type="text" name="name'
    .$nr.'" id="name'.$nr.'" value="'.$tname.'" size="15" maxlength="15"></td>';
                echo
    ' <td align="center"><input type="text" name="start'.$nr.'" id="start'.$nr.'" value="'.$tstart.'" size="3" maxlength="3"></td>';
                echo
    ' <td align="center"><input type="text" name="ende'.$nr.'" id="ende'.$nr.'" value="'.$tende.'" size="3" maxlength="3"></td>';
                echo
    ' <td align="center"><input type="checkbox" name="aktiv'.$nr.'" id="aktiv'.$nr.'" ';
                if (!
    $taktive){
                echo
    'value="0"></td>';}
                else {
                echo
    'value="1" checked></td>';}
      echo
    ' </tr>';
     
    $nr++;
    }
    echo
    '</table>
    <INPUT class="formular" name="gruppenanzahl" type="hidden" id="gruppenanzahl" size="2" maxlength="2" value="'
    .$gruppenanzahl.'">
    <INPUT class="formular" name="gruppenid" type="hidden" id="wettfahrtserienid" size="2" maxlength="2" value="'
    .$wettfahrtserienid.'">';

    ?>
    thx

  • #2
    OffTopic:
    ich denke, dass ein thread mit gleichen inhalt reichen sollte. oder?
    habe den anderen gelöscht. und unterlasse bitte *CROSSPOSTING*
    INFO: Erst suchen, dann posten![color=red] | [/color]MANUAL(s): PHP | MySQL | HTML/JS/CSS[color=red] | [/color]NICE: GNOME Do | TESTS: Gästebuch[color=red] | [/color]IM: Jabber.org |


    Kommentar


    • #3
      Re: Denkfehler?

      Original geschrieben von m3phisto
      Es wird mit Hilfe von einen Formular bestimmte Werte übergeben, die dann in die MySQL Datenbank wandern sollen, mit Hilfe von UPDATE. Da aber nicht feststeht wie viele Werte eingetragen werden sollen, soll dies dynamisch erfolgen anhand der übertragenen Werte. Hier bei handelt es sich um "Name", "start, "ende", "aktive", die jeweils eine fortlaufende Zahl mit sich führen. Weiterhin ist bekannt, wie oft die 4 Werte jeweils vorhanden sind.
      und wo genau liegt jetzt dein problem?


      btw: die mehrfach in deinem code auftauchenden konstrukte in der form
      PHP-Code:
      $nrname++;
      $nrname++;
      $nrname++;
      $nrname++; 
      sind doch wohl nicht dein ernst, oder?

      das ist doch das selbe wie
      PHP-Code:
      $nrname+=4
      also warum schreibst du das nicht gleich so hin?
      I don't believe in rebirth. Actually, I never did in my whole lives.

      Kommentar


      • #4
        Re: Re: Denkfehler?

        Original geschrieben von wahsaga
        btw: die mehrfach in deinem code auftauchenden konstrukte in der form
        PHP-Code:
        $nrname++;
        $nrname++;
        $nrname++;
        $nrname++; 
        sind doch wohl nicht dein ernst, oder?

        das ist doch das selbe wie
        PHP-Code:
        $nrname+=4
        also warum schreibst du das nicht gleich so hin?
        weil ers vielleicht so net kennt?
        Man lernt nie aus...

        ...und wenn man's doch tut braucht man sich auch nicht schämen!

        Kommentar


        • #5
          Re: Re: Re: Denkfehler?

          Original geschrieben von BloodReaver
          weil ers vielleicht so net kennt?
          dann kann er aber zumindest ....
          PHP-Code:
          $nrname $nrname 4
          ... machen...
          INFO: Erst suchen, dann posten![color=red] | [/color]MANUAL(s): PHP | MySQL | HTML/JS/CSS[color=red] | [/color]NICE: GNOME Do | TESTS: Gästebuch[color=red] | [/color]IM: Jabber.org |


          Kommentar


          • #6
            abra du weist doch, warum einfach wenns au umständlich geht...
            Man lernt nie aus...

            ...und wenn man's doch tut braucht man sich auch nicht schämen!

            Kommentar


            • #7
              OffTopic:
              jo. mache leute denken eben immer noch im dreieck und meinen die erde ist eine scheibe ...
              INFO: Erst suchen, dann posten![color=red] | [/color]MANUAL(s): PHP | MySQL | HTML/JS/CSS[color=red] | [/color]NICE: GNOME Do | TESTS: Gästebuch[color=red] | [/color]IM: Jabber.org |


              Kommentar


              • #8
                $nrname+=4; ist natürlich einfacher aber durch das rumtesten und ständige ändern in MySQL hat sich eben $nrname++ durch Paste and Copy durchgesetzt, sollte eben erst nur einmal da sein.

                Okay vielleicht war mein Prob nicht genau beschrieben, also nochmal:

                Den Quellcode den Ihr dort seht ist ein Codestück aus der Seite die das Formular beinhaltet.

                In der neuen Seite sollen jetzt die änderung an MySQL weitergegeben werden und der jeweilige Datensatz upgedatet werden.

                Tabellenstruktur für Tabelle `gruppen_yardstick`:

                PHP-Code:

                #
                # Erzeugt am: 05. September 2003 um 09:57
                # Aktualisiert am: 05. September 2003 um 10:55
                #

                CREATE TABLE gruppen_yardstick (
                  
                name1 varchar(15NOT NULL default 'Gruppe 1',
                  
                start1 tinyint(4NOT NULL default '0',
                  
                ende1 tinyint(4NOT NULL default '0',
                  
                aktive1 tinyint(1NOT NULL default '0',
                  
                name2 varchar(15NOT NULL default 'Gruppe 2',
                  
                start2 tinyint(4NOT NULL default '0',
                  
                ende2 tinyint(4NOT NULL default '0',
                  
                aktive2 tinyint(1NOT NULL default '0',
                  
                name3 varchar(15NOT NULL default 'Gruppe 3',
                  
                start3 tinyint(4NOT NULL default '0',
                  
                ende3 tinyint(4NOT NULL default '0',
                  
                aktive3 tinyint(1NOT NULL default '0',
                  
                name4 varchar(15NOT NULL default 'Gruppe 4',
                  
                start4 tinyint(4NOT NULL default '0',
                  
                ende4 tinyint(4NOT NULL default '0',
                  
                aktive4 tinyint(1NOT NULL default '0',
                  
                name5 varchar(15NOT NULL default 'Gruppe 5',
                  
                start5 tinyint(4NOT NULL default '0',
                  
                ende5 tinyint(4NOT NULL default '0',
                  
                aktive5 tinyint(1NOT NULL default '0',
                  
                name6 varchar(15NOT NULL default 'Gruppe 6',
                  
                start6 tinyint(4NOT NULL default '0',
                  
                ende6 tinyint(4NOT NULL default '0',
                  
                aktive6 tinyint(1NOT NULL default '0',
                  
                name7 varchar(15NOT NULL default 'Gruppe 7',
                  
                start7 tinyint(4NOT NULL default '0',
                  
                ende7 tinyint(4NOT NULL default '0',
                  
                aktive7 tinyint(1NOT NULL default '0',
                  
                name8 varchar(15NOT NULL default 'Gruppe 8',
                  
                start8 tinyint(4NOT NULL default '0',
                  
                ende8 tinyint(4NOT NULL default '0',
                  
                aktive8 tinyint(1NOT NULL default '0',
                  
                name9 varchar(15NOT NULL default 'Gruppe 9',
                  
                start9 tinyint(4NOT NULL default '0',
                  
                ende9 tinyint(4NOT NULL default '0',
                  
                aktive9 tinyint(1NOT NULL default '0',
                  
                name10 varchar(15NOT NULL default 'Gruppe 10',
                  
                start10 tinyint(4NOT NULL default '0',
                  
                ende10 tinyint(4NOT NULL default '0',
                  
                aktive10 tinyint(1NOT NULL default '0',
                  
                id tinyint(2NOT NULL auto_increment,
                  
                id_wettfahrt tinyint(4NOT NULL default '0',
                  
                PRIMARY KEY  (id,id_wettfahrt),
                  
                UNIQUE KEY id_wettfahrt (id_wettfahrt)
                TYPE=MyISAM COMMENT='Hier werden die jeweiligen Yardstickeinteilung der Gruppen f' AUTO_INCREMENT=26 
                Da nun aber nicht immer alle Gruppen gebraucht werden und vom Benutzt die Anzahl bestimmt werden kann sollen eben nur soviele upgedatet werden, wie Gruppen festgelegt wurden ($gruppenanzahl).

                Ja stimmt ich könnte jetzt einfach vorher alle festlegen und dann mit einer Abfrage schauen wieviel eingetragen werden sollen, aber das ist die schlechteste Lösung, da ersten die Gruppenanzahl später nochmal gesteigert werden soll und zweitens es verdammt umständlich. Und wie Ihr in den Beiträgen gezeigt habt seid Ihr auch keine Freunde umständlichen PHP Quelltexten!!!

                P.S. Abraxax das CROSSPOSTING war ungewollt, leider war in dem Moment die 24 Stunden um und ch habe einfach nochmal auf abschicken gedrückt!

                Kommentar

                Lädt...
                X