MySQL Java JavaScript PHP Python HTML-CSS C-sharp

Trimiterea array-urilor în PHP

În temele anterioare am discutat trimiterea valorilor individuale pe server. Cu toate acestea, trimiterea unui set de valori, adică array-uri, în PHP poate ridica unele dificultăți. Să vedem cum putem trimite array-uri pe server și, respectiv, să le obținem pe server.

De exemplu, definim următorul fișier users.php:

<?php
$users = [];
if(isset($_GET["users"])){
   $users = $_GET["users"];
}
echo "În array sunt " . count($users) . " elemente<br>";
foreach($users as $user) echo "$user<br>";
?>

În acest caz, presupunem că parametrul "users", care este transmis în cererea de tip GET, va reprezenta un array. Și, în consecință, vom putea obține datele din acesta.

Pentru a trimite un array acestui script, accesăm următoarea adresă:

http://localhost/users.php?users[]=Tom&users[]=Bob&users[]=Sam

Pentru a defini parametrul șirului de cerere ca array, după numele parametrului se specifică paranteze pătrate []. Apoi putem atribui o valoare: users[]=Tom.

Și câte valori vor fi atribuite în acest mod, atâtea valori vor fi în array. Toate valorile, ca de obicei, sunt separate prin semnul ampersand. Astfel, în acest caz, în array se transmit trei valori.

În mod similar, putem trimite date în cererea POST dintr-un formular. De exemplu, definim următorul script:

<!DOCTYPE html>
<html>
<head>
<title>FDC.COM</title>
<meta charset="utf-8" />
</head>
<body>
<?php
if(isset($_POST["users"])){
   $users = $_POST["users"];
   echo "În array sunt " . count($users) . " elemente<br>";
   foreach($users as $user) echo "$user<br>";
}
?>
<h3>Formular de introducere a datelor</h3>
<form method="POST">
   <p>User 1: <input type="text" name="users[]" /></p>
   <p>User 2: <input type="text" name="users[]" /></p>
   <p>User 3: <input type="text" name="users[]" /></p>
   <input type="submit" value="Trimite">
</form>
</body>
</html>

Se știe că numele cheii datelor transmise pe server corespunde valorii atributului name al elementului formularului.

Și pentru a indica faptul că un câmp de intrare va furniza valoare pentru un array, atributul name al câmpului de intrare ia ca valoare numele array-ului cu paranteze pătrate:

<input type="text" name="users[]" />

Astfel, câte câmpuri de intrare cu același nume de array vom indica, atâtea valori vom putea trimite pe server. Astfel, în acest caz, pe server se trimit trei valori în array-ul users:

Trimiterea array-urilor pe server prin metoda POST dintr-un formular în PHP

Acest principiu se aplică și altor tipuri de câmpuri de intrare din formularul HTML.

În exemplele de mai sus, a fost transmis un array simplu, în care fiecare element are ca cheie un index numeric. Astfel, folosind indexul, putem obține un anumit element din array:

$firstUser = $_POST["users"][0];
echo $firstUser;

Dar putem specifica explicit cheile în elementele formularului:

<!DOCTYPE html>
<html>
<head>
<title>FDC.COM</title>
<meta charset="utf-8" />
</head>
<body>
<?php
if(isset($_POST["users"])){
   $firstUser = $_POST["users"]["first"];
   $secondUser = $_POST["users"]["second"];
   $thirdUser = $_POST["users"]["third"];
   echo "$firstUser<br>$secondUser<br>$thirdUser";
}
?>
<h3>Formular de introducere a datelor</h3>
<form method="POST">
   <p>User 1: <input type="text" name="users[first]" /></p>
   <p>User 2: <input type="text" name="users[second]" /></p>
   <p>User 3: <input type="text" name="users[third]" /></p>
   <input type="submit" value="Trimite">
</form>
</body>
</html>

De exemplu, primul câmp adaugă în array un element cu cheia "first":

<input type="text" name="users[first]" />

De aceea, pe server putem obține elementul corespunzător folosind această cheie:

$firstUser = $_POST["users"]["first"];
← Lecția anterioară Lecția următoare →