PDA

View Full Version : My last question on PHP, promise :)


kjhkjh
09-12-2005, 11:30 PM
I really do appreciate the help that I get on this forum and know that I'm asking a lot. But I learn from all the advice. Thank you.

Here is my final question...

Summarizing what I want to do from the start:

1. I have a form with 4 fields. For example $mobile, $code, $message,
$tickbox

2. I need to confirm that there are no blank values and that the
tickbox is ticked.

3. I need to confirm that $mobile is a number (no other characters)

4. If there are blank values or $mobile contains a value other than a
number, I need error messages and the form to be presented back to them
with the error messages below.

5. Another tricky part is that I need $code to be checked, so that it
is matched to a code in mysql database. Otherwise the user gets
requested to re-enter the code (but hopefully the message and mobile
fields will still be populated from what the user originally put in
each of the fields. This will stop them getting annoyed that the
message they spent 10 mins writing has disappeared after the error.

6. If there are no blanks AND the code matches any code on mysql (I
have a table there with a single field which has 1000 codes) AND the
mobile value is all numbers, then and only then would I like myfile.php
to be actioned which involves sending an email (I have the email bit
all worked out in the myfile.php)

7. The final bit is that on submission If all the above is correct (no
blanks and code confirmed etc...) then I need the code to be deleted
from the mysql table.

I know that this is quite a bit of work but if anyone could help me
with anybit then I would appreciate it.

At the moment I might be doing it the wrong way but have this:


<?php

//substr just to have the php page accept a certain number of
characters, not all that important.

$mobile = substr($_REQUEST["mobile"], 0, 15);
$code = substr($_REQUEST["code"], 0, 8);
$message = substr($_REQUEST["message"], 0, 122);
$tickbox = $_REQUEST["tickbox"];

//will redirect to blanks.php page which is almost the same as the
original form page,
//but with the blanks error message

if (empty(mobile) || empty($code) || empty($message) ||
empty($tickbox)) {
header( "Location: http://www.mysite.com/blanks.php" );

}

//will redirect to bad number page which is almost identical to the
original form page
//but with bad number comment
if (!ereg("^[0-9]{1,}$",$mobile)) {
header( "Location: http://www.mysite.com/badnumber.php" );

}

//the bit that sends the email
//this bit works and so i dont need help on the actual email send
$my_email = "xxx...@xxxxxx.com";

if ($_SERVER['REQUEST_METHOD'] != "POST"){exit;}

$message = "";

while(list($key,$value) =
each($_POST)){if(!(empty($value))){$set=1;}$messag e = $message . "$key:
$value\n\n";} if($set!==1){header("location:
$_SERVER[HTTP_REFERER]");exit;}

$message = "$code
$mobile
$message
$tickbox";

$subject = "subject";
$headers = "From: " . $_POST['senderemail'] . "\n" . "Return-Path: " .
$_POST['senderemail'] . "\n" . "Reply-To: " . $_POST['senderemail'] .
"\n";

mail($my_email,$subject,$message,$headers);

<html>
<head>
</head>
<body>

Actual final page that the user sees after successful form submission
is here in the html.

</body>
</html>

?>


So thats how far I've come with separate .php files for error messages.

But I do need to only have this form submit the email bit if there are
no blanks AND the $mobile only contains numbers AND the $code matches a
code in mysql table.

On submission I would need the used code to be deleted from the table
on mysql.

All help appreciated!

Xenon
09-13-2005, 11:44 AM
instead of
ereg("^[0-9]{1,}$",$mobile)
you can use the is_numeric (http://de2.php.net/manual/de/function.is-numeric.php) function

kjhkjh
09-13-2005, 12:12 PM
Thanks,

Someone else told me that but I can't get it to work.

Do I just replace the lines:


if (!ereg("^[0-9]{1,}$",$mobile)) {
header( "Location: http://www.mysite.com/badnumber.php" );

}


With:

if (is_numeric($mobile)) {
header( "Location: http://www.mysite.com/badnumber.php" );

}


Because this is what I did and it doesn't work like ereg does?


This is as far as I have got with the form field validation bit too. If someone can help me finish this, it may be the quickest $30 paypal they've ever made!

So I add:

$username="username";
$password="password";
$database="databasename";

mysql_connect('localhost',$username,$password);
@mysql_select_db($database) or die( "Unable to select database");

$sql = "select count(*) items from tablename where code = '$code'";
//Run the query
if (items == 0) {
header( "Location: http://www.mysite.com/badcode.php" );

}


With this I'm trying to validate that $code submitted in the form is in a table. If it is progress with the action (sending an email- noted in first post) PLUS then I would need to have this $code value deleted from the mysql database table.

If the value of $code isn't on the table then I have the redirect to http://www.mysite.com/badcode.php

PLEASE help if you can and I will paypal you $50 as soon as I have it working. I'm sure that this is easy for a lot of people.

Thanks.

Marco van Herwaarden
09-13-2005, 12:32 PM
if (!is_numeric($mobile))
You should be using ! (not).

kjhkjh
09-17-2005, 09:51 AM
thanks marco

you've helped me a bunch of times and i really appreciate it.