Indice del forum Olimpo Informatico
I Forum di Zeus News
Leggi la newsletter gratuita - Attiva il Menu compatto
 
 FAQFAQ   CercaCerca   Lista utentiLista utenti   GruppiGruppi   RegistratiRegistrati 
 ProfiloProfilo   Messaggi privatiMessaggi privati   Log inLog in 

    Newsletter RSS Facebook Twitter Contatti Ricerca
MySQL --> PHP. Query incrociata ID+ANNO
Nuovo argomento   Rispondi    Indice del forum -> Linguaggi per Internet
Precedente :: Successivo  
Autore Messaggio
frons
Mortale devoto
Mortale devoto


Registrato: 08/11/07 11:31
Messaggi: 14
Residenza: Ancona

MessaggioInviato: 24 Nov 2007 15:41    Oggetto: MySQL --> PHP. Query incrociata ID+ANNO Rispondi citando

Salve, ho un database pieno di articoli, ciascuno di essi postato da un utente e ciascuno di essi ha la propria data (nel formato "d/m/Y").

Mi serve di costruire un form per la ricerca nel quale possa selezionare l'utente (dalla lista utenti) e l'anno (in una lista che vada dal 2003 all'anno attuale).
Come risultato mi deve dare solamente la lista di articoli postati da quel tale utente nell'anno selezionato.

Qualcuno può postare il codice necessario o uno simile in modo che possa capire come procedere?

(Per favore niente rimandi ad altri topic o simili, ho già controllato in giro da solo)
Top
Profilo Invia messaggio privato HomePage MSN
freemind
Supervisor sezione Programmazione
Supervisor sezione Programmazione


Registrato: 04/04/07 20:28
Messaggi: 4643
Residenza: Internet

MessaggioInviato: 24 Nov 2007 19:27    Oggetto: Rispondi citando

Iniziamo a definire alcune ipotesi che tu adatterai alla tua situazione.
1) Tabella utenti: Utenti(Id,Nome) con chiave Id. Tu avrai più campi nella tabella ma qui noi siamo interessati a questi due.
2) Tabella degli articoli: Articoli(Id,Utente,Data,Testo) con chiave Id e la data memoriazzata come Y-m-d.

3) Supponiamo che la form di ricerca sia nel file Cerca.php e questa ciclerà su Risultati.php

Non ti scrivo il codice html intero delle pagine ma solo quello delle parti che ci interessano per la soluzione al problema.

Nel file Cerca.php dovrai avere qualcosa del tipo:
In testa alla pagina scriviamo il codice php per connetrci al db
<?
$MyConn=mysql_connect('localhost','nomeutente','passutente') or die('Errore');
$MyDB=mysql_select_db('nomedb') or die('Errore');
?>
....
....
....

poi creiamo il form tramite:

<form name="Frm" method="get" action="Risultati.php">
Utente:&nbsp;
<select name="d_Utente">
<option value="-1">-- Scegli un utente -- </option>
<?
/*
Qui faccio la query per per tirare fuori la lista di utenti
*/
$Select
= "SELECT Id,Nome FROM Utenti ORDER BY Nome ASC ";
$Rs=mysql_query($Select);

// se il recordset è buono e non vuoto, aggiungo le voci alla select
if ($Rs && mysql_num_rows($Rs)>0)
{
while ($MyRow=mysql_fetch_array($Rs))
{
print '<option value="' . $MyRow['Id'] .'">' . $MyRow['Nome'] . '</option>';
}
}
?>
</select>
<br>
Anno:&nbsp;
<select name="d_Anno">
<option value="0000">-- Scegli l'anno --</option>
<?
for ($i=2003;$i<=date('Y');++$i)
{
print '<option value="' . $i . '">' . $i . '</option>';
}
?>
</select>
<br>
<input type="submit" name="Command" value="Cerca">
</form>

Risultati.php avrà invece la forma che segue:

In testa alla pagina scriviamo il codice phpper connetrci al db
<?
$MyConn=mysql_connect('localhost','nomeutente','passutente') or die('Errore');
$MyDB=mysql_select_db('nomedb') or die('Errore');
?>
....
....
....

Poi da qualche altra parte, dove vuoi vedere l'elenco scriviamo qualcosa del tipo:

<?
// tiro fuuri glli articoli dell'utente nell'anno scelto
$Select
= "SELECT * FROM Articoli WHERE Id='" . $_REQUEST['d_Utente'] . '" AND DATE_FORMAT(Data,'%Y')='" . $_REQUEST['d_Anno'] . '" ORDER BY Data DESC ";

$Rs=mysql_query($Select);

// se il recordset è buono e non vuoto,creo la lista degli articoli
if ($Rs && mysql_num_rows($Rs)>0)
{
while ($MyRow=mysql_fetch_array($Rs))
{
print $MyRow['Articolo'];
}
}
?>

Quello che ti ho scritto non è il massimo, però credo che come schema da seguire vada bene.
Ovviamente sarebbe il caso che tu adattassi il tutto in modo che a video venga impaginato bene, magari dentro ad una tabella con tante righe quanti sono gli articoli e per ognuno scrivere a fianco la sua data.
In oltre, dovrai al posto di localhost, nomeutente, passutente e nomedb nelle connessioni al db, scrivere
i valori corretti dei parametri.

Spero di esserti stato di aiuto

P.S. potrebbero esserci errori di sintassi perchè hop scritto un po' in fretta perchè sono di volata....
Top
Profilo Invia messaggio privato
freemind
Supervisor sezione Programmazione
Supervisor sezione Programmazione


Registrato: 04/04/07 20:28
Messaggi: 4643
Residenza: Internet

MessaggioInviato: 24 Nov 2007 19:29    Oggetto: Rispondi citando

Ecco, appunto sugli errori, dovresti cambiare la riga:
print $MyRow['Articolo'];
conb questa
$MyRow['Articolo'] . '<br><br>';

in modo da mandare a capo due volte dopo ogni articolo
Top
Profilo Invia messaggio privato
SverX
Supervisor Macchinisti
Supervisor Macchinisti


Registrato: 25/03/02 11:16
Messaggi: 11559
Residenza: Tokelau

MessaggioInviato: 26 Nov 2007 16:45    Oggetto: Re: MySQL --> PHP. Query incrociata ID+ANNO Rispondi citando

frons ha scritto:
Mi serve di costruire un form per la ricerca nel quale possa selezionare l'utente (dalla lista utenti) e l'anno (in una lista che vada dal 2003 all'anno attuale).


per la prima interrogherei la tabella degli articoli facendo una cosa tipo

Codice:
SELECT DISTINCT NomeUtente FROM TabellaArticoli ORDER BY NomeUtente


per la seconda userei la funzione di PHP date()... e quindi farei un ciclo da 2003 a date("Y")
Top
Profilo Invia messaggio privato HomePage
frons
Mortale devoto
Mortale devoto


Registrato: 08/11/07 11:31
Messaggi: 14
Residenza: Ancona

MessaggioInviato: 27 Nov 2007 15:11    Oggetto: Rispondi citando

freemind ha scritto:
Ecco, appunto sugli errori, dovresti cambiare la riga:
print $MyRow['Articolo'];
conb questa
$MyRow['Articolo'] . '<br><br>';

in modo da mandare a capo due volte dopo ogni articolo


Ti ringrazio, ancora non ho avuto modo di provare con il sistema che hai suggerito tu, ma non riesco a capire una cosa: a cosa si riferisce l'argomento Articolo nella variabile $MyRow Very Happy
Top
Profilo Invia messaggio privato HomePage MSN
freemind
Supervisor sezione Programmazione
Supervisor sezione Programmazione


Registrato: 04/04/07 20:28
Messaggi: 4643
Residenza: Internet

MessaggioInviato: 27 Nov 2007 17:59    Oggetto: Rispondi

Scusa, in realtà all'inizio volevo fare un esempio con la tabella Articoli fatta nel modo seguente:
Articoli(Id,Utente,Data,Articolo)
ma poi ho cambiato con:
Articoli(Id,Utente,Data,Testo).

Di fatto la riga deve diventare:
$MyRow['Testo'] . '<br><br>';

Ho sempre troppa fretta purtroppo, prima o poi cambio lavoro :) !
Top
Profilo Invia messaggio privato
Mostra prima i messaggi di:   
Nuovo argomento   Rispondi    Indice del forum -> Linguaggi per Internet Tutti i fusi orari sono GMT + 1 ora
Pagina 1 di 1

 
Vai a:  
Non puoi inserire nuovi argomenti
Non puoi rispondere a nessun argomento
Non puoi modificare i tuoi messaggi
Non puoi cancellare i tuoi messaggi
Non puoi votare nei sondaggi