SV: One works, but the other doesn't

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



-----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&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


[Index of Archives]     [PHP Home]     [Apache Users]     [PHP on Windows]     [Kernel Newbies]     [PHP Install]     [PHP Classes]     [Pear]     [Postgresql]     [Postgresql PHP]     [PHP on Windows]     [PHP Database Programming]     [PHP SOAP]

  Powered by Linux