This is a discussion on why doesn't this delete the record I want it to delete? within the alt.comp.lang.php forums, part of the PHP Programming Forums category; <?php //db & table names used to connect include ("connect.php"); //display a list of names preceeded ...
|
|||||||
| FAQ | Members List | Calendar | Search | Today's Posts | Mark Forums Read |
|
|||
|
<?php
//db & table names used to connect include ("connect.php"); //display a list of names preceeded by id # include ("display_names.php"); ?> <p>Which record would you like to delete?</p> <P>Enter Record #<br> <input type=text name="id" size=20> <input type=submit name="submit" value="Delete Record"> <?php mysql_query("DELETE FROM testtable WHERE id=$id"); ?> The above deletes the last record in the table. Obviously it's not getting the # that is being entered. Any help? Thanks. Robert |
|
|||
|
first i would put your HTML piece inside a FORM tag and speficy it to go as
POST, and from there use the fields to perform the delete. like in the following example <form action="<?php echo $_SERVER['REQUEST_URI']; ?>" method="post"> <p>Which record would you like to delete?</p> <P>Enter Record #<br> <input type=text name="id" size=20> <input type=submit name="submit" value="Delete Record"> </form> This form would basically reload the same page but pass the FORM information to it, and form there in your SQL query you would use something like that: if (!empty($_POST)) { mysql_query("DELETE FROM testtable WHERE id='{$_POST['id']}'"); } i enclosed it within an IF statement so that it does not get called if the $_POST array is empty. Eventually you would want to add more validation such as checking the referrer page to ensure that the delete request came from this page only (and not from another domain who might want to try to hijack your form) Hope this helps. Steve. "Mr. Newt" <lektrikpuke@_yahoo.com> wrote in message news:EICdnVlmxetj3GnYnZ2dnUVZ_qunnZ2d@comcast.com. .. > <?php > //db & table names used to connect > include ("connect.php"); > //display a list of names preceeded by id # > include ("display_names.php"); > ?> > <p>Which record would you like to delete?</p> > <P>Enter Record #<br> > <input type=text name="id" size=20> > <input type=submit name="submit" value="Delete Record"> > <?php > mysql_query("DELETE FROM testtable WHERE id=$id"); > ?> > > The above deletes the last record in the table. Obviously it's not > getting > the # that is being entered. Any help? > > Thanks. > > Robert > > |
|
|||
|
Thanks Steve. Works great.
"Steve Belanger" <desktop@ebinformatique.com> wrote in message news:XKYIh.76303$cE3.52823@edtnps89... > first i would put your HTML piece inside a FORM tag and speficy it to go > as POST, and from there use the fields to perform the delete. like in the > following example > > <form action="<?php echo $_SERVER['REQUEST_URI']; ?>" method="post"> > <p>Which record would you like to delete?</p> > <P>Enter Record #<br> > <input type=text name="id" size=20> > <input type=submit name="submit" value="Delete Record"> > </form> > > This form would basically reload the same page but pass the FORM > information to it, and form there in your SQL query you would use > something like that: > > if (!empty($_POST)) > { > mysql_query("DELETE FROM testtable WHERE id='{$_POST['id']}'"); > } > > i enclosed it within an IF statement so that it does not get called if the > $_POST array is empty. Eventually you would want to add more validation > such as checking the referrer page to ensure that the delete request came > from this page only (and not from another domain who might want to try to > hijack your form) > > Hope this helps. > > Steve. > > "Mr. Newt" <lektrikpuke@_yahoo.com> wrote in message > news:EICdnVlmxetj3GnYnZ2dnUVZ_qunnZ2d@comcast.com. .. >> <?php >> //db & table names used to connect >> include ("connect.php"); >> //display a list of names preceeded by id # >> include ("display_names.php"); >> ?> >> <p>Which record would you like to delete?</p> >> <P>Enter Record #<br> >> <input type=text name="id" size=20> >> <input type=submit name="submit" value="Delete Record"> >> <?php >> mysql_query("DELETE FROM testtable WHERE id=$id"); >> ?> >> >> The above deletes the last record in the table. Obviously it's not >> getting >> the # that is being entered. Any help? >> >> Thanks. >> >> Robert >> >> > > |
|
|||
|
no problem. ask anytime.
"Mr. Newt" <lektrikpuke@_yahoo.com> wrote in message news:vs2dnTxRTpow9WnYnZ2dnUVZ_o6gnZ2d@comcast.com. .. > Thanks Steve. Works great. > > "Steve Belanger" <desktop@ebinformatique.com> wrote in message > news:XKYIh.76303$cE3.52823@edtnps89... >> first i would put your HTML piece inside a FORM tag and speficy it to go >> as POST, and from there use the fields to perform the delete. like in the >> following example >> >> <form action="<?php echo $_SERVER['REQUEST_URI']; ?>" method="post"> >> <p>Which record would you like to delete?</p> >> <P>Enter Record #<br> >> <input type=text name="id" size=20> >> <input type=submit name="submit" value="Delete Record"> >> </form> >> >> This form would basically reload the same page but pass the FORM >> information to it, and form there in your SQL query you would use >> something like that: >> >> if (!empty($_POST)) >> { >> mysql_query("DELETE FROM testtable WHERE id='{$_POST['id']}'"); >> } >> >> i enclosed it within an IF statement so that it does not get called if >> the $_POST array is empty. Eventually you would want to add more >> validation such as checking the referrer page to ensure that the delete >> request came from this page only (and not from another domain who might >> want to try to hijack your form) >> >> Hope this helps. >> >> Steve. >> >> "Mr. Newt" <lektrikpuke@_yahoo.com> wrote in message >> news:EICdnVlmxetj3GnYnZ2dnUVZ_qunnZ2d@comcast.com. .. >>> <?php >>> //db & table names used to connect >>> include ("connect.php"); >>> //display a list of names preceeded by id # >>> include ("display_names.php"); >>> ?> >>> <p>Which record would you like to delete?</p> >>> <P>Enter Record #<br> >>> <input type=text name="id" size=20> >>> <input type=submit name="submit" value="Delete Record"> >>> <?php >>> mysql_query("DELETE FROM testtable WHERE id=$id"); >>> ?> >>> >>> The above deletes the last record in the table. Obviously it's not >>> getting >>> the # that is being entered. Any help? >>> >>> Thanks. >>> >>> Robert >>> >>> >> >> > > |
|
|||
|
"Mr. Newt" <lektrikpuke@_yahoo.com> wrote in message
news:EICdnVlmxetj3GnYnZ2dnUVZ_qunnZ2d@comcast.com. .. > <?php > //db & table names used to connect > include ("connect.php"); > //display a list of names preceeded by id # > include ("display_names.php"); > ?> > <p>Which record would you like to delete?</p> > <P>Enter Record #<br> > <input type=text name="id" size=20> > <input type=submit name="submit" value="Delete Record"> > <?php > mysql_query("DELETE FROM testtable WHERE id=$id"); > ?> > > The above deletes the last record in the table. Obviously it's not > getting > the # that is being entered. Any help? > > Thanks. > > Robert > > Looks correct. Comment out the deletion line and add in echo "Record to be deleted is $id"; To check the id of the record to go. You could also query the table to check that there is only only record with the matching 'id'. Sean |
|
|||
|
if he does not specify a form to submit to then it will likely not work as
intended. Not to mention that depending of server configuration (for instance register_globals being at Off) then it will not work as php will not know where $id is coming from. "Sean" <sean.anderson@[nospam]oakleafgroup.biz> wrote in message news:1173698341.123284@kestrel.skynet.co.uk... > "Mr. Newt" <lektrikpuke@_yahoo.com> wrote in message > news:EICdnVlmxetj3GnYnZ2dnUVZ_qunnZ2d@comcast.com. .. >> <?php >> //db & table names used to connect >> include ("connect.php"); >> //display a list of names preceeded by id # >> include ("display_names.php"); >> ?> >> <p>Which record would you like to delete?</p> >> <P>Enter Record #<br> >> <input type=text name="id" size=20> >> <input type=submit name="submit" value="Delete Record"> >> <?php >> mysql_query("DELETE FROM testtable WHERE id=$id"); >> ?> >> >> The above deletes the last record in the table. Obviously it's not >> getting >> the # that is being entered. Any help? >> >> Thanks. >> >> Robert >> >> > > Looks correct. > > Comment out the deletion line and add in > > echo "Record to be deleted is $id"; > > To check the id of the record to go. > > You could also query the table to check that there is only only record > with the matching 'id'. > > > > > > Sean > > |
|
|||
|
"Steve Belanger" <desktop@ebinformatique.com> wrote in message news:jPnJh.90170$cE3.1083@edtnps89... > if he does not specify a form to submit to then it will likely not work as > intended. Not to mention that depending of server configuration (for > instance register_globals being at Off) then it will not work as php will > not know where $id is coming from. > > Good point(s). |