PHP 4.0 Bug #9782 Updated: Warning: Undefined variable: HTTP_POST_VARS
| From: | torben@php.net | Date: | Fri, 16 Mar 2001 11:59:15 +0000 |
| Subject: | PHP 4.0 Bug #9782 Updated: Warning: Undefined variable: HTTP_POST_VARS | ||
| Groups: | php.dev | ||
| Request: | Send a blank email to php-dev+get-49057@lists.php.net to get a copy of this message | ||
ID: 9782
Updated by: torben
Reported By: john@neutralize.com
Old-Status: Feedback
Status: Bogus
Bug Type: Strings related
Assigned To:
Comments:
As it says at the end of the mails you get from the Bug Database:
ATTENTION! Do NOT reply to this email!
To reply, use the web interface found at http://bugs.php.net/?id=9782&edit=2
So I'm including your reply here for posterity.
Anyway, your problem appears to be related to scoping. PHP does not
automatically include global variables within local function scope (as
C does, for instance). You need to access it either by using a 'global
$HTTP_POST_VARS;' statement or $GLOBALS['HTTP_POST_VARS'], since you're
attempting to access it from inside a function (save_quote()).
See http://www.php.net/manual/en/language.variables.scope.php
for more
information.
John Stoops writes:
> My PHP page:
>
> <?php
> //
> ****************************************************************************
> **********
> // * Module: startquote.php *
> // * Author: J D Stoops [john@neutralize.com] *
> // * Last Updated: 16/03/2001 *
> // * Version: 1.0 *
> //
> ****************************************************************************
> **********
> // * This is an unpublished work the copyright in which vests in Nuera Ltd.
> *
> // * All rights reserved. *
> // * The information contained herein is the property of Nuera Ltd and is
> supplied *
> // * without liability for errors or omissions. No part may be reproduced,
> disclosed *
> // * or used except as authorised by contract or other written permission.
> *
> // * The copyright and the foregoing restriction on reproduction, disclosure
> and use *
> // * extend to all media in which the information may be embodied.
> *
> //
> ****************************************************************************
> **********
> ?>
> <html>
> <head>
> <title>Start New Quote</title>
> <meta http-equiv="Content-Type" content="text/html;
> charset=iso-8859-1">
> <meta name="Description" content="Starts and saves a new quote for a client
> company of Nuera Limited"
> </head>
> <body bgcolor="#FFFFFF">
> <?php
> // Show form
> function show_form() {
> // Setup database connection
> $conId = odbc_connect ("neuquote", "", "")
> or die ("An error1 has occured/n");
> ?>
> <h1><font face="Arial, Helvetica, sans-serif">Start New
> Quote</font></h1>
> <form name="StartQuote" method="post"
> action="startquote.php">
> <input type="Hidden" name="Action" value="1">
> <table width="60%" border="0">
> <tr>
> <td width="39%"><font face="Arial, Helvetica, sans-serif"
> size="4">Company
> Name </font></td>
> <td width="61%"><font face="Arial, Helvetica, sans-serif"
> size="4">
> <?php
>
> // Select companies to display
> $result = odbc_exec ($conId, "SELECT CompanyId, CompanyName FROM Company
> ORDER BY CompanyName")
> or die ("An error1 has occured/n");
>
> if (odbc_fetch_row ($result)) {
> ?>
> <select name="Company">
> <option value=0>Please select or enter new company name below</option>
> <?php
> // Display all companies found
> echo "<option value=".odbc_result($result,
> "CompanyId").">".odbc_result($result,
> "CompanyName")."</option>";
> while ($row = odbc_fetch_row ($result)) {
> echo "<option value=".odbc_result($result,
> "CompanyId").">".odbc_result($result,
> "CompanyName")."</option>";
> }
> ?>
> </select>
> </font></td>
> </tr>
> <tr>
> <td width="39%"><font face="Arial, Helvetica, sans-serif"
> size="4">New
> Company
> Name </font></td>
> <td width="61%"><font face="Arial, Helvetica, sans-serif"
> size="4">
> <?php
> }
> ?>
> <input type="text" name="CompanyName"
> maxlength="100"></font></td>
> </tr>
> <tr>
> <td width="39%"><font face="Arial, Helvetica, sans-serif"
> size="4">Employee</font></td>
> <td width="61%"><font face="Arial, Helvetica, sans-serif"
> size="4">
> <select name="Employee">
> <option value=0>Please select</option>
> <?php
> // Select employees to display
> $result = odbc_exec ($conId, "SELECT EmployeeId, EmployeeName FROM Employee
> ORDER BY EmployeeName")
> or die ("An error2 has occured/n");
>
> // Display all employees found
> while ($row = odbc_fetch_row ($result)) {
> echo "<option value=".odbc_result($result,
> "EmployeeId").">".odbc_result($result,
> "EmployeeName")."</option>";
> }
> ?>
> </select>
> </font></td>
> </tr>
> <tr>
> <td width="39%"><font face="Arial, Helvetica, sans-serif"
> size="4">Comment</font></td>
> <td width="61%"><font face="Arial, Helvetica, sans-serif"
> size="4">
> <textarea name="Comment"></textarea>
> </font></td>
> </tr>
> <tr>
> <td width="39%"><font face="Arial, Helvetica, sans-serif"
> size="4">Start
> Date </font></td>
> <td width="61%"><font face="Arial, Helvetica, sans-serif"
> size="4">
> <input type="text" name="StartDate" maxlength="10">
> </font></td>
> </tr>
> <tr>
> <td width="39%"><font face="Arial, Helvetica, sans-serif"
> size="4">End
> Date</font></td>
> <td width="61%"><font face="Arial, Helvetica, sans-serif"
> size="4">
> <input type="text" name="EndDate" maxlength="10">
> </font></td>
> </tr>
> </table>
> <p>
> <input type="submit" name="Submit" value="Submit">
> <input type="reset" name="Reset" value="Reset">
> </p>
> </form>
> <?php
> odbc_free_result ($result);
> } // show_form
>
> // start_new_quote
> function
> start_new_quote($companyName,$companyId,$employeeId,$comment,$startDate,$end
> Date) {
> // Check all required inputs are present
> if ($companyId == "0" && $companyName == "") {
> die ("An error1 has occured/n");
> } elseif ($employeeId == "" || $employeeId == "0") {
> die ("An error2 has occured/n");
> } elseif ($startDate == "") {
> die ("An error3 has occured/n");
> } elseif ($endDate == "") {
> die ("An error4 has occured/n");
> }
>
> // Setup database connection
> $conId = odbc_connect ("neuquote", "", "")
> or die ("An error5 has occured/n");
>
> if ($companyId == "0" || $companyId == "") {
> // Insert new company
> $result = odbc_exec ($conId, "INSERT INTO Company (CompanyName) VALUES
> ('".$companyName."')")
> or die ("An error7 has occured/n");
>
> odbc_free_result ($result);
>
> // Select new companyid
> $result = odbc_exec ($conId, "SELECT CompanyId FROM Company WHERE
> CompanyName = '".$companyName."' ORDER BY CompanyId DESC")
> or die ("An error8 has occured/n");
>
> // Store companyid
> if (odbc_fetch_row ($result)) {
> $companyId = odbc_result($result, "CompanyId");
> } else {
> die ("An error7 has occured/n");
> }
> } else {
> // Select company name
> $result = odbc_exec ($conId, "SELECT CompanyName FROM Company WHERE
> CompanyId = ".$companyId."")
> or die ("An error8 has occured/n");
>
> // Store company name
> if (odbc_fetch_row ($result)) {
> $companyName = odbc_result($result, "CompanyName");
> } else {
> die ("An error7 has occured/n");
> }
> }
>
> odbc_free_result ($result);
>
> // Insert new quote
> $result = odbc_exec ($conId, "INSERT INTO Quote (CompanyId, EmployeeId,
> Comment, StartDate, EndDate) VALUES (".$companyId.", ".$employeeId.",
> '".$comment."', #".$startDate."#,
> #".$endDate."#)")
> or die ("An error8 has occured/n");
>
> odbc_free_result ($result);
>
> // Select new quoteid
> $result = odbc_exec ($conId, "SELECT QuoteId FROM Quote WHERE CompanyId =
> ".$companyId." AND EmployeeId = ".$employeeId." ORDER BY QuoteId
> DESC")
> or die ("An error9 has occured/n");
>
> // Store quoteid
> if (odbc_fetch_row ($result)) {
> $quoteId = odbc_result($result, "QuoteId");
> } else {
> die ("An error10 has occured/n");
> }
>
> odbc_free_result ($result);
>
> // Select services
> $result = odbc_exec ($conId, "SELECT * FROM Service")
> or die ("An error11 has occured/n");
> ?>
> <h1><font face="Arial, Helvetica, sans-serif">Select Services Required By
> <?php echo $companyName ?></font></h1>
> <form name="form1" method="post" action="startquote.php">
> <input type="Hidden" name="Action" value="2">
> <input type="Hidden" name="Quote" value=<?php echo $quoteId
> ?>>
> <table width="83%" border="0">
> <tr>
> <td width="0%" height="33"></td>
> <td width="13%" bgcolor="#FFFFFF" height="33"><font
> face="Arial,
> Helvetica, sans-serif" size="4">Service
> Title</font></td>
> <td width="1%" bgcolor="#FFFFFF" height="33"><font
> face="Arial,
> Helvetica, sans-serif" size="4">Use</font></td>
> <td width="15%" height="33"><font face="Arial,
> Helvetica, sans-serif"
> size="4">From</font></td>
> <td width="15%" height="33"><font face="Arial,
> Helvetica, sans-serif"
> size="4">To</font></td>
> <td width="15%" height="33"><font face="Arial,
> Helvetica, sans-serif"
> size="4">No Services</font></td>
> <td width="15%" height="33"><font face="Arial,
> Helvetica, sans-serif"
> size="4">No Units/ Service</font></td>
> <td width="26%" height="33"><font face="Arial,
> Helvetica, sans-serif"
> size="4">Comment</font></td>
> </tr>
> <?php
> $counter = "1";
> while ($row = odbc_fetch_row ($result)) {
> ?>
> <tr>
> <td width="0%" height="13">
> <input type="Hidden" name=Service<?php echo $counter ?> value=<?php
> echo
> odbc_result($result, "ServiceId") ?>>
> </td>
> <td width="13%" bgcolor="#FFFFFF" height="33"><font
> face="Arial,
> Helvetica, sans-serif" size="3"><?php echo odbc_result($result,
> "ServiceTitle") ?></font></td>
> <td width="1%" bgcolor="#FFFFFF" height="33">
> <font face="Arial,
> Helvetica, sans-serif" size="3">
> <input type="checkbox" name=Use<?php echo $counter ?>
> value="checkbox">
> </font></td>
> <td width="15%" height="33"> <font face="Arial,
> Helvetica, sans-serif"
> size="3">
> <input type="text" name=From<?php echo $counter ?>
> maxlength="10"
> size="10">
> </font></td>
> <td width="15%" height="33"> <font face="Arial,
> Helvetica, sans-serif"
> size="3">
> <input type="text" name=To<?php echo $counter ?>
> maxlength="10"
> size="10">
> </font></td>
> <td width="15%" height="33"><font face="Arial,
> Helvetica, sans-serif"
> size="3">
> <input type="text" name=NoServices<?php echo $counter ?>
> maxlength="3" size="6" value="0">
> </font></td>
> <td width="15%" height="33"><font face="Arial,
> Helvetica, sans-serif"
> size="3">
> <input type="text" name=NoUnits<?php echo $counter ?>
> maxlength="3"
> size="6" value="0">
> </font></td>
> <td width="26%" height="33"><font face="Arial,
> Helvetica, sans-serif"
> size="3">
> <textarea name=Comment<?php echo $counter ?>></textarea>
> </font></td>
> </tr>
> <?php
> $counter++;
> }
> $counter--;
> echo "<input type=Hidden name=ServiceCount value=".$counter.">\n";
> ?>
> </table>
> <p>
> <input type="submit" name="Submit" value="Submit">
> <input type="button" name="PayOption" value="Payment
> Options">
> </p>
> </form>
> <?php
> odbc_free_result ($result);
> } // start_new_quote
>
> // Save new quote
> function save_quote($quoteId,$noServices) {
> $counter = "1";
> while ($counter <= $noServices) {
> $serviceId = $HTTP_POST_VARS['Service$counter'];
> $use = $HTTP_POST_VARS["Use".$counter];
> $from = $HTTP_POST_VARS["From".$counter];
> $to = $HTTP_POST_VARS["To".$counter];
> $noServicesUsed = $HTTP_POST_VARS["NoServices".$counter];
> $noUnits = $HTTP_POST_VARS["NoUnits$counter"];
> $comment = $HTTP_POST_VARS["Comment.$counter"];
>
> // Would save to db as opposed to being printed out
> echo $serviceId." Use: ".$use." From: ".$from." To:
> ".$to." No Services:
> ".$noServicesUsed." No Units: ".$noUnits." Comment:
> ".$comment."<br>";
> $counter++;
> }
> } // save_quote
>
> // Check action
> if (@$HTTP_POST_VARS['Action']) {
> // Get action to perform
> $action = $HTTP_POST_VARS['Action'];
> } else {
> $action = "0";
> }
>
> // Start new quote
> if ($action == "1") {
>
>
> start_new_quote($HTTP_POST_VARS['CompanyName'],@$HTTP_POST_VARS['Company'],$
>
> HTTP_POST_VARS['Employee'],$HTTP_POST_VARS['Comment'],$HTTP_POST_VARS['Start
> Date'],$HTTP_POST_VARS['EndDate'], "0");
>
> // Save new quote
> } elseif ($action == "2") {
> save_quote($HTTP_POST_VARS['Quote'],$HTTP_POST_VARS['ServiceCount']);
>
> // Show new quote input form
> } else {
> show_form();
> }
> ?>
> </body>
> </html>
>
> -----Original Message-----
> From: Bug Database [mailto:php-dev@lists.php.net]
> Sent: Friday, March 16, 2001 11:38
> To: john@neutralize.com
> Subject: PHP 4.0 Bug #9782 Updated: Warning: Undefined variable:
> HTTP_POST_VARS
>
>
> ID: 9782
> Updated by: sniper
> Reported By: john@neutralize.com
> Old-Status: Open
> Status: Feedback
> Bug Type: Strings related
> Assigned To:
> Comments:
>
> It would be easier to find what is wrong with your example
> if it would have been complete.
> Try these in your script:
>
> print_r($HTTP_POST_VARS);
> print_r($HTTP_GET_VARS);
>
> --Jani
>
>
> Previous Comments:
> ---------------------------------------------------------------------------
>
> [2001-03-16 06:32:14] john@neutralize.com
> The number of inputs from my form varies so I have distinguished them using
> a counter that increments for each record:
>
> <input type="text" name=Service<?php echo $counter ?>
> size="10">
>
> When requesting them from the header I loop through using another counter:
>
> while ($counter <= $noServices) {
> $serviceId = $HTTP_POST_VARS['Service$counter'];
> $counter++
> }
>
> No matter how I try to build the name of the post variable I always get the
> following error:
>
> Warning: Undefined variable: HTTP_POST_VARS in
> C:Inetpubwwwroot/php/neuquote/startquote.php on line 251
>
> I have tried buiding the string as follows:
>
> 'Service$counter'
> 'Service'.$counter
> "Service".$counter
> $postVar = "Service".$counter // put $postVar between []
>
> I have done this in ASP before and from what I have seen from PHP so far it
> is more powerful, thus hopefully one of u guys can help by a different
> string build or a different approuch to creating the inputs
>
> Thank you for your time.
>
> John Stoops, Neutralize (**)
>
> ---------------------------------------------------------------------------
Previous Comments:
---------------------------------------------------------------------------
[2001-03-16 06:37:43] sniper@php.net
It would be easier to find what is wrong with your example
if it would have been complete.
Try these in your script:
print_r($HTTP_POST_VARS);
print_r($HTTP_GET_VARS);
--Jani
---------------------------------------------------------------------------
[2001-03-16 06:32:14] john@neutralize.com
The number of inputs from my form varies so I have distinguished them using a counter that
increments for each record:
<input type="text" name=Service<?php echo $counter ?> size="10">
When requesting them from the header I loop through using another counter:
while ($counter <= $noServices) {
$serviceId = $HTTP_POST_VARS['Service$counter'];
$counter++
}
No matter how I try to build the name of the post variable I always get the following error:
Warning: Undefined variable: HTTP_POST_VARS in C:Inetpubwwwroot/php/neuquote/startquote.php on line
251
I have tried buiding the string as follows:
'Service$counter'
'Service'.$counter
"Service".$counter
$postVar = "Service".$counter // put $postVar between []
I have done this in ASP before and from what I have seen from PHP so far it is more powerful, thus
hopefully one of u guys can help by a different string build or a different approuch to creating the
inputs
Thank you for your time.
John Stoops, Neutralize (**)
---------------------------------------------------------------------------
ATTENTION! Do NOT reply to this email!
To reply, use the web interface found at http://bugs.php.net/?id=9782&edit=2