|
|
| Autore |
Messaggio |
cli
moderatore


Registrato: 10/02/04 15:55
Messaggi: 402
Località: Padova
|
Oggetto: Logica MySQL
Inviato: 27.04.05 | 14:47 |
|
|
O eccoci quà con un bel problema: devo creare l' amministrazione per una pagina "menu.php" che viene richiamata all' interno della pagina index tramite "require", ok fin qua ci siamo, per adesso lasciamo perdere l' amministrazione, diciamo solo che il menu è testuale e dovrà essere aggiornato dall'amministratore che aggiungera e togliera voci....
Allora secondo logica il mio menu ha una struttura a sezioni, percui ogni sezione comprende delle sotto voci es:
--Home
--Chi Siamo
-Story
-Promozioni
-Negozi
--Altra Sezione
-pagina
-pagina
-pagina
ecco, una specie di albero adesso io doveri rendere dinamico il tutto......
Mi faccio la mia tabella sezioni e quella sottosezione per ogni sezione ciclo e controllo in quale sottosezione c'e l'ID sezione e cosi li sparo fuori... e giusto pensata cosi????
Se cosi va bene poi passiamo ad amministare  |
|
| Torna in cima |
|
|
Sponsor
|
|
 |
Coach
amministratore


Età: -1981
Registrato: 31/01/03 13:50
Messaggi: 4549
Località: Verona
|
Oggetto:
Inviato: 27.04.05 | 17:34 |
|
|
Si, il ragionamento potrebbe andare...
o per lo meno anch'io farei circa così.
Penso che sulla migliore gestione tecnica di database ti possano dare migliori indicazioni Pazzooo e gush...
io farei 2 tabelle come segue:
sezione:
| id | voce |
link:
| id | id_sezione | voce |
. ____________________________________________________________
Il Forum è uno strumento di condivisione, oltre a fare DOMANDE, si possono anche dare RISPOSTE! |
|
| Torna in cima |
|
|
Pazzooo
moderatore


Registrato: 20/01/04 12:57
Messaggi: 28
Località: Davanti ad un computer a Roma
|
Oggetto:
Inviato: 27.04.05 | 20:24 |
|
|
> ecco, una specie di albero
Albero di una sola generazione ? Cioe' una sezione contiene dei link che a loro volta NON contengono altri link ?
Le soluzioni proposte sotto sono valide per una generazione, l'estenzione a piu generazioni si puo fare con un po di complessita ma neanche troppa.
> Mi faccio la mia tabella sezioni e quella sottosezione per ogni sezione ciclo e > controllo in quale sottosezione c'e l'ID sezione e cosi li sparo fuori... e giusto > pensata cosi????
la tua sol va bene ma tanto per fare il fico ti presento 2 sol che mi vengono in mente adesso per 2 casi (e fu cosi che scrisse stronzate a non piu finire :P)
SOLUZIONE 1)
TECNICA) Il fatto di fare 2 tb con quella delle sezione solo con id e nome e' sconsigliato visto che l'unica cosa che faresti sarebbe sostituire un id al nome della sezione nella seconda tabella introducendo il casino del join per il collegamento. Inoltre facendo una sola tabella sei sempre in terza forma normale (l'organizzazione preferita dai server db (DBMS))
Secondo me ti conviene mettere tutto in una sola tabella e usare un "order by sezione, voce"
NB1) se vuoi usare il sistema del ciclo puoi estrarre i nomi de sezione usando "SELECT DISTINCT sezione FROM tb_menu" o con "GROUP BY" non so quale e' piu veloce su mysql
NB2) usando bene gli index questa tb e' efficente quanto 2 tb separate per ogni query (che mi viene in mente)
GUI) per la gui per l'inserimento di una voce di menu ti consiglio di mettere un drop-down con le sezioni esisteni (vedi NB1) seguito da un text per inserire una nuova sezione in caso non sia presente nell drop down, il tutto seguito da una o piu text area per i dati della voce di menu
SOLUZIONE 2)
Se invece vuoi permettere all admin di gestire l'ordine di apparizione nel menu delle diverse sezioni allora ti conviene fare con 2 tabelle
TECNICA) il concetto qui e' che hai un informazione che rigurado SOLO le sezioni e non la coppia (sezione,voce) da questo la necessita di una tb per la definizione della tb sezioni
tb_sezione(id, nome, ordine)
tb_voce(sezione, id, voce ...) con sezione FK a tb_sezione.id
il resto si gestisce come pensavi tu con degli "ORDER BY" sparsi sa e la ;)
FINALE) Come vuoi fare tu va benissimo e puoi usarlo ma secondo me ti obbliga a fare una parte di crea sezione distinta dalla creazione della voce di menu e questo complica la tua vita di programmatore e la sua vita di utente, la prima soluzione mi sembra piu efficente in semplicita di uso con una leggera complicazione nella parte gestita dal DB. Questa complicazione e' leggerissima, puo' essere eliminata con un indice sulla colonna sezione e inoltre ti permette di ridurre il numero di query che fai e percio il numero di connessioni (cavolo si vede che io lavoro su pgsql :P)
spero di essere stato chiaro, per ulteriori chiarimenti e altro scrivete qui e mandatemi una mail ____________________________________________________________ Pazzooo detto anche Frank |
|
| Torna in cima |
|
|
cli
moderatore


Registrato: 10/02/04 15:55
Messaggi: 402
Località: Padova
|
Oggetto:
Inviato: 28.04.05 | 12:21 |
|
|
Grazie Pazzooo molto utile il tuo intervento (ho dovuto leggermelo 2-3 volte, ma sono io che non digerisco db)
ti posto un immagine del phpmyadmin ho optato per la prima soluzione tabella unica... ce ne sono 2 ma era per non cancellare l'altra e tutto su menu_sezioni.. che dici???
magari ti mando il .sql per posta  |
|
| Torna in cima |
|
|
Pazzooo
moderatore


Registrato: 20/01/04 12:57
Messaggi: 28
Località: Davanti ad un computer a Roma
|
Oggetto:
Inviato: 28.04.05 | 13:19 |
|
|
se funziona allora e' buono  ____________________________________________________________ Pazzooo detto anche Frank |
|
| Torna in cima |
|
|
cli
moderatore


Registrato: 10/02/04 15:55
Messaggi: 402
Località: Padova
|
|
| Torna in cima |
|
|
Coach
amministratore


Età: -1981
Registrato: 31/01/03 13:50
Messaggi: 4549
Località: Verona
|
|
| Torna in cima |
|
|
cli
moderatore


Registrato: 10/02/04 15:55
Messaggi: 402
Località: Padova
|
Oggetto:
Inviato: 29.04.05 | 09:29 |
|
|
Bho, non funzia niente qualcun' altro???
coach scrivi:
| Codice: | $sezioni = "SELECT *
FROM menu_sezioni
WHERE menu_sottosezione = ''";
$sezioni_r = mysql_query($sezioni_r, $feeling); |
fai la query chiamando $sezioni_r = mysql_query($sezioni_r, $feeling); non sarebbe cosi invece?? $sezioni_r = mysql_query($sezioni, $feeling); |
|
| Torna in cima |
|
|
Coach
amministratore


Età: -1981
Registrato: 31/01/03 13:50
Messaggi: 4549
Località: Verona
|
Oggetto:
Inviato: 29.04.05 | 12:22 |
|
|
si, infatti credo non funzioni proprio x alcuni errori di digitazione che ho fatto scrivendo di fretta...
correggo...
P.S: per trovare gli errori utilizza degli echo, per esempio di query ed errori
. ____________________________________________________________
Il Forum è uno strumento di condivisione, oltre a fare DOMANDE, si possono anche dare RISPOSTE! |
|
| Torna in cima |
|
|
Coach
amministratore


Età: -1981
Registrato: 31/01/03 13:50
Messaggi: 4549
Località: Verona
|
|
| Torna in cima |
|
|
Pazzooo
moderatore


Registrato: 20/01/04 12:57
Messaggi: 28
Località: Davanti ad un computer a Roma
|
Oggetto:
Inviato: 30.04.05 | 00:05 |
|
|
| Hey cli mica tocca a coach scrivere il tuo codice, ti aiuta, scrive tanto codice fa un paio di errorini e tu tutto quello che trovi da dire e' | cli ha scritto: | | Bho, non funzia niente qualcun' altro??? | . Mi sarei aspettato un "grazie coach, il codice non era perfetto, ma dopo un po di lotta posto la versione funzionante" (o varianti su questo stile)
se non sai programmare bene in php e' un ottima occasione per imparare, cercando di risolvere dei piccoli bug e capendo cosi tutta la logica di un codice scritto bene. ____________________________________________________________ Pazzooo detto anche Frank |
|
| Torna in cima |
|
|
cli
moderatore


Registrato: 10/02/04 15:55
Messaggi: 402
Località: Padova
|
Oggetto:
Inviato: 02.05.05 | 16:00 |
|
|
Pazzooo guarda, mi scuso con Coach e con tutti quelli che aiutano gli altri utenti in questo e in tutti gli altri forum dell'intera internet, forse il mio messaggio sembrava senza grazia, secco, pretenzioso e maleducato.
Un grande "scusa" a tutti coloro che si sono sentiti offesi e usati dalla mia risposta.
La prossima volta misurerò con grandissima attenzione i miei "scritti", tentando di formulare dei testi che non lascino spazio a libere interpretazioni da parte di nessuno.
Grazie della lezione.
Detto questo vorrei evitare di uscire dall' argomento e porre un quesito inerente al senso principale della discussione, io solitamente creo un collegamento al database in una pagina che richiamo con un "require":
| Codice: | require_once('Connections/feeling.php'); |
il codice di questa pagina è il seguente:
| Codice: | <?php
session_start();
//--------------------------------------------------local connection::::::
$hostname_feeling = "localhost";
$database_feeling = "feeling";
$username_feeling = "root";
$password_feeling = "";
$feeling = mysql_connect($hostname_feeling, $username_feeling, $password_feeling) or trigger_error(mysql_error(),E_USER_ERROR);
?> |
adesso vorrei sapere come mai se richiamo lo script che gentilmente Coach ha scritto ottengo un messaggio di errore "Nessun database selezionato"
se invece lascio il codice di chiamata al database di Coach funziona...
tipo se io uso:
| Codice: | <?php require_once('Connections/feeling.php');?>
<table width="100%" border="0" cellspacing="0" cellpadding="0">
<?php
//mysql_connect('localhost','root','');
//mysql_select_db('cli');
$sezioni = "SELECT *
FROM menu_sezioni
WHERE menu_sottosezione is NULL";
$sezioni_r = mysql_query($sezioni);
#echo $sezioni.mysql_error();
while($sez = mysql_fetch_array($sezioni_r)){
echo' <tr>
<td><b>'.$sez['nome_menu_sezione'].'</b></td>
</tr>';
$sottosezioni = "SELECT *
FROM menu_sezioni
WHERE nome_menu_sezione = '{$sez['nome_menu_sezione']}' AND menu_sottosezione is not NULL";
$sottosezioni_r = mysql_query($sottosezioni);
#echo $sottosezioni.mysql_error();
while($sottosez = mysql_fetch_array($sottosezioni_r)){
echo' <tr>
<td> - '.$sottosez['menu_sottosezione'].'</td>
</tr>';
}
}
?>
<tr>
<td> </td>
</tr>
</table> |
ottengo un errore... "Nessun database selezionato" se invece uso il codice con la connesione di Coach funziona perfettamente....
non e che voi intuite un errore nella mia pagina di connessione che molto probabilmente io ignoro??? |
|
| Torna in cima |
|
|
Coach
amministratore


Età: -1981
Registrato: 31/01/03 13:50
Messaggi: 4549
Località: Verona
|
|
| Torna in cima |
|
|
cli
moderatore


Registrato: 10/02/04 15:55
Messaggi: 402
Località: Padova
|
Oggetto:
Inviato: 03.05.05 | 15:26 |
|
|
Eccolooo eh eh che errore non chiamavo il "db"
Vergognoso
Adesso funzia naturalmente
Grazie Coach.... |
|
| Torna in cima |
|
|
Pazzooo
moderatore


Registrato: 20/01/04 12:57
Messaggi: 28
Località: Davanti ad un computer a Roma
|
Oggetto:
Inviato: 03.05.05 | 19:30 |
|
|
Tutto bene quel che finisce bene (ma che cavolo di frase... mah :P) ____________________________________________________________ Pazzooo detto anche Frank |
|
| Torna in cima |
|
|
|