2016-07-11 11 views
0

Das Problem ist nicht, wie ich die Nummer erzeuge, das funktioniert gut für eine andere App, die ich habe. Das Problem ist das Zählen der Gesamtzahl der Boxen und das häufige Durchlaufen eines Forloops. Im Moment multipliziere ich box_ct * qty_ord, um die gesamten Boxen zu erhalten. BTW, ich versuche immer noch alles zu verstehen, was ich mit foreach und for loops machen kann, also wenn jemand eine bessere Idee hat, Great. Erläuterung: Ich suche die Datenbank nach Auftragsnummer und ziehe qty_ord, box_ct und item_no für jeden zurück. Bei einigen Bestellungen gibt es mehr als einen Artikel. Also für jedes Element muss ich qty_ord mit box_ct = count multiplizieren und für dieses spezifische Element muss ich die Schleife durchlaufen, basierend auf was meine Zählung ist. Rechts jetzt, wenn ich die foreach und hardcode die for loop count-Variable entfernen, funktioniert es gut. Irgendwelche Ideen, was mit meiner Foreach nicht stimmt?So erstellen Sie eindeutige Nummer für jede Box bei Bestellung

qty_ord | box_ct | item_no 
------------------------ 
1   2  10001 
3   3  10002 
2   1  10003 
2   3  10004 
2   6  10005 

Unten ist mein Code.

$sql ="SELECT imitmidx_sql.box_ct, oeordlin_sql.item_no, oeordlin_sql.qty_ord 
        FROM imitmidx_sql 
        JOIN oeordlin_sql ON oeordlin_sql.item_no = imitmidx_sql.item_no WHERE ord_no ='$orderNum'"; 

      $query = odbc_exec($conn, $sql); 

      $row7 = odbc_fetch_array($query); 

      foreach($row7['item_no'] as $item){ 
       $count = $row7['qty_ord'] * $row7['box_ct']; 

        for($counter = 0; $counter <= $count; $counter++){ 
         //GRAB NUMBER FROM FILE 
         $sscc = file_get_contents("ucc128.txt"); 
         //INCREMENT NUMBER 
         $sscc++; 
         //PUT THE NUMBER BACK IN FILE 
         $sscc = file_put_contents("ucc128.txt", $sscc); 
         //COMBINE STATIC NUMBER AND NUMBER FROM FILE 
         $ssccnumber = "00950000".$sscc; 
         //CREATE CHECK DIGIT MATH 
         $ssccnumArray = str_split((string)$ssccnumber); 
         $ssccstep1 = array_combine(range(1, count($ssccnumArray)), $ssccnumArray); 

         $ssccstep2 = 0; 
         $ssccstep4 = 0; 
         foreach($ssccnumArray as $k => $v){ 
          if($k%2){ 
           $ssccstep2 += (int)$v; 
          }else{ 
           $ssccstep4 += (int)$v; 
          } 
         } 

         $ssccstep3 = (int)$ssccstep2 * 3; 
         $ssccstep5 = (int)$ssccstep3 + (int)$step4; 
         $ssccCheckDigit = (ceil($ssccstep5/10) * 10) - $ssccstep5; 
         //END CREATE CHECK DIGIT 
         //CONCATENATE FULL NUMBER  
         $sscc1 = $ssccnumber.$ssccCheckDigit; 

         $sql = "INSERT INTO ucc128 (sscc, ord_no) VALUES ('$sscc1' ,'$orderNum')"; 
         #echo $sql.'<br />'; 
         odbc_exec($connPRONUMBER, $sql); 
       } 
      } 
+0

Ihre Frage ist verwirrend. Was versuchst du speziell zu erreichen? Sie benötigen einen Zähler, der erhöht und in HTML druckt? – Chris

+0

Ich entschuldige mich für die verwirrende Frage. Ich muss die Gesamtkastennummer für jeden Gegenstand auf einer Bestellung finden und diese als die Zählung benutzen, um eine Zahl foreach Kasten zu erzeugen. Also, wenn es 5 Gegenstände auf einem LKW gibt, muss ich die Menge, die für jeden Gegenstand bestellt wurde, zurückgeben und dann multipliziere das mal mit der Anzahl der Kästchen, um meine Zählung zu erhalten. Ich muss dann den Nummerngenerator durchlaufen, von dem ich weiß, dass er funktioniert (das ist mein Forloop). Ich bin mir ziemlich sicher, dass mein Problem mit meiner ersten foreach ($ row7 ['item_no'] als $ item) zu tun hat. – Ryan

+0

Ich schlage vor, Sie bearbeiten Ihre Frage, so ist es klarer, was Sie wissen – anhoppe

Antwort

0

Meine Foreach funktionierte nicht, also habe ich stattdessen die Summe mit meiner SQL-Abfrage erhalten.

Ich konnte es dann ausgeben und $ row7 ['total'] auf die Variable $ count speichern.

0

Ich glaube, Ihr Problem mit der folgenden sein:

foreach($row7['item_no'] as $item){ 
    $count = $row7['qty_ord'] * $row7['box_ct']; 
    //... 
} 

Dies sollte:

foreach($row7['item_no'] as $item){ 
    $count = $item['qty_ord'] * $item['box_ct']; 
    //... 
} 

Sie sind Daten aus den Abfrageergebnissen greifen, wie auf die aktuelle Zeile gegen .

+0

Guter Punkt, obwohl es immer noch nicht funktioniert. Als ich die For-Schleife fest codierte und die Foreach los wurde, funktionierte es. – Ryan

Verwandte Themen