开发者

Help with a T_ELSE parse error: syntax error [closed]

This question is unlikely to help any future visitors; it is only relevant to a small geographic area, a specific moment in time, or an extraordinarily narrow situation that is not generally applicable to the worldwide audience of the internet. For help making this question more broadly applicable, visit the help center. Closed 9 years ago.
<?php

switch($_GET["action"])
{
case "add_item":
{
AddItem($_GET["ids"], $_GET["qty"]);
ShowCart();
break;
}
case "update_item":
{
UpdateItem($_GET["ids"], $_GET["qty"]);
ShowCart();
break;
}
case "remove_item":
{
RemoveItem($_GET["ids"], $_GET["id"]);
ShowCart();
break;
}
default:
{
ShowCart();
}
}
function AddItem($itemId, $qty){


$result = mysql_query("SELECT COUNT(*) FROM cart WHERE cookieId = '" . GetCartId() . "' AND id = $itemId");

$row = mysql_fetch_row($result);
$numRows = $row[0];

if($numRows == 0)
{
// This item doesn't exist in the users cart,
// we will add it with an insert query

mysql_query("INSERT INTO cart(cookieId, id, qty) values('" . GetCartId() . "', $itemId, $qty)");
//printf ("Inserted records: %d\n", mysql_affected_rows());

}
else
{
// This item already exists in the users cart,
// we will update it instead
 mysql_query("UPDATE cart SET qty = $qty WHERE cookieId = '" . GetCartId() . "' AND id = $itemId");

}

}

function UpdateItem($itemId, $qty)
{

mysql_query("UPDATE cart SET qty = $qty WHERE cookieId = '" . GetCartId() . "' AND id = $itemId");
//printf ("Updated records: %d\n", mysql_affected_rows());

}

function RemoveItem($itemId) 
{

mysql_query("DELETE FROM cart WHERE cookieId = '" . GetCartId() . "' AND id = $itemId");
}
echo $ids;
?>

<?php 
function ShowCart()

{

$result = mysql_query("SELECT
              cart.id         cart_id,
              cart.id         cart_id,
              cart.cartId     cartId,
              cart.cookieId   cookie_Id,
              cart.qty        qt_y,                     
              cdkb.id         cdkb_id,
              cdkb.name       name,
              cdkb.image      image,
              cdkb.price      price,
              dkb.id          dkb_id,
              dkb.name        name1, 
              dkb.image       image1,
              dkb.price       price2,
              dbl.product_id  product_id,
          dbl.price       price3,
          dbl.variety     variety,
          dbl.description description                  
    FROM
    cart


    LEFT OUTER JOIN cdkb
       ON cart.id = cdkb.id    

    LEFT OUTER JOIN dkb
       ON cart.id = dkb.id

    LEFT OUTER JOIN dbl
       ON dbl.id = dkb.id 


WHERE
    cart.cookieId ='" . GetCartId() . "' ' ORDER BY cdkb.name AND dkb.name ASC");?>

<div id="cart">
<div id="group">
<div id="quantity">Qty</div>
<div id="cartpic">Pic</div>
<div id="product">Product</div>
<div id="cartprice">Price</div>
<div id="remove">Remove</div>
</div>
<?php

$totalCost=0;
foreach($result as $row)
{  
if($row['ckb_id']){
// Increment the total cost of all items
$totalCost += ($row["qt_y"] * $row["price"]);

?>

<div id="cart1">
<select name="<?php echo $row["cdkb_id"];?>" onChange="UpdateQty(this)">
<?php  print($row["cdkb_id"]);?>
<?php

for($i = 1; $i <= 30; $i++)
{
echo "<option ";
if($row["qt_y"] == $i)
{
echo " SELECTED ";
}
echo ">" . $i . "</option>";
}
?>
</select>
</div>
<div id="cart2">
<img src="images/logopic.gif"<?php /*?><?php echo $row["image"]; ?><?php */?> alt="we" width="60" height="50" />
</div>
<div id="cart3"><p><?php echo $row["name"]; ?></p></div>



<div id="cart4"><p>
$<?php echo number_format($row["price"], 2, ".", ","); ?></p></div>

<div id="cart5">
<p><?php
printf('<a href="cart.php?action=remove_item&id=%d&ids=%d&register=%s">Remove</a>', $_GET['id'], $row['cdkb_id'], $_GET['register']);
?></p></div>

<hr size="1" color="red" >

<script language="JavaScript">

function UpdateQty(item)
{
itemId = item.name;
newQty = item.options[item.selectedIndex].text;

document.location.href = 'cart.php?action=update_item&id='+itemId+'&qty='+newQty;
}

</script>






<?php
}
?>
<?php
else {
?>
<?php // Increment the total cost of all items
$totalCost += ($row["qt_y"] * $row["price2"]);

?>

<div id="cart1">
<select name="<?php echo $row["dkb_id"];?>" onChange="UpdateQty(this)">
<?php  print($row["dkb_id"]);?>
<?php

for($i = 1; $i <= 30; $i++)
{
echo "<option ";
if($row["qt_y"] == $i)
{
echo " SELECTED ";
}
echo ">" . $i . "</option>";
}
?>
</select>
</div>
<div id="cart2">
<img src="images/logopic.gif"<?php /*?><?php echo $row["image2"]; ?><?php */?> alt="we" width="60" height="50" />
</div>
<div id="cart3"><p><?php echo $row["name2"]; ?></p></div>

<?php foreach ($row['dkb_id'] as $variety) {?>
<div id="cart4">
   <?php echo"<p>".$variety['variety']. " ~ " . $variety['price3'] . "</p>" ?>
<p>$<?php echo number_format($row["price3"], 2, ".", ","); ?></p></div>
<?php } ?>
<div id="cart5">
<p><?php
printf('<a href="cart.php?action=remove_item&id=%d&ids=%d&register=%s">Remove</a>', $_GET['id'], $row['dkb_id'], $_GET['register']);
?></p></div>

<hr size="1" color="red" >

<script language="JavaScript">

function UpdateQty(item)
{
itemId = item.name;
newQty = item.options[item.selectedIndex].text;

document.location.href = 'cart.php?action=update_item&id='+itemId+'&qty='+newQty;
}

</script>




<font face="verdana" size="2" color="black" style="clear:right;">
<b>Total: $<?php echo number_format($totalCost, 2, ".", ","); ?></b></font></td>


<?php } ?>
<?php } ?>
<div id="shopping">
<a href=<?php echo "exa2.php?id=".intval($id).  '&register='. $_GET['register']. ""?>> Keep Shopping</a></div>
<?php /*?><tr>
<td colspan="4">
<font face="verdana" size="1" color="black">
<a href=<?php echo "cart.php?开发者_运维百科id=".intval($id).  '&register='. $_GET['register']. ""?>>Your Shopping Cart</a></font></td>
</tr><?php */?>

</tr>
</table>

</table>

Hi For those who has commented on Help with a unexpected T_ELSE this is the subsequent thread I couldn't post int he other account because accessibility issues.

In the code above below the query there will be an if and else statement sequence that is causing a parse errror: syntax error, as it fallows Parse error: syntax error, unexpected T_ELSE. Look at the if and else statment design and what's possiblly causing this error.

if {
  for (blabla) {
    if {

    }// end of if statement inside the for loop

  } //end of for loop.

} end of if statement 
else{ // line 379


}// end of else statement

What I believe is causing the T_ELSE syntax error above as I said in the last post is the if statement inside the for loop. Php believes that the else statement is working together with the if statement inside the for loop and what I want is the if statement outside the for loop work together with the else statement. The error looks like this:

PS everything that possibly causing the parse error is below the query. thanks.

The INTENDED DISPLAY in between the if and else would look like

foreach($result as $row)
    {  
    if (table cdkb) { 
      [1]qyt         image      name          price        remove
         1            ---       marina        $18.90        remove?    
         }end of if statement
    Else table dkb {
       1]qyt            Image         Name             Price                  Remove
         1               ---         marina         Small Tray  $18.90        remove? 
                                                    Medium Tray $30.24
                                                    Large Tray  $35.90
                      } // end of else statement

                      }//end of while loop

This is the array structure behind the INTENDED display!

<?php
$result = array(
        '0' => array('cdkb_id' => 'id 1',
            'image' => 'img 1',
            'name' => 'name 1',
            'price' => 'price 1'
            ),
        '1' => array('image1' => 'img 2',
            'name1' => 'name 2',
            'dkb_id' => array('0' => array('variety' => 'variety 2-1',
                         'price3' => 'price 2-1'
                        ),
                    '1' => array('variety' => 'variety 2-2',
                         'price3' => 'price 2-2'
                        ),
                    '2' => array('variety' => 'variety 2-3',
                         'price3' => 'price 2-3'
                        )
                    )
            ),
        '2' => array('cdkb_id' => 'id 3',
            'image' => 'img 3',
            'name' => 'name 3',
            'price' => 'price 3'
            ),
        '3' => array('image1' => 'img 4',
            'name1' => 'name 4',
            'dkb_id' => array('0' => array('variety' => 'variety 4-1',
                         'price3' => 'price 4-1'
                        ),
                    '1' => array('variety' => 'variety 4-2',
                         'price3' => 'price 4-2'
                        ),
                    '2' => array('variety' => 'variety 4-3',
                         'price3' => 'price 4-3'
                        )

The only thing on the way is the T_ELSE because there is an if in between the if and else statement inside the for loop....

Thank.


Notice this bit:

<?php 
} 
?> 
<?php 
else { 
?> 

Have you tried NOT splitting the ending of the if and the else into two different code blocks? I strongly doubt the parser will maintain that kind of context: the first block works to terminate the if block, and since it doesn't read an else, it assumes you're done with it. Thus, the else you have in the next block is disconnected from your if.

The idea that the else would somehow connect to the innermost if is entirely wrong. The grammar would be far too broken if that were possible.


Your code definitely needs a major cleanup. Indentation isn't something you only hear about at a dentist's office. It's used to give your code visual structure and make it much easier to see at a glance where code belongs in a series of nest brackets. You essentially have NO indentation whatsoever, except for, oddly enough, the mysql query, which is beautifully formatted.

Since PHP's spitting out an 'unexpected else', that means you've got too many or too few brackets somewhere, or have something like this:

if ($condition) {
} else {
} else {
}

Clean up your code, use proper formatting, and I'd suggest using an editor, such as VI, which can help you find missing/extra brackets (the '%' command in VI, to bounce between matched brackets).


@Mark Byers below there is a simpler version of the code above and it has three if statement two before the else one inside a for each loop and another inside the for loop I want the one at the foreach loop to pair up with the else statement.

<?php
$totalCost=0;
foreach($result as $row)
{  
if($row['ckb_id']){ if statement that will match the else statement..
// Increment the total cost of all items
$totalCost += ($row["qt_y"] * $row["price"]);

?>

<div id="cart1">
<select name="<?php echo $row["cdkb_id"];?>" onChange="UpdateQty(this)">
<?php  print($row["cdkb_id"]);?>
<?php

for($i = 1; $i <= 30; $i++)
{
echo "<option ";
if($row["qt_y"] == $i) // if statement inside the for loop
{
echo " SELECTED ";
}
echo ">" . $i . "</option>";
}
?>
</select>
</div>
<div id="cart2">
<img src="images/logopic.gif"<?php /*?><?php echo $row["image"]; ?><?php */?> alt="we" width="60" height="50" />
</div>
<div id="cart3"><p><?php echo $row["name"]; ?></p></div>



<div id="cart4"><p>
$<?php echo number_format($row["price"], 2, ".", ","); ?></p></div>

<div id="cart5">
<p><?php
printf('<a href="cart.php?action=remove_item&id=%d&ids=%d&register=%s">Remove</a>', $_GET['id'], $row['cdkb_id'], $_GET['register']);
?></p></div>

<hr size="1" color="red" >

<script language="JavaScript">

function UpdateQty(item)
{
itemId = item.name;
newQty = item.options[item.selectedIndex].text;

document.location.href = 'cart.php?action=update_item&id='+itemId+'&qty='+newQty;
}

</script>






<?php
} // end of if statement
?>
<?php
else { // beginning of else statement
?>
<?php // Increment the total cost of all items
$totalCost += ($row["qt_y"] * $row["price2"]);

?>

<div id="cart1">
<select name="<?php echo $row["dkb_id"];?>" onChange="UpdateQty(this)">
<?php  print($row["dkb_id"]);?>
<?php

for($i = 1; $i <= 30; $i++)
{
echo "<option ";
if($row["qt_y"] == $i)
{
echo " SELECTED ";
}
echo ">" . $i . "</option>";
}
?>
</select>
</div>
<div id="cart2">
<img src="images/logopic.gif"<?php /*?><?php echo $row["image2"]; ?><?php */?> alt="we" width="60" height="50" />
</div>
<div id="cart3"><p><?php echo $row["name2"]; ?></p></div>

<?php foreach ($row['dkb_id'] as $variety) {?>
<div id="cart4">
   <?php echo"<p>".$variety['variety']. " ~ " . $variety['price3'] . "</p>" ?>
<p>$<?php echo number_format($row["price3"], 2, ".", ","); ?></p></div>
<?php } ?>
<div id="cart5">
<p><?php
printf('<a href="cart.php?action=remove_item&id=%d&ids=%d&register=%s">Remove</a>', $_GET['id'], $row['dkb_id'], $_GET['register']);
?></p></div>

<hr size="1" color="red" >

<script language="JavaScript">

function UpdateQty(item)
{
itemId = item.name;
newQty = item.options[item.selectedIndex].text;

document.location.href = 'cart.php?action=update_item&id='+itemId+'&qty='+newQty;
}

</script>




<font face="verdana" size="2" color="black" style="clear:right;">
<b>Total: $<?php echo number_format($totalCost, 2, ".", ","); ?></b></font></td>


<?php } ?>
<?php } ?>
<div id="shopping">
<a href=<?php echo "exa2.php?id=".intval($id).  '&register='. $_GET['register']. ""?>> Keep Shopping</a></div>
<?php /*?><tr>
<td colspan="4">
<font face="verdana" size="1" color="black">
<a href=<?php echo "cart.php?id=".intval($id).  '&register='. $_GET['register']. ""?>>Your Shopping Cart</a></font></td>
</tr><?php */?>

</tr>
</table>

</table>
0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜