Verifica inserimento dati form

DieciJack

Nuovo Utente
22 Feb 2015
13
0
0
Salve a tutti ragazzi, ho un problema con un form che utilizzo per l'inserimento dei dati nel database, ecco il codice:

PHP:
<?php

  // CONNESSIONE DATABASE
 include ("../config/config.php");
 
 // MAGIC QUOTES OFF
 include ("mag-quot.php");

 $autore_articolo = $_POST['autore_articolo'];
 $titolo_articolo = $_POST['titolo_articolo']; 
 $testo_articolo =  $_POST['testo_articolo'];
 
if (isset($autore_articolo, $titolo_articolo, $testo_articolo))
{
	$sql = 'INSERT INTO articoli SET 
	 autore_articolo = :autore_articolo,
	 titolo_articolo = :titolo_articolo,
	 testo_articolo = :testo_articolo,
	 data_articolo = CURDATE()';
	
	 $s = $pdo->prepare($sql);
	 $s->bindValue(':autore_articolo', $autore_articolo);
	 $s->bindValue(':titolo_articolo', $titolo_articolo);
	 $s->bindValue(':testo_articolo', $testo_articolo);
	 $s->execute();
}

header('Location: .');
exit();
?>

Lo script funziona e non riscontro alcun problema, ma se nel form HTML lascio uno o più campi vuoti la query viene eseguita comunque. Quello che mi chiedo è come annullare l'invio del form se uno o più campi non sono stati compilati (suppongo con else). In più ho un altro dubbio con questi parametri:

PHP:
if (isset($autore_articolo, $titolo_articolo, $testo_articolo))
Qui posso inserire direttamente $_POST['submit'] oppure ho bisogno di inserire tutti i campi come ho fatto nel codice?

Un altro dubbio riguarda la data:

PHP:
data_articolo = CURDATE();

Nella pagina index.php l'ordine di visualizzazione dipende da ORDER BY `data_articolo` DESC'.
Quando inserisco un nuovo articolo tramite form l'ultimo che ho inserito non viene visualizzato per primo ma viene ordinato sotto quelli che ho inserito precedentemente nella stessa giornata. Se utilizzassi NOW() al posto di CUREDATE() potrei risolvere il problema? Il campo data_articolo però è appunto utilizzato per la data e non è previsto l'orario, dovrei creare un nuovo campo per la data o posso utilizzare data_articolo? Grazie in anticipo.
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.042
148
63
PR
www.borgo-italia.it
ciao
questo per evitare che uno dei campi sia vuoto
PHP:
<?php
//....
$autore_articolo = trim($_POST['autore_articolo']);// con trim elimini spazi prima e dopo
$titolo_articolo = trim($_POST['titolo_articolo']); //e eviti che sia un solo spazio
$testo_articolo =  trim($_POST['testo_articolo']);
if($autore_articolo=="" || $titolo_articolo=="" || $testo_articolo==""){
	echo "tutti i campi vanno reimpiti";
	//e rimandi dove vuoi
}else{
	//fai l'insert ecc
}
//....
?>
poi la differenza tra curdate e now è come ti restiutisce la data es.
curdate => 2015-03-04
now => 2015-03-04 11:09:33
quindi forse now è meglio perche usa anche ora minuti secondi quindi distingue tra due inserite nella stessa giornata
 

DieciJack

Nuovo Utente
22 Feb 2015
13
0
0
Grazie per i suggerimenti adesso il codice funziona ma purtroppo ho ancora due piccoli problemi:

Se il form ha uno o più campi non compilati la query non viene eseguita ma l'echo all'interno di if non viene mostrato, sarà perchè non ho aggiunto un header all'interno? In più la funzione NOW() presenta lo stesso problema di CURDATE():

http://gyazo.com/2266087b48c5689a4281fe90597f628f

NOW(2) è stato inserito per ultimo, è possibile che il problema sia causato dalla funzione DESC della query nell'index?

Questo è il codice aggiornato:

PHP:
<?php

  // CONNESSIONE DATABASE
 include ("../config/config.php");
 
 // MAGIC QUOTES OFF
 include ("mag-quot.php");

 $autore_articolo = trim($_POST['autore_articolo']);
 $titolo_articolo = trim($_POST['titolo_articolo']); 
 $testo_articolo =  trim($_POST['testo_articolo']);
 
if ($autore_articolo=="" || $titolo_articolo=="" || $testo_articolo=="")
{
	echo "Tutti i campi devono essere compilati.";
} 
 else 
{
	$sql = 'INSERT INTO articoli SET 
	 autore_articolo = :autore_articolo,
	 titolo_articolo = :titolo_articolo,
	 testo_articolo = :testo_articolo,
	 data_articolo = NOW()';
	
	 $s = $pdo->prepare($sql);
	 $s->bindValue(':autore_articolo', $autore_articolo);
	 $s->bindValue(':titolo_articolo', $titolo_articolo);
	 $s->bindValue(':testo_articolo', $testo_articolo);
	 $s->execute();
}

header('Location: .');
exit();
?>
 

criric

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
21 Ago 2010
5.607
54
48
TN
Ciao, l'echo non la vedi perchè reindirizzi al form, se metti un time di 5 secondi alla funzione header() dovresti vederlo
Modifica il tipo campo data_articolo in TIMESTAMP o DATETIME direttamente da phpmyadmin
 

DieciJack

Nuovo Utente
22 Feb 2015
13
0
0
Grazie mille, aggiungendo un refresh ho risolto il problema dell'echo, in più ho modificato il campo di data_articolo e l'ordine degli articoli è correto.
Mi chiedevo se fosse possibile modificare il formato dell'ora: adesso la visualizzo normalmente in questo modo: Data: 2015-03-10 21:24:12 vorrei poterla visualizzare racchiusa fra parentesi tonde con il corsivo: Data: 2015-03-10 (21:24:12).

Attualmente utilizzo questa variabile per formattare la data nel formato europeo:

PHP:
$data = preg_replace('/^(.{4})-(.{2})-(.{2})$/','$3-$2-$1', $data);

Devo agire su questa?
 
Ultima modifica:

criric

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
21 Ago 2010
5.607
54
48
TN
Io farei in questo modo
PHP:
<?php

$data = "2015-03-10 21:24:12";

$split = explode(" ", $data);

echo str_replace("-", "/", $split[0]) . " (" . $split[1] . ")";
giusto perchè le regex non le ho mai digerite :evil:
 

DieciJack

Nuovo Utente
22 Feb 2015
13
0
0
Grazie per l'aiuto adesso l'ora è racchiusa fra parentesi.
So che sto facendo un milione di domande ma purtroppo sono un neofita di PHP :)
C'è un modo per visualizzare solamente le ore ed i minuti escludendo i secondi nel risultato della query?
Ho provato ad applicare un replace a $split[1] ma senza risultati.
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.042
148
63
PR
www.borgo-italia.it
ciao
io uso sempre il timestamp, soprattutto per insereire la data nel db, da cui poi si può formattare la data come si vuole
esempi:
PHP:
<?php
$time_stamp=time();//data espressa in timestamp
echo "$time_stamp <br>";//output 1426148555
echo date("d-m-Y H:i:s",$time_stamp)."<br>";//output 12-03-2015 09:22:35
//uso di backslash per inserire altri caraterri
echo date("d-m-Y \(H:i:s\)",$time_stamp)."<br>";//output 12-03-2015 (09:22:35)
echo date("d/m/Y H\h i\m s\s",$time_stamp)."<br>";//output 12/03/2015 09h 25m 45s
?>
 
Ultima modifica:

DieciJack

Nuovo Utente
22 Feb 2015
13
0
0
In questo preciso caso mi consigliate l'utilizzo di TIMESTAMP oppure di DATETIME? Ho provato con
PHP:
$split[1] = substr($split[1], 0, -3);
e adesso funziona tutto correttamente. Ho provato anche con time() ma ho avuto problemi nello script del form.
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.042
148
63
PR
www.borgo-italia.it
ciao
forse perche non hai settato bene il campo data_articolo
PHP:
<?php
//.....
 else 
{
	$sql = 'INSERT INTO articoli SET 
     autore_articolo = :autore_articolo,
     titolo_articolo = :titolo_articolo,
     testo_articolo = :testo_articolo,
     data_articolo ='.time();//e il campo data_articolo lo setto a int(12)
    //con time() ottieni la data attuale espressa in timestamp
     $s = $pdo->prepare($sql);
     $s->bindValue(':autore_articolo', $autore_articolo);
     $s->bindValue(':titolo_articolo', $titolo_articolo);
     $s->bindValue(':testo_articolo', $testo_articolo);
     $s->execute();
}
//....
?>
una volta che hai il timestamp poi lo stampi nella forma/e che preferisci come ti ho fatto gli eesempi
 
Discussioni simili
Autore Titolo Forum Risposte Data
MarcoGrazia Verifica di una stringa o di un nome proveniente da form Snippet PHP 0
D verifica codice fiscale persona fisica /aziendale stesso campo HTML e CSS 1
F [PHP] Verifica utente presente nel DB PHP 13
gandalf1959 [PHP] Verifica password per accesso ad area riservata PHP 3
M [Javascript] Verifica calcolo prima di fare insert Javascript 13
Samuele Ronzani [PHP] Verifica se un dato esiste già PHP 1
S [Javascript] Verifica separatore decimale sistema operativo Javascript 2
felino EXCEL: verifica dati mancanti tra due sheet Windows e Software 2
A Verifica validità data in Java Java 2
kikki882 verifica account - dati personali Social Media Marketing 0
S [PHP] Verifica dati tramite form e annullamento codice inserito PHP 7
L Wordpress: consiglio plugin per "verifica disponibilità" WordPress 0
MarcoGrazia Verifica di un indirizzo email Snippet PHP 0
MarcoGrazia [PHP] Verifica dell'input utente tramite funzione generica. PHP 0
francesco87 [Vendo] Verifica pagina (bollino grigio) Annunci servizi di Social Media Marketing 0
M [PHP] Verifica formato data in tempo reale PHP 2
WebDr [Javascript] verifica input Javascript 8
R [WordPress] Accesso al db e verifica credenziali (password criptata) WordPress 1
A VENDO ACCOUNT DI DIVERSE PIATTAFORME E VERIFICA FACEBOOK ACCOUNT(PHOTO TAG VERIFICATION,VERIFICA TEL Annunci servizi di Social Media Marketing 2
P verifica caratteri per email e password PHP 17
S Verifica Esistenza Codice Fiscale PHP 5
C verifica e invio ordine php PHP 19
MarcoGrazia Verifica della data inserita in un form ( utilizzando bootstrap ) Javascript 7
G verifica caricamento foto originali su social network o sito di hosting immagini Discussioni Varie 3
A Strumenti "ufficiali" per la verifica dei Cookie HTML e CSS 2
A verifica di proprietà bing webmaster tool Google Search Console 0
P Verifica form solo con php senza javascript PHP 15
P verifica utente in db PHP 6
L [MySQL] Verifica disponibilità camera MySQL 32
L vendo account facebook femmina 5.000 amici con verifica cell e tag superati Annunci servizi di Social Media Marketing 0
V verifica form jQuery 5
filippino Verifica email per attribuzione dei contenuti SEO e Posizionamento 0
N Verifica email di registrazione PHP 0
D Verifica plug-in aggiornati di Firefox non vede gli aggiornamenti effettivi Windows e Software 0
il_bauscia Verifica segnale operatore 5ghz Reti LAN e Wireless 2
Virginia86 [risolto] Problema select e verifica form PHP 38
G php asincrono con ajax 2 campi di verifica PHP 1
P Problema ocon verifica campo in javascript Javascript 7
M Cosa ne pensate del mio primo file PHP (verifica disponibilità stanze)? PHP 0
M adsmanager e messaggio di verifica email Joomla 0
L verifica mail in db con jquery e ajax. Aiuto jQuery 9
asevenx modulo registrazione utenti, cicli if di verifica PHP 9
A Espressione Regolare per verifica stringa PHP 14
A verifica codice PHP 7
M Verifica HTTP o HTTPS PHP 1
M Verifica se una Funzione appartiene ad una Classe PHP 9
F Esiste un programma che verifica la home page e la corregge automaticamente? HTML e CSS 7
P problema verifica dati Ajax 58
P Verifica form misto php e JS Javascript 2
A verifica disponibilità dominio Domini 0

Discussioni simili