-----Ursprungligt meddelande----- Från: chris smith [mailto:dmagick@xxxxxxxxx] Skickat: den 23 maj 2006 13:38 Till: Jonas Rosling Kopia: PHP List Ämne: Re: One works, but the other doesn't On 5/23/06, Jonas Rosling <webmaster@xxxxxxxxxxxx> wrote: > I find this problem very strange. I've got two parts of code (allmost the > same) in different TD's with vars and arrays (with same name) but it's only > the top code that gives result. I've allso tryied to rename the vars and > TD's in the bottom without any luck. The only vars/arrays that I haven't > mind changing name on yet are some dynamic, like: > > ${$row[0]} = array(); > > ${$row[0]}[$row[1]] = $row[2]; > > But I think this could be the main cause, but I'm not really sure. If I > delete the top code the bottom works. Any idéas any one? Without seeing the whole code involved, my guess is you're resetting the array with every loop. Guesses don't help but that's all we can do without seeing any actual code. Okej, all the code follows bellow. Remember that part 1 allways works. And they work all seperatly. <?php // Skapar variabel med host, användarnamn och lösenord $link = @mysql_connect("127.0.0.1", "intranet", "intranet0605") or die ("Kunde inte ansluta"); // Skapar variabel med aktuell databas $database=mysql_select_db("eitss_se_intranet"); // PART 1 // SELECT-sats som tar fram alla rader för nyförsäljning grupperat per produkt och säljare $sql = "SELECT c.salesperson_code, sl.description, SUM(sl.unit_price) AS totalt, COUNT(sl.description) AS antal FROM Sales_line AS sl JOIN Customer AS c WHERE sl.sell_to_customer_no = c.no AND (LEFT( sl.shipment_date, 2) = '$year' AND MID(sl.shipment_date, 4, 2) = '$month') AND RIGHT(sl.shipment_date, 2) = '$day' AND sl.quantity_invoiced =1 GROUP BY sl.description, c.salesperson_code ORDER BY c.salesperson_code, sl.description"; // Utför SQL-satsen $result=mysql_query("$sql"); // Skapar en tom array för aktuella säljare $salespersons = array(); // Loppar igenom raderna while($row=mysql_fetch_array($result)) { // Kollar om arrayn för säljaren är deklarerad if (!${$row[0]}) { // Skapar array för säljaren ${$row[0]} = array(); // Lägger in värdena i arrayn - produkt och summering antal produkter ${$row[0]}[$row[1]] = $row[2]; // Lägger in säljaren i arrayn för aktuella sälljare array_push($salespersons, $row[0]); } // Om arrayn reda är deklarerad else { // Lägger in värdena i arrayn - produkt och summering antal produkter ${$row[0]}[$row[1]] = $row[2]; } } // Räknare $count = 0; // Storlek på arrayn innhållande säljare $sales_count = count($salespersons); echo '<b>'.htmlentities('Nyförsäljning per produkt: ').'</b><br>'; // Loopa så länge räknaren är mindre än storleken av arrayn $salespersons while ($count < $sales_count) { echo '<br><b>'.htmlentities($salespersons[$count]).'</b><br>'; foreach (${$salespersons[$count]} AS $key => $value) { if ($key == '') { echo 'Okänd - '.$value.'<br>'; } else { echo htmlentities($key).' - '.$value.'<br>'; } } // Öka värdet på räknaren med 1 $count++; } // PART 2 // SELECT-sats som tar fram alla rader för nyförsäljning grupperat per produkt och säljare $sql = "SELECT c.salesperson_code, sl.description, SUM(sl.unit_price) AS totalt, COUNT(sl.description) AS antal FROM Sales_line AS sl JOIN Customer AS c WHERE sl.sell_to_customer_no = c.no AND (sl.status LIKE '4%' OR sl.status LIKE '5%' OR sl.status LIKE '6%') AND ( LEFT( sl.shipment_date, 2 ) = '$year' AND MID( sl.shipment_date, 4, 2 ) = '$month' ) AND RIGHT( sl.shipment_date, 2 ) = '$day' AND sl.quantity_invoiced = 1 GROUP BY sl.description, c.salesperson_code ORDER BY c.salesperson_code, sl.description"; // Utför SQL-satsen $result=mysql_query("$sql"); // Skapar en tom array för aktuella säljare $salespersons_g = array(); // Loppar igenom raderna while($row=mysql_fetch_array($result)) { // Kollar om arrayn för säljaren är deklarerad if (!${$row[0]}) { // Skapar array för säljaren ${$row[0]} = array(); // Lägger in värdena i arrayn - produkt och summering antal produkter ${$row[0]}[$row[1]] = $row[2]; // Lägger in säljaren i arrayn för aktuella sälljare array_push($salespersons_g, $row[0]); } // Om arrayn reda är deklarerad else { // Lägger in värdena i arrayn - produkt och summering antal produkter ${$row[0]}[$row[1]] = $row[2]; } } // Räknare $count_g = 0; // Storlek på arrayn innhållande säljare $sales_count_g = count($salespersons_g); echo '<b>'.htmlentities('Godkänd nyförsäljning per produkt: ').'</b><br>'; // Loopa så länge räknaren är mindre än storleken av arrayn $salespersons while ($count_g < $sales_count_g) { echo '<br><b>'.htmlentities($salespersons_g[$count_g]).'</b><br>'; foreach (${$salespersons_g[$count_g]} AS $key => $value) { if ($key == '') { echo 'Okänd - '.$value.'<br>'; } else { echo htmlentities($key).' - '.$value.'<br>'; } } // Öka värdet på räknaren med 1 $count_g++; } // Stänger databasen mysql_close ($link); ?> -- PHP General Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php