Επεξεργασία φόρμας σε ένα αρχείο PHP
Στο προηγούμενο μάθημα, η φόρμα μας ήταν τοποθετημένη
σε μια σελίδα, αλλά αποστέλλονταν σε άλλη.
Στην πραγματικότητα, αυτό δεν είναι απαραίτητο. Εάν αφήσετε
το χαρακτηριστικό action κενό ή το αφαιρέσετε
εντελώς, τότε η φόρμα θα αποσταλεί στην ίδια
σελίδα.
Πώς θα λειτουργεί: κατά την πρώτη είσοδο στη σελίδα θα συμπληρώσουμε τη φόρμα με δεδομένα και θα πατήσουμε το κουμπί. Μετά από αυτό, η σελίδα θα ανανεωθεί και ο κώδικάς της θα εκτελεστεί ξανά, αλλά τώρα με τα δεδομένα της φόρμας.
Ας δούμε ένα παράδειγμα. Ας υποθέσουμε ότι έχουμε σε ένα αρχείο μια φόρμα και την επεξεργασία της:
<form action="" method="GET">
<input name="test1">
<input name="test2">
<input type="submit">
</form>
<?php
var_dump($_GET);
?>
Κατά την πρώτη είσοδο στη σελίδα, η συνάρτηση var_dump
θα εμφανίσει έναν κενό πίνακα. Και μετά την αποστολή της φόρμας
θα εμφανίσει τα δεδομένα της φόρμας. Δηλαδή, την πρώτη
φορά ο $_GET θα είναι κενός, και τη δεύτερη φορά
- θα περιέχει τα δεδομένα της φόρμας.
Αυτό μπορεί να οδηγήσει σε προβλήματα. Ας υποθέσουμε, για παράδειγμα, ότι στη φόρμα θα εισάγουμε αριθμούς και θέλουμε να εμφανίσουμε το άθροισμα αυτών των αριθμών στην οθόνη:
<form action="" method="GET">
<input name="test1">
<input name="test2">
<input type="submit">
</form>
<?php
echo $_GET['test1'] + $_GET['test2'];
?>
Σε αυτήν την περίπτωση, κατά την πρώτη είσοδο στη σελίδα
θα δούμε σφάλματα PHP, σχετικά με το γεγονός ότι
ο πίνακας $_GET είναι κενός, αλλά εμείς προσπαθούμε να προσπελάσουμε
τα στοιχεία του.
Εδώ πρέπει να πούμε ότι τα σφάλματα μπορεί να μην εμφανιστούν στο πρόγραμμα περιήγησής σας. Σε αυτήν την περίπτωση ελέγξτε ότι έχετε ενεργοποιημένη την εμφάνιση σφαλμάτων PHP, και επίσης βεβαιωθείτε ότι είναι η πρώτη είσοδός σας στη σελίδα και ότι στη γραμμή διευθύνσεων δεν υπάρχουν δεδομένα φόρμας.
Ας διορθώσουμε το πρόβλημα. Για αυτό, θα προσθέσουμε μια συνθήκη, στην οποία θα ελέγχουμε ότι η φόρμα έχει αποσταλεί.
Για παράδειγμα, μπορούμε να ελέγξουμε αν ο $_GET
δεν είναι κενός. Εάν ο $_GET δεν είναι κενός -
τότε η φόρμα έχει αποσταλεί και μπορούμε να εκτελέσουμε
την πρόσθεση. Διαφορετικά, βρισκόμαστε ακόμα στην πρώτη
είσοδο στη σελίδα και η πρόσθεση δεν θα εκτελεστεί.
Λοιπόν, ορίστε ο διορθωμένος κώδικας:
<form action="" method="GET">
<input name="test1">
<input name="test2">
<input type="submit">
</form>
<?php
if (!empty($_GET)) {
echo $_GET['test1'] + $_GET['test2'];
}
?>
Ρωτήστε το χρήστη για το επώνυμό του, το όνομά του και το πατρώνυμο του. Μετά την αποστολή της φόρμας, εμφανίστε στην οθόνη τα δεδομένα που εισήχθησαν.