SV: [PHP] One works, but the other doesn't
| From: | Jonas Rosling | Date: | Tue, 23 May 2006 11:49:12 +0000 |
| Subject: | SV: [PHP] One works, but the other doesn't | ||
| References: | 1 | Groups: | php.general |
| Request: | Send a blank email to php-general+get-236705@lists.php.net to get a copy of this message | ||
-----Ursprungligt meddelande-----
Från: chris smith [mailto:dmagick@gmail.com]
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 <webmaster@gamearena.se> 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);
?>