Chapter 11: User Input

HTML form - ஐ php file -க்கு submit செய்து form -ல் உள்ள value களை பெறலாம்.

HTML Form

ஒரு HTML form ற்கு இரண்டு attribute கள் தேவைப்படுகிறது. ஒன்று action ம் மற்றொன்று method ஆகும்.


<!doctype html>
 <html> 
 <body> 
  <form action="datapage.php" method="post"> 
   <input type="text" name="txtName"> 
   <input type="submit"> 
  </form> 
</body>
</html> 
                

எந்த page -க்கு அனுப்ப வேண்டும் என்பதை Action attribute -ல் குறிப்பிடலாம். Get / Post மூலம் form data க்களை பெறுவதற்கு method பயன்படுத்தப்படுகிறது.

Sending With POST

Post method மூலமாக அனுப்பப்படும் data க்களை $_POST array மூலம் பெறப்படுகிறது. இவ்வகை data க்களை URL -ல் காண முடியாது.
<?php 
//datapage.php
echo $_POST['txtName'];
                
?>

Sending with GET

Get method மூலமாக அனுப்பப்படும் data க்களை $_GET array மூலம் பெறப்படுகிறது. இவ்வகை data க்களை URL (Address bar)-ல் காண முடியும்.

<!doctype html>
 <html> 
 <body> 
  <form action="datapage.php" method="get"> 
   <input type="text" name="txtName"> 
   <input type="submit" name="btnSubmit"> 
  </form> 
  <a href="datapage.php?frmName=sample">Form Data</a>
</body>
</html> 
                
<?php 
//datapage.php
echo $_GET['txtName'];
 
echo $_GET['frmName'];               
?>

Request Array

பெறப்படும் தகவல்கள் GET / POST எதுவாகினும் $_REQUEST என்ற array மூலம் பெறலாம்.
<?php 
//datapage.php
echo $_REQUEST['frmName'];
              
?>

Submitting Array

Form element -ன் பெயருக்கு பின்னால் Square braket கொடுப்பதன் மூலம் அவைகள் group array வாக கருதப்படும். இவைகள் பெரும்பாலும் textbox, select, textarea or checkbox களுக்கு பயன்படுத்தப்படும். Square braket -க்குள் பெயரும் வைத்து அனுப்பலாம்.

Array Textbox

<!doctype html>
 <html> 
 <body> 
  <form action="datapage.php" method="post"> 
   <input type="text" name="txtName[]" placeholder="First Name" > 
   <input type="text" name="txtName[]" placeholder="Last Name" > 
    <input type="text" name="txtName[middle]" placeholder="Middle Name" > 
   <input type="submit" value="Submit"> 
  </form> 
</body>
</html> 
                
Getting Value From Array Textbox Using Post Method
<?php 
//datapage.php
 if(isset($_POST['txtName'])){
 
echo $_POST['txtName'][0];
echo "<br/>";
echo $_POST['txtName'][1];
echo "<br/>";
echo $_POST['txtName']['middle'];
              
   }
?>

Form submition Post method -க்கு பதிலாக Get method - ல் கூட அனுபலாம்.

Getting Value From Array Checkbox Using Post Method

<!doctype html>
 <html> 
 <body> 
  <form action="datapage.php" method="post"> 
 <label for="chkDrinks">Coffee</label>  
 <input type="checkbox" name="txtDrinks[]" value="Coffee" > 
 
 <label for="chkDrinks">Tea</label> 
 <input type="checkbox" name="txtDrinks[]" value="Tea" >
 
 <label for="chkDrinks">Cooldrinks</label>  
 <input type="checkbox" name="txtDrinks[]" value="Cooldrinks" > 
   <input type="submit" value="Submit"> 
  </form> 
</body>
</html> 
                
HTML Form Output

Coffee மற்றும் Cooldrinks ஐ மட்டும் தேர்வு செய்திருந்தால் நாம் எப்படி அதன் value -க்களை பெறுவது?

<?php 
//datapage.php
 if(isset($_POST['txtDrinks'][0])){
 	echo $_POST['txtDrinks'][0];
 }
 if(isset($_POST['txtDrinks'][1])){
	echo "<br/>";
	echo $_POST['txtDrinks'][1];
}
if(isset($_POST['txtDrinks'][2])){
	echo "<br/>";
	echo $_POST['txtDrinks'][2];
              
  }
?>
Getting Array Value From Select Control

<!doctype html>
 <html> 
 <body> 
  <form action="datapage.php" method="post"> 
 
  <select name="optFruits[]" size="3" multiple="true"> 
  
   <option value="Apple">Apple</option> 
 
   <option value="Bannana">Bannana</option> 
  
   <option value="Kiwi">Kiwi</option> 
  
 </select> 
 
   <input type="submit" value="Submit"> 
  </form> 
</body>
</html> 
                
HTML Form Output

Select option -ல் ஒன்றுக்கு மேற்ப்பட்ட option -களை தேர்வு செய்திருந்தால் அதனை எப்படி பெறுவது?

GET method ல் ஒரு form அனுப்பப்படும்பொழுது ?optFruits[]=Apple&optFruits[]=Kiwi வடிவில் பெறப்படும்.


<?php 
if(isset($_GET['optFruits'][0])){
 	echo $_GET['optFruits'][0];  
 }
  echo "<br/>";
  if(isset($_GET['optFruits'][1])){
 	echo $_GET['optFruits'][1];  
 }
 ?>

POST method ல் ஒரு form அனுப்பப்படும்பொழுது எப்படி பெறுவது?


<?php 
if(isset($_POST['optFruits'][0])){
 	echo $_POST['optFruits'][1];
 }
  echo "<br/>";
 if(isset($_POST['optFruits'][1])){
 	echo $_POST['optFruits'][1];  
 }
 ?>

Foreach Loop -ஐ கொண்டும் பெறலாம். பாடம் 7-ல் PHP Loop பற்றி படித்திருப்போம்

<?php 

if(isset($_POST['optFruits'])){

	foreach($_POST['optFruits'] as $fruits){
		echo $fruits."<br/>";
	}
}
?>

Output:


Apple
Kiwi

File Uploading

File upload செய்வதற்கு HTML form உதவுகிறது. Input type ல் file என்று கொடுப்பதன் மூலம் ஒரு file / image / video / mp3 போன்றவைகளை server -ல் upload செய்யலாம். Form ல் enctype என்ற attribute ல் multipart/form-data கொடுக்கப்பட வேண்டும்.


<!doctype html>
 <html> 
 <body> 
  <form action="datapage.php" method="post" enctype="multipart/form-data" > 
 <label for="file_img">Upload Image</label>  
 <input type="file" name="file_img" id="file_img" > 
 <input type="submit" value="Submit"> 
  </form> 
</body>
</html> 


$_FILES[] array -வில் அனைத்து information -களும் சேகரிக்கப்பட்டிருக்கும்.

$_FILES["file_img"]["name"]Original name of uploaded file
$_FILES["file_img"]["tmp_name"]Path to temporary server copy
$_FILES["file_img"]["type"]Mime type of the file
$_FILES["file_img"]["size"]File size in bytes
$_FILES["file_img"]["error"]Error code

பெறப்படும் file-கள் அனைத்தும் தற்காலிகமாக சர்வர்களில் save ஆகியிருக்கும். script மூலமாக அவற்றை சர்வரில் save செய்யவில்லை என்றால் வேறொரு page செல்லும்போது அவை தானாக delete செய்யப்படும்.


<?php 
if(isset($_FILES['file_img'])){
 if(isset($_FILES['file_img']["error"]==0)){
	echo $_FILES['file_img']["name"]."<br>";
	echo $_FILES['file_img']["tmp_name"]."<br>";
	echo $_FILES['file_img']["type"]."<br>";
	echo $_FILES['file_img']["size"]."<br>";
	echo $_FILES['file_img']["error"]."<br>";
	move_uploaded_file($_FILES['file_img']["tmp_name"],'img/01/jpg');
           
  }
}
?>

Output:

IMG-20210925-WA0012.jpg
E:\wamp\tmp\php74C4.tmp
image/jpeg
102901
0

move_uploaded_file function -ன் முதல் argument -ல் temp ல் உள்ள uploaded file path -ஐ குறிப்பிட்டு பின் இரண்டாவது argument -ல் என்ன பெயராக இருக்க வேண்டும் என்பதை குறிப்பிட வேண்டும். move_uploaded_file பயன்படுத்தபப்டுவதால் இரண்டாவதாக இதே path வைத்து மீண்டும் server ல் save செய்ய முடியாது.