Gestione semplici news testuali

Salve a tutti.

Seguendo un esempio preso da un libro ho realizzato un piccolo gestore delle news basato su un db mysql con 4 campi (id,titolo,testo,data).

L'id è automatico, mentre titolo, testo e data vengono inseriti nel db tramite una pagina form (che ha tre semplici campi testuali).

Il tutto molto semplice (in modo da poterlo adattare alle esigenze anche in futuro), senza nessun fronzolo, tutto testo e basta.

Ora vorrei fare qualche miglioria e mi rivolgo al forum nella speranza di avere qualche aiutino.

Prima di tutto il campo data del form: ora bisogna inserire la data nella forma 20060319, che non è molto intuitiva, ma è l'unico modo per farla entrare nel campo del db (che è di tipo data appunto). Come posso rendere l'inserimento un po' meno criptico?

Seconda cosa: nel campo testo si inserisce solo testo puro, ma io vorrei dare la possibilità di inserire almeno anche grassetti e corsivi. Anche qua l'alternativa criptica è costringere colui che inserisce una novità a usare direttamente dei tag HTML per le parole in grassetto o corsivo. Però volevo qualcosa di più semplice. Mi indicate qualche cosa, senza però dover andare a scavare nei km di cosice che magari compongono anche le pagine di questo forum (per tutti i tastini  di formattazione del testo ...)

Grazie

fante

inviato 10 anni fa
fante1998
X 0 X

Ciao fante1998,

per quanto riguarda l'inserimento della data, se il campo del DB è di tipo date,

la data dovrà essere inserita nel formato YYYY-mm-dd, quindi non

20060319

bensì:

2006-03-19

Nel caso il tuo campo del DB non fosse di tipo date ma un semplice campo varchar, ti consiglio di cambiarlo nel formato 'date', in quanto su quel formato ci puoi fare diverse operazioni utili

( http://dev.mysql.com/doc/refman/5.0/en/date-and-time-functions.html )

ed in + sarebbe utile per la ricerca...

Per l'inserimento della data, se questa deve assumere il valore della data in cui la news verrà inserita, puoi utilizzare la funzione date() di php:

http://it2.php.net/manual/it/function.date.php

$data = date('Y-m-d');

echo $data; //Restituisce anno-mese-giorno odierni

Per quanto riguarda l'inserimento dei tag, puoi utilizzare l'htmlentities():

http://it2.php.net/manual/it/function.htmlentities.php

oppure il BBCode (prova a fare una ricerca)...

Altre soluzioni per questo problema non mi vengono in mente...

ciao

Lore

risposto 10 anni fa
Lore
Lore
1
X 0 X

Il problema della data è facilmente risolvibile. Supponendo di inserire date del tipo "10/3/2006" potresti usare la funzione explode e la funzione list:

list($giorno, $mese, $anno) = explode ("/", $data);

per poi ricomporre la data in un formato adatto al DB:

$dataDB = "$anno-$mese-$giorno";

per il problema della formattazione devi scegliere se usare i bbcode, ovvero la tecnica che viene impiegata dai forum, oppure puoi usare gli editor HTML che girano nel browser, tipo questo:

http://www.dynarch.com/projects/htmlarea/

 :bye:

risposto 10 anni fa
Gianni Tomasicchio
X 0 X

Oppure puoi inserire dei slect con giorni (da 1 a 31), mesi (da 1 a 12) e anni (da attuale-5 a attuale+5):

<?php 

//Valuto la data di oggi

$data = date('d/m/Y');

list($giorno, $mese, $anno) = explode ("/", $data);

//Elenco i 31 giorni del campo opzioni della select, segnando come default l'attuale

$gg = "";

for ($i=1;$i<=31;$i++) {

   $sel = ($i==$giorno) ? 'selected="selected"' : '';

   $gg .= "<option value=\"$i\" $sel>$i</option>\n";

}

//Elenco i 12 mesi del campo opzioni della select, segnando come default l'attuale

$mm = "";

for ($i=1;$i<=12;$i++) {

   $sel = ($i==$mese) ? 'selected="selected"' : '';

   $mm .= "<option value=\"$i\" $sel>$i</option>\n";

}

//Elenco gli anni del campo opzioni della select, segnando come default l'attuale

$aaaa = "";

for ($i=($anno-5);$i<=($anno+5);$i++) {

   $sel = ($i==$anno) ? 'selected="selected"' : '';

   $aaaa .= "<option value=\"$i\" $sel>$i</option>\n";

}

?>

All'interno del form:

<form...


<table>
<tr>
<td>Data</td>      
<td>&nbsp;</td>
<td>
<select name="giorno"><option value="0">gg</option><?php echo $gg;?></select>
<select name="mese"><option value="0">mm</option><?php echo $mm;?></select>
<select name="anno"><option value="0">anno</option><?php echo $aaaa;?></select>
</td>
</tr>
</table>

</form>

Infine nello script che analizza i dati ricevuti dal form estrapolo giorno, mese ed anno e compongo la data da inserire nel DB:

$gg = $_POST["giorno"];

$mm = $_POST["mese"];

$aaaa = $_POST["anno"];

if ($gg && $mm && $aaaa){   $data="$aaaa-$mm-$gg";  }

//else non inserito qualche campo

 :bye:

risposto 10 anni fa
Nico Colonna
X 0 X

Grazie ragazzi!!!! :D

Ottime indicazioni, credo che utilizzarò subito il codice di Fred.

Invece per l'editor a prima vista mi sembra più facile da usare FCKeditor.net (che mi hanno consigliato da un'altra parte)... comunque ora mi tuffo a pesce, grazie!

risposto 10 anni fa
fante1998
X 0 X

Scusate ragazzi, un'ultima cosa che non mi risulta molto chiara.

Nel database il campo con la data è in formato date 0000-00-00 ma nonostante questo riesco a inserire il valore solo se non metto i trattini tra anno mese e giorno...

Boh! Comunque funziona quindi... chi se ne frega!!!  >:D

risposto 10 anni fa
fante1998
X 0 X

Ti consiglio di guardare la pagina della documentazione ufficiale che parla dei formati ammessi nell'introduzione di date:

http://dev.mysql.com/doc/refman/4.1/en/datetime.html

 :bye:

risposto 10 anni fa
Gianni Tomasicchio
X 0 X
Effettua l'accesso o registrati per rispondere a questa domanda