[PHP][MY SQL] - Estrazione dati database tramite form

Caibo81

Nuovo Utente
4 Nov 2014
8
0
1
Salve a tutti ;)

Sono un grafico e ho pochissima dimistichezza con il php e la progettazione web in generale.
Sto lavorando per un'associazione onlus senza scopo di lucro e chi si occupava della scrittura del codice php mi ha abbandonato nel bel mezzo del progetto.
Fortunatamente tra tutorial e guide varie sono riuscito a creare ciò che mi serviva ad eccezione di una pagina.
Questa pagina in pratica dovrà visualizzare dati presenti nel database del sito che io minuziosamente ho già inserito.
La tabella che contiene i dati è composta da 4 campi quali "id, data (formato yyyy-mm-gg), titolo, contenuto".
In pratica chi visualizzerà la pagina vedrà a video l'articolo del giorno composto da titolo e contenuto e all'occorrenza scegliere l'articolo in base alla data.

es: Pinco Pallino visualizza di default l'articolo del giorno, ma avrà a disposizione, grazie ad un menù a tendina, la possibilità di cambiare il giorno. Non sò se sono stato chiaro e per questo mi scuso in anticipo.
Spero mi possiate aiutare. Comunque sia vi ringrazio tutti.
 

criric

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
21 Ago 2010
5.607
54
48
TN
Cioa, ma hai già provato a buttar giù qualcosa ?
PHP:
$data = date("Y-m-d");
if(isset($_POST['data'])) {
    $data = $_POST['data'];
}
$query = "SELECT * FROM tabella WHERE data = '$data'";
 

Caibo81

Nuovo Utente
4 Nov 2014
8
0
1
Intanto grazie per la risposta. Comunque più che buttare giù, ho letteralmente copiato il codice da questo forum ed è il seguente:

Codice:
<?
/* dichiariamo alcune importanti variabili per collegarci al database */
$DBhost = "Hostname o IP del tuo database";
$DBuser = "il tuo username";
$DBpass = "la tua password";
$DBName = "il nome del database";

/* specifichiamo il nome della nostra tabella */
$table = "amici";

/* Connettiamoci al database */
mysql_connect($DBhost,$DBuser,$DBpass) or die("Impossibile collegarsi al server");
@mysql_select_db("$DBName") or die("Impossibile connettersi al database $DBName");

/* impostiamo la query e cerchiamo solo le amiche donne...*/
$sqlquery = "SELECT * FROM $table WHERE sex = 'donna'";
$result = mysql_query($sqlquery);
$number = mysql_num_rows($result);

$i = 0;
if ($number < 1) {
  print "<center><p>La ricerca non ha prodotto nessun risultato</p></center>";
}else{
  while ($number > $i) {
    $nome = mysql_result($result,$i,"nome");
    $email = mysql_result($result,$i,"email");
    echo "<p><b>Nome:</b> $nome<br>
    <b>E-Mail:</b> $email</p>";
    $i++;
  }
}
?>

Dopo aver settato tutto, funziona alla perfezione, tranne per il fatto che il valore nella query lo devo inserire manualmente.
A me servirebbe creare un form data (se col calendario meglio ancora), dove l'utente avrà la possibilità di scegliere l'articolo relativo alla data e che di default esca l'articolo del giorno corrente.
Mi scuso in anticipo per quanto sono capra in merito :)
 

newOne

Utente Attivo
5 Feb 2014
30
0
0
Ciao, se ho ben capito ti serve un form in cui scegliere la data della pubblicazione di un articolo (magari con un calendario) e mostrare a video i risultati. Se è questo che cerchi di ottenere allora il processo è molto semplice.
Per prima cosa ti serve un form con cui interagire con il databae in modo da non modificare la query manualmente.

Ti ho creato un form in cui viene mostrato il calendario. Il form salvalo con estensione .php...esempio form.php

HTML:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Documento senza titolo</title>
</head>
<meta charset="utf-8">
<title>jQuery UI Datepicker - Default functionality</title>
<link rel="stylesheet" href="//code.jquery.com/ui/1.11.2/themes/smoothness/jquery-ui.css">
<script src="//code.jquery.com/jquery-1.10.2.js"></script>
<script src="//code.jquery.com/ui/1.11.2/jquery-ui.js"></script>
<link rel="stylesheet" href="/resources/demos/style.css">
<script>
$(function() {
$( "#datepicker" ).datepicker();
});
</script>
</head>
<body>
<form action="insert_article.php" method="post">
<span>Data inserimento articolo:</span><br />
<input type="text" name="data" id="datepicker">

<input type="submit" name="submit" value="Cerca" />
</form>
</body>
</html>

Il valore della data scelta è racchiuso all'interno del valore data, ovvero name="data".
Ora dobbiamo solo far passare questo valore al database. Per fare questo ho modificato il tuo file precedente e creato una tabella in cui verranno visualizzati i dati.
Il file l'ho denominato insert_article.php (vedi action="insert_article.php). Ovviamente puoi creare una cartella a parte se vuoi.

Fatto questo basta semplicemente cliccare sul tasto Cerca e il tutto verrà stampato a video.

Questo è il file insert_article.php:

PHP:
<?
/* dichiariamo alcune importanti variabili per collegarci al database */
$DBhost = "Hostname o IP del tuo database";
$DBuser = "il tuo username";
$DBpass = "la tua password";
$DBName = "il nome del database";

/* specifichiamo il nome della nostra tabella */
$table = "amici";

/* Connettiamoci al database */
mysql_connect($DBhost,$DBuser,$DBpass) or die("Impossibile collegarsi al server");
@mysql_select_db("$DBName") or die("Impossibile connettersi al database $DBName");


//VERIFICO L'INVIO DEL FORM
if(isset($_POST['submit'])){
$data_articolo = $_POST['data'];//RECUPERO IL VALORE DELLA DATA
}//FINE ISSET


/* impostiamo la query e cerchiamo gli articoli in base alla data...*/
$sqlquery = mysql_query("SELECT * FROM $table WHERE data_art = ".$data_articolo);
$number = mysql_num_rows($sqlquery);

if ($number < 1) {
echo "<center><p>La ricerca non ha prodotto nessun risultato</p></center>";
}else{

?>


<table>
<tr>
<td>Nome articolo</td>
<td>Data articolo</td>
</tr>

<?php 
while($riga = mysql_fetch_array($sqlquery)){
?>
<tr>
<td><?php echo $riga['nome_art'];?></td>
<td><?php echo $riga['data_art'];?></td>
</tr>
<?php
}//FINE WHILE
}//FINE IF
?>
</table>

Non sapendo come è strutturata la tabella che contiene gli articoli, ho chiamato la colonna data data_art e quella relativa all'articolo nome_art. Sostituisci i nomi con quelli della tabella.

Prova se funziona e se riscontri dei problemi fammi sapere.
 

Caibo81

Nuovo Utente
4 Nov 2014
8
0
1
...Prova se funziona e se riscontri dei problemi fammi sapere.

L'ho provato e il codice sembra corretto perchè non mi da nessun errore di sintassi, ma sta di fatto che mi dà sempre l'output "La ricerca non ha prodotto nessun risultato". Credo perchè il calendario restituisce il valore data nel formato m/g/Y mentre la tabella nel database ha il formato Y-m-d.

Intanto grazie per la risposta :)

Ps. Il calendario è molto carino, più di quello che speravo l'unica pecca è che in inglese ;)
 

newOne

Utente Attivo
5 Feb 2014
30
0
0
Ciao, in questo caso dobbiamo cambiare il formato della data.
Ho riscritto il codice della pagina insert_article. php

PHP:
<?php
/* dichiariamo alcune importanti variabili per collegarci al database */
$DBhost = "Hostname o IP del tuo database";
$DBuser = "il tuo username";
$DBpass = "la tua password";
$DBName = "il nome del database";

/* specifichiamo il nome della nostra tabella */
$table = "amici";

/* Connettiamoci al database */
mysql_connect($DBhost,$DBuser,$DBpass) or die("Impossibile collegarsi al server");
@mysql_select_db("$DBName") or die("Impossibile connettersi al database $DBName");


//VERIFICO L'INVIO DEL FORM
if(isset($_POST['submit'])){
$data_articolo = strtotime($_POST['data']);//RECUPERO IL VALORE DELLA DATA
$data_config = date("Y-m-d",$data_articolo);//CAMBIO IL FORMATO IN Y-m-d
}//FINE ISSET


/* impostiamo la query e cerchiamo gli articoli in base alla data...*/
$sqlquery = mysql_query("SELECT * FROM $table WHERE data_art = ".$data_config);
$number = mysql_num_rows($sqlquery);

if ($number < 1) {
echo "<center><p>La ricerca non ha prodotto nessun risultato</p></center>";
}else{

?>




<table>
<tr>
<td>Nome articolo</td>
<td>Data articolo</td>
</tr>

<?php 
while($riga = mysql_fetch_array($sqlquery)){
?>
<tr>
<td><?php echo $riga['nome_art'];?></td>
<td><?php echo $riga['data_art'];?></td>
</tr>
<?php
}//FINE WHILE
}//FINE IF
?>

</table>
Prova e fammi sapere se funziona.
 
Ultima modifica:

Caibo81

Nuovo Utente
4 Nov 2014
8
0
1
In pratica ho risolto la questine del datepicker in inglese scaricando il js da jquery e settandolo per la lingua italiana e con il formato Y-m-d

Fatto questo non c'è più bisogno di convertire il formato e quindi ho applicato il tutto al primo codice che mi hai postato:

PHP:
<?

/* impostiamo la query e cerchiamo gli articoli in base alla data...*/
$sqlquery = mysql_query("SELECT * FROM $table WHERE data_art = ".$data_articolo);
$number = mysql_num_rows($sqlquery);

?>

Ma non andava perchè c'era un errore di sintassi infatti dopo WHERE data_art = mancavano le virgolette e non andava messo il punto. La sintassi corretta è funzionante (e per questo vi ringrazio) è la seguente:

PHP:
<?

/* impostiamo la query e cerchiamo gli articoli in base alla data...*/
$sqlquery = mysql_query("SELECT * FROM $table WHERE data = '$data_articolo'");
$number = mysql_num_rows($sqlquery);

?>

Ora la casella di ricerca fa egregiamente il suo lavoro, l'unica cosa che mi servirebbe ancora è che di default dovrebbe uscire l'articolo del giorno corrente.
Attualmente essendo la casella vuota, di default mi esce "La ricerca non ha prodotto nessun risultato".
 

newOne

Utente Attivo
5 Feb 2014
30
0
0
Ciao, non esce alcun risultato perché il form non è validato.
Comunque se vuoi che esca per default il giorno attuale modifica il codice del file insert_artcle.php
Ho aggiunto questa parte di codice


PHP:
<?php
if(empty($data_articolo)){
//SE IL CAMPO DATA E' VUOTO ALLORA MOSTRA L'ARTICOLO DEL GIORNO CORRENTE, ALTRIMENTI MOSTRA L'ARTICOLO CORRELATA ALLA DATA SELEZIONATA
$sqlquery = mysql_query("SELECT * FROM $table WHERE DATE($data_art) = DATE(NOW()");
 }else{
$sqlquery = mysql_query("SELECT * FROM $table WHERE data_art = ".$data_articolo);
}
?>

ed elimnato la visualizzazione "Nessun articolo trovato"...se ne hai bisogno puoi sepre reintegrarlo


PHP:
<?
/* dichiariamo alcune importanti variabili per collegarci al database */
$DBhost = "Hostname o IP del tuo database";
$DBuser = "il tuo username";
$DBpass = "la tua password";
$DBName = "il nome del database";

/* specifichiamo il nome della nostra tabella */
$table = "amici";

/* Connettiamoci al database */
mysql_connect($DBhost,$DBuser,$DBpass) or die("Impossibile collegarsi al server");
@mysql_select_db("$DBName") or die("Impossibile connettersi al database $DBName");


//VERIFICO L'INVIO DEL FORM
if(isset($_POST['submit'])){
$data_articolo = $_POST['data'];//RECUPERO IL VALORE DELLA DATA
}//FINE ISSET


if(empty($data_articolo)){
//SE IL CAMPO DATA E' VUOTO ALLORA MOSTRA L'ARTICOLO DEL GIORNO, ALTRIMENTI MOSTRA L'ARTICOLO CORRELATA ALLA DATA SELEZIONATA
$sqlquery = mysql_query("SELECT * FROM $table WHERE DATE($data_art) = DATE(NOW()");
 }else{
$sqlquery = mysql_query("SELECT * FROM $table WHERE data_art = ".$data_articolo);
}

?>


<table>
<tr>
<td>Nome articolo</td>
<td>Data articolo</td>
</tr>

<?php 
while($riga = mysql_fetch_array($sqlquery)){
?>
<tr>
<td><?php echo $riga['nome_art'];?></td>
<td><?php echo $riga['data_art'];?></td>
</tr>
<?php
}//FINE WHILE
 ?>
</table>

Con questo codice dovresti ottenere il risultato sperato.
 

Caibo81

Nuovo Utente
4 Nov 2014
8
0
1
Perfetto tutto funzionante :jolly:

Il codice che mi hai scritto così non funzionava:

PHP:
if(empty($data_articolo)){ 
//SE IL CAMPO DATA E' VUOTO ALLORA MOSTRA L'ARTICOLO DEL GIORNO, ALTRIMENTI MOSTRA L'ARTICOLO CORRELATA ALLA DATA SELEZIONATA 
$sqlquery = mysql_query("SELECT * FROM $table WHERE DATE($data_art) = DATE(NOW()"); 
 }else{ 
$sqlquery = mysql_query("SELECT * FROM $table WHERE data_art = ".$data_articolo); 
}

Dopo averlo modificato in quest'altro modo va tutto alla perfezione

PHP:
if(empty($data_articolo)){ 
//SE IL CAMPO DATA E' VUOTO ALLORA MOSTRA L'ARTICOLO DEL GIORNO, ALTRIMENTI MOSTRA L'ARTICOLO CORRELATA ALLA DATA SELEZIONATA 
$sqlquery = mysql_query("SELECT * FROM $table WHERE data_art = DATE(NOW())"); 
 }else{ 
$sqlquery = mysql_query("SELECT * FROM $table WHERE data_art = '$data_articolo'"); 
}


Grazie infinite :) ho risolto!
 
Discussioni simili
Autore Titolo Forum Risposte Data
V [PHP] Estrazione con SQL PHP 1
D passare valori da database sql a php PHP 1
Emix Select concatenate php sql ajax PHP 2
L form multipla php sql,errore in inserimento MySQL 0
L Insert php sql da una form multipla PHP 6
moustache [RISOLTO] SQL PHP IIS PHP 8
WebmasterFioriniAndrea SQL, PHP Come passo i dati da una tabella? PHP 1
D [MySQL] [PHP] SQL andare da capo MySQL 0
A [PHP] registrazione utente in un database sql con confronto PHP 1
G sql select con array in php PHP 1
trattorino [PHP] sql estrarre in base all'ultima visita PHP 4
A [PHP] Modifica caratteri di una query Oracle SQL PHP 0
trattorino [PHP] sql aggiungere dato in una tabella senza cancellare contenuto PHP 6
Merlina3377 php insert dati su tabella sql PHP 9
K stampa e modifica tabella in php e ms sql PHP 2
G [PHP] Selezionare OGGI anno precedente per query sql PHP 2
S Select Concatenate Ajax, php, sql Presentati al Forum 16
giancadeejay [PHP] istruzione UPDATE SQL PHP 2
M PHP/SQL Inserire più valori in una colonna di tipo integer - Checkbox - PHP 3
S [PHP] Eseguire differenza su dati SQL presenti sulla stessa colonna PHP 1
giuseppe_123 [PHP] ricerca in una tabella con my sql PHP 0
G [Offro] [Retribuito] cerco assistenza per sito internet - programmazione PHP SQL Offerte e Richieste di Lavoro e/o Collaborazione 2
D php sql PHP 0
J PHP Ajax tabella SQL non viene mostrata PHP 0
J Php ajax sql controllare se l'id esiste in una tabella db PHP 2
F Form Multipli con PHP e SQL PHP 0
F PHP problema doppi apici all'interno di una query SQL PHP 1
C PHP - SQL server PHP 4
M php vs sql PHP 13
R modifica dati in tabella php+sql PHP 12
I Riga tabella HTML creata con cicli PHP e Query Sql che restituisca un campo se si clicca la Riga PHP 4
Sargon Php e My Sql Area ristretta con password PHP 5
F Programma PHP che esegue backup e ripristino di database SQL SERVER PHP 12
Sargon ordine delle parole PHP, My sql PHP 5
Komix Errore sintassi SQL "UPDATE" in file PHP PHP 10
Sargon Php / My sql motore di ricerca PHP 21
W [OFFRO] script php+sql semplice retribuito Offerte e Richieste di Lavoro e/o Collaborazione 0
I Php + sql PHP 1
E calendario in php + sql PHP 4
I Problema con PHP + SQL ! PHP 13
D [PHP/SQL] Estrarre risultati da 2 database Database 0
B php e sql-server PHP 13
S Query PHP My sql PHP 31
S query sql in php PHP 4
Z query sql e script php per ordinamento dati tabella PHP 2
N [collaborazione] programmatore php/mysql asp/sql server Rovigo, Mantova, Ferrara Offerte e Richieste di Lavoro e/o Collaborazione 2
H Php,Sql.. prendere i dati prima di oggi PHP 7
A PHP e MS SQL PHP 2
F PHP con SQL SERVER PHP 0
S [PHP] Riempire una casella select con query SQL PHP 11

Discussioni simili