Anfänger-Problem mit switch und case

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

  • Anfänger-Problem mit switch und case

    Hallo zusammen,

    wir haben bei uns in der Firma vor einiger Zeit etwas in PHP programmiert bekommen und mir wurde jetzt die Aufgabe übergebügelt, eine kleine Änderung vorzunehmen.

    Es handelt sich um ein Bestellsystem und bei meinem Problem konkret um eine Anfrage im Administrationsmodul:

    PHP-Code:
        switch ($section)
        {
            case 
    "Gruppe1":
                
    $start 0;
                
    $ende 999;
                
    save_changes();
                
    read_articles();
                break;
            case 
    "Gruppe2":
                
    $start 1000;
                
    $ende 1999;
                
    save_changes();
                
    read_articles();
                break;
            case 
    "Gruppe3":
                
    $start 2000;
                
    $ende 4999;
                
    save_changes();
                
    read_articles();
                break;
            case 
    "Gruppe4":
                
    $start 5000;
                
    $ende 9999;
                
    save_changes();
                
    read_articles();
                break;
            default:
                
    $start 0;
                
    $ende 999;
                
    read_articles();
                break;
        } 
    Hier werden die Artikel anhand der Artikelnummern in 4 verschiedene gruppen aufgeteilt. Jetzt hat mein Chef aber beschlossen, neben 4-stelligen Artikelnummern auch 5-stellige Nummern einzuführen.

    Ich habe schon zig Foren durchsucht und auch das PHP-Manual gelesen, aber meine Beginner-Kenntnisse reichen nicht aus, um diese Abfrage korrekt zu ändern.

    Wie müssen die cases definiert werden, damit ich in Gruppe 2 die Artikel von 1000 bis 1999 und die 10000 bis 19999 angezeigt bekomme, in Gruppe 3 die von 2000 bis 4999 und die von 20000 bis 49999?

    Ich würde mich riesig freuen, wenn mir jemand einen kleinen Tipp geben könnte.

    Vielen Dank und beste Grüße,

    dellesimo

  • #2
    Hallo,

    diese Stelle wird nicht ausreichen.
    Zeig mal die save_changes() und die read_articles().

    Gruß,
    ministry
    ich glaube

    Kommentar


    • #3
      Hallo,

      danke für die Antwort.

      Hier die Funktionen:

      PHP-Code:
      /* Funktionen: */
          
      function save_changes()
          {
              
      /* Artikelzuordnungen speichern: */
              /* Nur ausführen, wenn $save = true! */
              
              
      global $old_section$kundennummer$save$HTTP_POST_VARS;
              
              if(
      $save == "true")
              {
                  switch(
      $old_section)
                  {
                      case 
      "Gruppe1":
                          
      $s_start 0;
                          
      $s_end 999;
                          break;
                      case 
      "Gruppe2":
                          
      $s_start 1000;
                          
      $s_end 1999;
                          break;
                      case 
      "Gruppe3":
                          
      $s_start 2000;
                          
      $s_end 4999;
                          break;
                      case 
      "Gruppe4":
                          
      $s_start 5000;
                          
      $s_end 9999;
                          break;
                  }
                  
                  
      /* Geänderte Daten hinzufügen: */
                  
      $get_article mysql_query("SELECT ID, 
      Artikelnummer_extern FROM artikel WHERE Artikelnummer_extern >= 
      $s_start AND Artikelnummer_extern <= $s_end ORDER BY 
      Artikelnummer_extern"
      );
                  while(
      $row2 mysql_fetch_array($get_article))
                  {
                      
      $artikelnummer $row2["ID"];
                      
      $checked $HTTP_POST_VARS[$artikelnummer];
                      
      #echo $row2["Artikelnummer_extern"] . ": " . $checked . "<br>";
                      
                      
      if($checked == "1")
                      {
                          
      #echo $artikelnummer;
                          
      mysql_query("INSERT INTO artikel2standorte 
      (StandortID, ArtikelID) VALUES ('
      $kundennummer','$artikelnummer')");
                      }
                      else 
                      {
                          
      mysql_query("DELETE FROM 
      artikel2standorte WHERE StandortID='
      $kundennummer' AND ArtikelID='$artikelnummer'");
                      }
                  }
              }
          }
          
          function 
      read_articles()
          {
              
              global 
      $start$ende$kundennummer$section;
              
              
      /* Artikelzuordnungen auslesen und anzeigen: */
              
              
      echo '
                  <p><b>Ausgewählter Bereich: ' 
      $section ':</b></p>
                  <table border="0" cellpadding="0" 
      cellspacing="0" style="border-collapse: collapse" bordercolor="#111111" id="AutoNumber1">
              '
      ;
              
              
      /* Tabelle temp_display zurücksetzen: */
              
      mysql_query("TRUNCATE TABLE temp_display");
              
              
      /* Artikeldaten auslesen: */
              /* Zugeordnete Artikel auslesen und speichern: */
              
      mysql_query("INSERT INTO temp_display (kundennummer, artikelid, artikelnummer, artname, active, preis) SELECT
       artikel2standorte.StandortID, artikel.ID, artikel.Artikelnummer_extern, 
      artikel.Name, '1', artikel.Preis_1 FROM artikel2standorte, artikel WHERE 
      artikel2standorte.StandortID='
      $kundennummer' AND 
      artikel2standorte.ArtikelID=artikel.ID"
      );
              
              
      /* Nicht zugeordnete Artikel auslesen und speichern: */
              
      mysql_query("INSERT INTO temp_display (kundennummer, artikelid, artikelnummer, artname, active, preis) 
      SELECT '
      $kundennummer', artikel.ID, artikel.Artikelnummer_extern, 
      artikel.Name, '0', artikel.Preis_1 FROM artikel LEFT JOIN artikel2standorte 
      ON artikel.ID = artikel2standorte.ArtikelID AND 
      artikel2standorte.StandortID='
      $kundennummer' WHERE 
      artikel2standorte.StandortID IS NULL"
      );
              
              
      /* Nun die Artikel auslesen und anzeigen: */
              
      $get_data mysql_query("SELECT * FROM 
      temp_display WHERE kundennummer='
      $kundennummer' AND 
      (artikelnummer >= 
      $start AND artikelnummer <= $ende) GROUP BY artikelnummer ORDER BY artikelnummer");
              echo 
      mysql_error();
              while(
      $row mysql_fetch_array($get_data))
              {
                  
      $artikelnummer $row["artikelid"];
                  if(
      $row["preis"] == "0.00") { $bold1 "<b>"$bold2 "</b>"; ${$artikelnummer} = "checked"; }
                  else { 
      $bold1 ""$bold2 ""; }
                  
                  if(
      $row["active"] == "1") { $checked "checked"; } else { $checked ""; }
                  
                  echo 
      '
                      <tr>
                        <td><input type="checkbox" name="' 
      $row["artikelid"] . '" value="1" ' $checked '></td>
                        <td>' 
      $bold1 $row["artikelnummer"] . ' - ' $row["artname"] . $bold2 .'</td>
                      </tr>
                  '
      ;
              }
              
              echo 
      '
                  </table>
              '
      ;
              
          } 
      Wäre super, wenn du einen Änderungsvorschlag für mich hättest.

      gruß, dellesimo
      Zuletzt geändert von dellesimo; 27.08.2006, 14:06.

      Kommentar


      • #4
        Hallo,

        ich habe das ganze jetzt vorerst so gelöst, dass ich einen neuen case mit den 5-stelligen Artikel eingefügt habe. Läuft auch wunderbar und mein Chef ist erstmal besänftigt.

        Aber wenn noch jemand eine Idee hat, die 5-stelligen Artikelnr. in die 4 ursprünglichen Gruppen zu integrieren, bin ich für jede Anregung dankbar.

        Viele Grüße,

        dellesimo

        Kommentar

        Lädt...
        X