25. Altes de registres
Índex
Afegir registres
Els registres s'afegeixen amb la instrucció
- mysql_query("INSERT INTO nom_de_taula (Camp_1, Camp_2...) VALUES ('valor_textual ', valor_numèric, ...)",$con);
Podem ometre els noms dels camps; en aquest cas els valors s'adjudicaran ordenadament als diversos camps que hi hagi en el registre.
Els camps autonumèrics s'han d'ometre sempre, tant en l'enumeració d'INTO com en la de VALUES; el valor hi és assignat automàticament.
Els valors especificats a VALUES han d'anar entre cometes simples si són de text, i sense cometes si són numèrics, tant si són indicats directament com si ho són mitjançant variables.
Valors procedents d'un formulari
Molt sovint les dades emmagatzemades en una base de dades procedeixen de formularis omplerts per l'usuari final (fòrums, llistes de distribució, etc.); és possible fer servir tota mena de camps de formulari, inclosos els hidden. Les dades trameses són, com sempre, rebudes mitjançant $_POST['nom_del_camp'] o anàlegs.
Molt sovint aquestes dades procedents del formulari són sotmeses a manipulacions o càlculs previs a la inlusió en la taula.
- Taula MySQL anomenada socis, amb els camps Id, Nom, Cognoms, Telefon i Correu.
- Document HTML dotat d'un formulari en què es demanen les dades d'un nou registre.
- ...
- $nom = $_POST['nom']; // Recepció de les dades
- $cognom = $_POST['cgn'];
- $telefon = $_POST['tel'];
- $correu = $_POST['cel'];
- ...
- mysql_query("INSERT INTO socis(Nom, Cognoms, Telefon, Correu) VALUES ('$nom', '$cognom', '$telefon', '$correu')") or
- die("Problemas en el insert"); // Incorporació del nou registre a la taula
- ...
Vegeu el contingut inicial de la taula.
Feu una alta i vegeu-ne el resultat.
Nota: Atesa la finalitat didàctica d'aquest exemple, el darrer document PHP conté un programa que presenta la taula modificada i, a més, un programa final, que restaura el contingut inicial de la taula. No és possible, doncs, d'actuar-hi reiteradament.
Desenvolupant adequadament el programa, són possibles disposicions més pràctiques:
- Que cada vegada que incorporem un registre, el document que conté el formulari es recarregui automàticament, de manera que podem fer incorporacions successives.
- Que un mateix document contingui dos o més formularis, que es carreguen l'un darrere l'altre en donar la conformitat.
Transferència de dades contingudes en un fitxer
El responsable d'un web sovint ha de fer incorporacions massives de dades en una taula. Es poden crear programes que combinin la càrrega d'un fitxer de text extern, la lectura d'aquest línia a línia i la inserció de les dades en una taula MySQL.
- Taula MySQL anomenada diversos, amb els camps A, B i C, inicialment en blanc.
- Fitxer de text que l'usuari ha de preparar en el seu ordinador, a fi d'incorporar-lo a la base de dades. En aquest exemple aquest fitxer ha de complir els requisits següents:
- Cada registre ha de tenir tres camps (ni més ni menys).
- El separador dels camps ha d'ésser precisament el signe ¬.
- Si un camp conté un apòstrof, cal avantposar-hi el signe \ (vg. l\'arbre. No s'ha previst fer-ho automàticament. Si falla aquest requisit, la càrrega en la base de dades donarà error.
- Document HTML dotat d'un formulari per a cercar i trametre el fitxer anterior.
- ...
- while(!feof($ctrl)){
- $linia= fgets($ctrl, 4096);
- list($a,$b,$c) = split(' ¬ ',$linia); // Fragmenta la línia en camps, d'acord amb el separador establert
- echo "<p>" . $a . " - " . $b . " - " . $c . "</p>"; // Presentació de comprovació ABANS de carregar en la taula
- mysql_query("INSERT INTO diversos(A, B, C) VALUES ('$a', '$b', '$c')") or
- die("Problemas en el insert" . mysql_error()); // Passa els valors a la taula
- }
- ...
- ...
- $dades = mysql_query("SELECT * FROM diversos ORDER BY A") or
- die("Problemes de lectura"); // Lectura i ordenació de les dades de la taula
- while($fila = mysql_fetch_array($dades)){ // Capta les dades
- echo "<tr>";
- echo "<td class='e'>" . $fila['A'] . "</td>"; // Presenta les dades procedents de la taula
- echo "<td class='e'>" . $fila['B'] . "</td>";
- echo "<td class='e'>" . $fila['C'] . "</td>";
- echo "</tr>";
- }
- ...
Assegureu-vos del contingut i del format del fitxer i afegiu-lo a la base de dades.
Vegeu el contingut de la taula.
Nota: Atesa la finalitat didàctica d'aquest exemple, les càrregues successives no s'acumulen.
Els programes com phpMyAdmin i anàlegs contenen utilitats que faciliten aquesta mena d'operacions, i donen resolta la qüestió d les cometes i l'apòstrof. S'hi acostuma a fer servir alguna variant del format .csv o similars; els fulls de càlcul acostumen a tenir utilitats que automàticament en converteixen el contingut a aquest format.