Script bază date pe pagina wordpress

Am mai vrut o chestie pentru jurnalul meu de tată şi anume o pagină pe care să prezint un dicţionar cu cuvintele pe care le ştie piticul nostru Dragoş. Multe dintre ele nu există în limba română, încă… Aşa, deci vroiam o pagină în care:

  1. să afişez conţinutul unei tabele mySQL;
  2. să pot să introduc înregistrări în tabelă (direct de pe pagină şi doar eu administratorul);
  3. să ofer vizitatorului să ordoneze datele din tabel după mai multe criterii (cele mai noi introduse, alfabetic, sau în ordinea în care au fost introduse);

Toate astea reprezintă o minimă interacţiune cu o tabelă, ceea ce, mi se pare mie, ar fi trebuit să găsesc pe toate drumurile. Ei bine, nu! Nu am găsit, sau poate nu am căutat suficient, dar dacă tot am făcut scriptul, îl pun aici poate că va fi util cuiva pe viitor.

Aşadar, pentru a face o pagină wordpress cu un format separat deja am scris în postul ăsta deci nu mai insist, trec direct la subiect cu scriptul. Tabela este una simplă şi  am adăugat-o în baza de date cu phpMyAdmin. Dacă nu ştii ce-i aia, probabil restul este neinteresant. Structura tabelei este: id (câmp care se incrementează automat), cuvant, descriere, data, nume. Câmpul nume l-am adăugat pentru că mă gândesc că vom avea mai multe dicţionare, primul este pentru Dragoş, iar următorul copil va avea dicţionarul lui sau ei. Scriptul este mai jos şi poate fi foarte uşor modificat ca să îţi folosească pentru orice tabelă şi obiectiv. Utilizare plăcută. Şi uitasem să spun, cazul practic este dicţionarul ăsta.

<?php
$user_name = „numeutilizatorbazadate”;
$password = „parola”;
$database = „numebazadate”;
$server = „localhost”;
$db_handle = mysql_connect($server, $user_name, $password);
$db_found = mysql_select_db($database, $db_handle);
//daca sunt eu, adminul,  atunci afisaza modulul adaugare cuvinte
if ( current_user_can(‘edit_plugins’) ){
if ($db_found) {
//adauga cuvinte in baza
if(isset($_POST[‘adauga’])) {
$cuvant = $_POST[‘cuvant’];
$descriere = $_POST[‘descriere’];
$data = date(„Y-m-d”);
$nume = „Dragoş”;
$query = „INSERT INTO dictionar (id, cuvant, descriere, data, nume) VALUES (‘NULL’, ‘$cuvant’, ‘$descriere’, ‘$data’, ‘$nume’)”;
$result = mysql_query($query);
}
?>
<form name=”adaugare” action=”” method=”post”>
Cuvant:<br/><input type=”text” name=”cuvant” width=”20px”><br/>
Descriere:<br/><textarea name=”descriere” cols=”20″ rows=”10″></textarea><br/>
<input type=”submit” name=”adauga” value=”Adaugă”>
</form>
<p>&nbsp;</p>
<?php
}else{
echo „Eroare: Baza de date nu a fost găsită!”;
}
}
?>
<!– Inceput optiuni sortare –>
<form name=”optiuni_sortare” method=”post” action=””>
<input type=”radio” name=”sortare” value=”i”>Dupa cum au fost adaugate<br/>
<input type=”radio” name=”sortare” value=”a”>În ordine alfabetică a cuvintelor<br/>
<input type=”radio” name=”sortare” value=”n”>Cele mai recent introduse la început<br/>
<input type=”submit” name=”sorteaza” value=”Sorteaza”>
</form>
<p>&nbsp;</p>
<?php
if(isset($_POST[‘sorteaza’]))  {
$sortare = $_POST[‘sortare’];
}else{
$sortare = „a”;
}
switch ($sortare) {
case „n”:
$ordine=”id desc”;
break;
case „i”:
$ordine=”id”;
break;
case „a”:
$ordine=”cuvant”;
break;
}
?>
<!– Sfarsit optiuni sortare –>
<!– INCEPUT afisare tabela dictionar –>
<?php
if ($db_found) {
$query = „select * from dictionar order by $ordine”;
$result = mysql_query($query);
echo mysql_error();
//ciclu afisare inregistrari din tabelă
echo ‘<table border=”0″ frame=”hsides” bgcolor=”fcf3ca” bordercolor=”white” padding=”3px” spacing=”3px” align=”center” cols=”2″ width=”100%”>’;
while($row=mysql_fetch_array($result)){
echo ‘<tr valign=”top”>’;
echo ‘<td width=”auto” align=”left”>’;
echo „<b>$row[cuvant]</b>”;
echo ‘</td><td align=”justify”>’;
echo $row[descriere].” <span style=’font-size: 8px;’>[$row[data], $row[nume]]</small>”;
echo ‘</td>’;
echo ‘</tr>’;
}
echo ‘</table>’;
echo ‘<p>&nbsp;</p>’;
}
else {
print „Eroare: Baza de date nu a fost găsită!”;
}
mysql_close($db_handle);
//sfarsit afisare baza de date
?>

Lasă un răspuns

Adresa ta de email nu va fi publicată. Câmpurile obligatorii sunt marcate cu *