-----Ursprungligt meddelande-----
Från: chris smith [mailto:[EMAIL PROTECTED]
Skickat: den 23 maj 2006 13:38
Till: Jonas Rosling
Kopia: PHP List
Ämne: Re: [PHP] One works, but the other doesn't


On 5/23/06, Jonas Rosling <[EMAIL PROTECTED]> 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&auml;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&auml;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

Reply via email to