Jump to content
Larry Ullman's Book Forums

janekoo

Members
  • Posts

    9
  • Joined

  • Last visited

janekoo's Achievements

Newbie

Newbie (1/14)

0

Reputation

  1. Hello, Please help! Thank you. I have a webpage (a member log in page called logcheck.php) which allows members to enter their member name and password, then once the member name (member_name) and password (pass) are validated, i.e. the combination is found in a unique record in the members table in a mysql database called test , then members will be redirected to another page (called byimain.php) on my website using. header('Location: byimain.php'); This works perfectly when I run it on localhost where the mysqli connect function is as follows: $dbc = @mysqli_connect('localhost', 'root', 'password', test') OR die ('Could not connect to MySQL: ' . mysqli_connect_error()); Now I sign up with yahoo as my web hosting. I have to set up access to mySQL and to create a new username and password for mySQL database (phpMyadmin). I also created a database called test to store my members table, and on my members table, I have one row with member_name = janekoo and pass = passjk . Yahoo told me the host now is mysql instead of localhost. So my new mysqli connect function will be: $dbc = @mysqli_connect('mysql', 'xxx', 'yyy', test') OR die ('Could not connect to MySQL: ' . mysqli_connect_error()); where xxx =username and yyy = password I know the mysql part and the validation of the member_name and pass against the members table in the test database are working because for testing, I program to have the sentence "I am in" to display on the member log in page if someone enters janekoo as member_name and passjk as password. And I did get "I am in". But I cannot get the redirection to the byiman.php page with yahoo hosting which I can under localhost. Before Yahoo allows me to set up mySQL access, I have to upgrade my php from version 5.2 to a newer version 5.3. Before my script is under version 5.2, now it is under version 5.3. Will that upgrade cause header('Location: byimain.php'); not to work under yahoo hosting? Once again, the following script works fine under localhost, but not under Yahoo hosting. Under Yahoo hosting, I cannot get the redirect to byimain.php when users enter the correct member name and password. Below is my script in the members log in page: <?php error_reporting (E_ALL ^ E_NOTICE); ?> <!DOCTYPEhtml><html> <head> <title> Login Form </title> <style type="text/css" media="screen"> form div{ margin-bottom: 1em; } </style> </head> <body bgcolor=#FFFFFF> <h1> Log In </h1> <?php $form = "<form action='logcheck.php' method='POST'> <table> <tr> <td> Username: </td> <td> <input type='text' name='member_name' /> </td> </tr> <tr> <td> Password: </td> <td> <input type='password' name ='pass'/> </td> </tr> <tr> <td></td> </tr> <tr> <td></td> <td> <input type='submit' name='submit' value='submit'/> </td> </tr> </table> </form>"; echo $form; ?> <?php //Check for form submission if ($_SERVER['REQUEST_METHOD'] =='POST'){ $m=($_POST['member_name']); $p=($_POST['pass']); // Register the user in the database host = mysql, username = xxx, password = yyy, database = test. $dbc = @mysqli_connect('mysql', 'xxx', 'yyy', 'test') OR die ('Could not connect to MySQL: ' . mysqli_connect_error()); //Retrieve the first_name, and last_name for that email/password combination: $q= "SELECT member_id FROM members WHERE member_name = '$m' AND pass = '$p' "; //Run the query: $r= @mysqli_query($dbc, $q); //Check the results if (mysqli_num_rows($r) == 1) { //if a record is found //Success message header('Location: byimain.php'); }else{//if no record is found //Problem message print '<p style="color: red;"> Incorrect username and password combination. Or username and/or password fields are blank. Please try again! </p>'; } //Close the database connection mysqli_close($dbc); exit(); } ?> </body> </html>
  2. Thank you Hartlysen. I just need some clarification to make sure I understand what you are saying. 1) The double quote statement you brought up at the end will do the same thing as the single quote statement. ( For me personally, the double quote method statement is much easier to understand.) Single quote: echo '<input type="checkbox" name="sp[]" value="' . $k . '"> ' . $v; Double quote : echo "<input type=\"checkbox\" name=\"sp[]\" value=\"$k\"> $v"; 2) If I were to use the double quote method in my form script, can i still use the following in my form processing script? It works if I use the single quote method. include('checkbox_data.php'); if (isset($_POST['sp'])) { foreach ($_POST['sp'] as $v) {$bodysp .='<br>' . $sp[$v];} } 3) $k is a variable but is part of the '<input type ...>' string. So we use single quote in the value section of the '<input type...>' string. In fact, re: value = "'. $k. '" - we have two strings.- the outer double quote string showing what should be contained in the value part of the input type string, and the inner single quote string encompassing the $k. Since we have two strings, we need 2 concatenate operators surrounding the $k - we need them to connect the outer and the inner string. 4) $v is a variable and is not part of the '<input type ...>' string. We only need 1 concatenate operator to connect it with the '<input type ...>' string.
  3. Hello, Thanks to HartleySan and Margaux, I was able to solve my problem. However, instead of just copying the codes HartleySan gave me, I want to understand what I am doing. So I hope someone could enlighten me. To recap, I created 4 product categories using checkbox arrays. In the beginning, I followed the array's chapter in the book and created the following code for my SP category in my form script. <input type="checkbox" name="SP[]" value="SP100" /> S&P 100 Fund <input type="checkbox" name="SP[]" value="SP200" /> S&P 100 Fund and the following code for my SP category in my form processing script if (isset($_POST['SP']) AND is_array($_POST['SP'])) { foreach ($_POST['SP'] as $SP) { print " $SP <br>\n "; HartleySan suggested that I have a separate php file for the arrays and then include it in both my form script and my form processing script. checkbox_data.php <?php $sp = array(1 => 'S&P 100 Fund', 'S&P 200 Fund', 'S&P 300 Fund'); // Other arrays here . That works great by the way. My only problem is I don't understand the codes he suggested as to how to echo the checkbox array in my form script: foreach ($sp as $k => $v) { echo '<input type="checkbox" name="sp[]" value="' . $k . '"> ' . $v; } He wrote: "That way, the array keys would become the values for the posted data." For the array named $SP, I understand that $k refers to the index so in this case, will be 1, 2, 3, and so on. $v refers to the value, on in this case, will be S&P 100 Fund, S&P 200 Fund and so on, it is the echo statement that I have problems with. I understand name should be "sp[]" in order to create the $_POST('sp') array, but I don't understand the value part. value = "'.$k. '" ?? I understand the value should be enclosed in a pair of double quotes, but 1) Why is there a pair of single quotes enclosing .$k.? 2) Why are there 2 periods before and after $k? i.e. (. $k .) Is that used to echo $k one by one e.g. 1 2 3 and so on? 3) As to ( ' . $v)? I understand the ' is to indicate the closing of the echo statement, but can the ' be placed after $v i.e.( .$v' )instead?? In other words, the echo statement does not encompass the .$v?? 4) Finally, what is the period before $v ? Is that used to echo $v one by one e.g. S&P 100 Fund, S&P 200 Fund, What is the difference between 1 period before the $v and 2 periods before and after the $k? I know the codes work, but I would appreciate a brief explanation on how it works. Thank you very much.
  4. Thank you margaux, after I put in the isset code, I did not get the warning anymore. Thanks for your help.
  5. Hello Hartlysan, I need your help. I followed your instructions and created a checkbox_data.php. Codes are as follows: <?php $sp = array(1 => 'S&P 100 Fund', 'S&P 200 Fund', 'S&P 300 Fund', 'S&P 400 Fund' ,'S&P 500 Fund'); $nd = array(1 => 'ND 100 Fund', 'ND 200 Fund', 'ND 300 Fund', 'ND 400 Fund' ,'ND 500 Fund'); $dj = array(1 => 'DJ 100 Fund', 'DJ 200 Fund', 'DJ 300 Fund', 'DJ 400 Fund' ,'DJ 500 Fund'); $ru = array(1 => 'RU 100 Fund', 'RU 200 Fund', 'RU 300 Fund', 'RU 400 Fund' ,'RU 500 Fund'); ?> Then I added the include ('checkbox_data.php) script and the foreach codes for each of my 4 product categories in my form script. <?php include('checkbox_data.php'); ?> <form action="handle_Cat4Form_mailprint.php" method="post" ;> <br> <p style="font-weight:bold;"> Check all products that you want:</p><br> <p style="font-weight:bold;" >S&P Equity Funds</p><br> <?php foreach ($sp as $k => $v) { echo '<input type="checkbox" name="sp[]" value="' . $k . '"> ' . $v; } ?> <br> <br> <p style = "font-weight:bold;">Nasdaq Equity Funds</p><br> <?php foreach ($nd as $k => $v) { echo '<input type="checkbox" name="nd[]" value="' . $k . '"> ' . $v; } ?> <br> <br> <p style = "font-weight:bold;">Dow Jones Equity Funds</p><br> <?php foreach ($dj as $k => $v) { echo '<input type="checkbox" name="dj[]" value="' . $k . '"> ' . $v; } ?> <br> <br> <p style="font-weight:bold;" >Russell Equity Funds</p><br> <?php foreach ($ru as $k => $v) { echo '<input type="checkbox" name="ru[]" value="' . $k . '"> ' . $v; } ?> Then in my form processing script, I have <?php error_reporting (E_ALL ^ E_NOTICE); session_start(); ?> <html> <head> <title> Handle Cat4 Form</title> </head> <body> <?php //this will email the data from Cat1Form.php to Indexcellent and print user confirmation. include('checkbox_data.php'); foreach ($_POST['sp'] as $v) {$bodysp= 'SP selection: ' . $sp[$v];} foreach ($_POST['nd'] as $v) {$bodynd= 'ND selection: ' . $nd[$v];} foreach ($_POST['dj'] as $v) {$bodydj= 'DJ selection: ' . $dj[$v];} foreach ($_POST['ru'] as $v) {$bodyru= 'RU selection: ' . $ru[$v];} When I selected products from only SP, and ND and NOT DJ and RU, the following warning is displayed: Note: line 17 is the foreach code for DJ and line 18 is the foreach code for RU. Warning: Invalid argument supplied for foreach() in C:\xampp\htdocs\Indexcellent\handle_Cat4Form_mailprint.php on line 17 Warning: Invalid argument supplied for foreach() in C:\xampp\htdocs\Indexcellent\handle_Cat4Form_mailprint.php on line 18 If I selected all 4 categories, no warning. How do I get rid of the warnings? One more question. foreach ($_POST['sp'] as $v) {$bodysp= 'SP selection: ' . $sp[$v];} Is it $bodysp or $bodysp. (is the period neccessary after bodysp?) Thanks. Jane
  6. Hello HartleySan, Thank you for your reply. Just one question - where should I place the include script in my script? include('checkbox_data.php'); Should it go to the <head>tag section or the <body> tag section? In the <head> section, I have a <title> tag, a <link> tag to a CSS file, and a <script> tag which is a piece of javascript to make sure user enters username. I don't think the include script should go there. If it should go to the head section, can I put it after the <script> tag? In the <body> section, I have the form tag, should I place the script before the form tag or inside the form tag?? Or it does not matter. Option 1- Before the form tag <?php include('checkbox_data.php'); ?> <form action="handle_CatForm.php" method="post" ;> <br> <p style="font-weight:bold;"> Check all products that you want:</p><br> //Instructions <p style="font-weight:bold;" >S&P Equity Funds</p> <br> //SP category <?php foreach ($sp as $k => $v) { echo '<input type="checkbox" name="sp[]" value="' . $k . '"> ' . $v; } ?> <p style="font-weight:bold;" >ND Equity Funds</p> <br> //ND Category <?php foreach ($nd as $k => $v) { echo '<input type="checkbox" name="nd[]" value="' . $k . '"> ' . $v; } ?> Option 2- Inside the form tag <form action="handle_CatForm.php" method="post" ;> <br> <?php include('checkbox_data.php'); ?> <p style="font-weight:bold;"> Check all products that you want:</p><br> //Instructions <p style="font-weight:bold;" >S&P Equity Funds</p> <br> //SP category <?php foreach ($sp as $k => $v) { echo '<input type="checkbox" name="sp[]" value="' . $k . '"> ' . $v; } ?> Thanks. Jane
  7. Hello HarleySan, Thank you so much for your help and suggestion. I was able to revise my form script (with modification since I don't know how to include your checkbox_data.php). But I need help to revise my form processing script. 1. My form script (Catform.php) I revised my form script as follows: Since I don't know how to include your checkbox_data.php, I put the codes directly inside my form script. For example, in the SP category section, I put the codes (in red) immediately after the paragraph referring to the description of the category - S&P Equity Funds. <p style="font-weight:bold;" >S&P Equity Funds</p> <br> <?php $sp = array(1 => 'S&P 100 Fund', 'S&P 200 Fund', 'S&P 300 Fund', 'S&P 400 Fund', 'S&P 500 Fund'); foreach ($sp as $k => $v) { echo '<input type="checkbox" name="sp[]" value="' . $k . '"> ' . $v; } ?> Similarly for the next category (ND), I put the codes immediately after the paragraph with the description of the category - ND Equity Funds. <p style = "font-weight:bold;">ND Equity Funds</p><br> 2. My form processing script (Handle_Catform.php) - Please help! After I enter the following section (in blue) at the beginning of my script, <?php //this will send the data from CatForm.php to my email address. //Create variables: $to = "my email address"; $username = $_POST['username']; $comments= $_POST['comments'] $headers = "From: $username"; how do I code the $body section if I don't include the checkbox_data.php? I don't think there should be 4 $body sections but only one that incorporates/concatenates all the user input for each category plus $comments Can I have something like: $body = $bodysp +$bodynd + $bodydj + $bpduru + $comment (what should be used instead of the + sign?) Can I have: $body = $bodysp + $bodynd + $bodydj + $bodyru + $comments (what is the correct concatenating symbol to use in this case, I don't think it should be + sign). $sp = array(1 => 'S&P 100 Fund', 'S&P 200 Fund', 'S&P 300 Fund', 'S&P 400 Fund', 'S&P 500 Fund'); foreach ($_POST['sp'] as $v) { $bodysp .= 'SP value: ' . $sp[$v]; } $nd = array(1 => 'ND100 Fund', 'ND 200 Fund', 'ND 300 Fund', 'ND 400 Fund', 'ND 500 Fund'); foreach ($_POST[''nd'] as $v) { $bodynd .= 'ND value: ' . $nd[$v]; } $dj = array(1 => 'DJ100 Fund', 'DJ 200 Fund', 'DJ 300 Fund', 'DJ 400 Fund', 'DJ 500 Fund'); foreach ($_POST[''dj'] as $v) { $bodydj.= 'DJ value: ' . $dj[$v]; } $ru = array(1 => 'RU100 Fund', 'RU 200 Fund', 'RU 300 Fund', 'RU 400 Fund', 'RU 500 Fund'); foreach ($_POST[''ru'] as $v) { $body ru.= 'RU value: ' . $ru[$v]; } mail($to, $subject, $body, $headers); Thanks. Jane
  8. Hello, I have a file called Catform.php which allows users to 1) select products from 4 different product categories and 2) provide comments if they cannot find their product. This php file is linked to another file called handle_Catform.php which processes the user input and mail the input to my email address. Catform.php 1) On the Catform.php, to link to the handle_Catform.php, I used the following code: <form action="handle_Catform.php" method="post" ;> 2) For the 4 product categories, I arranged them using checkbox arrays. For example, for the SP category, I used the following code: <p style="font-weight:bold;" >S&P Equity Funds</p> <br> <input type="checkbox" name="SP[]" value="SP100" /> S&P 100 Fund <input type="checkbox" name="SP[]" value="SP200" /> S&P 200 Fund <input type="checkbox" name="SP[]" value="SP300" /> S&P 300 Fund Then for the other 3 categories (ND, DJ and RU), I just replaced the name from "SP[]" to "ND[]" and so forth. 3) For the user comment, I used textarea. I used the following code: <p style = "font-weight:bold;"> Comments</p> <textarea name="comments" rows="6" cols="60"></textarea> Handle_Catform.php I had no problem capturing and printing the user input from Catform.php. Below is an excerpt of my codes showing how I print input from the SP category and user input comments. <?php //this will receive the data from CatForm.php. //Create variables $username = $_POST['username']; $comments= $_POST['comments']; //Print Greetings print "Congratulations, $username! You have successfully made the following selections: <br> <br>"; //Print category SP if (isset($_POST['SP']) AND is_array($_POST['SP'])) { foreach ($_POST['SP'] as $SP) { print " $SP <br>\n "; } } else { print'No selection for SP<br>'; } //Print comments if (($_POST['comments'])!=""){ print " You provided the following comments: $comments <br>\n "; } else { print'You did not enter any comments. <br>'; } ?> Question: How do I use the mail () function to send the same user input to my email address on Handle_Catform.php? Please help! I tried the following codes but it did not work quite right and I don't know how to incorporate $comments in $body. I just need something like the following: For example, if the user selects only from SP category and provide comments " I want something else", then the email will look like: "From [the username of the user] We have received the following information: SP Selection = whatever user selected ND Selection = DJ Selection = RU Selection = Comments = I want something else." <?php //this will send the data from CatForm.php to my email address. //Create variables: $to = "my email address"; $username = $_POST['username']; $comments= $_POST['comments']; $from = $_POST['username'] $fields = array(); $fields{"SP"} = "SP Selection= "; $fields{"ND"} = "ND Selection= "; $fields{"DJ"} = "DJ Selection= "; $fields{"RU"} = "RU Selection= "; $subject = "Category Selections"; $headers = "From: $username"; $body = "We have received the following information:\n\n"; foreach($fields as $a => ${ $body .= sprintf("%20s: %s\n",$b,$_REQUEST[$a]); } mail($to, $subject, $message, $headers); } ?> Thank you so much. Jane
×
×
  • Create New...