Forum Flash, Actionscript, PHP e MySQL
Logica MySQL

 
Nuovo Topic   Rispondi    Forum Flash, Actionscript, PHP e MySQL » PHP
Precedente  Successivo 
Autore Messaggio
cli
moderatore
moderatore



Registrato: 10/02/04 15:55
Messaggi: 402
Località: Padova

MessaggioOggetto: Logica MySQL
Inviato: 27.04.05 | 14:47
Rispondi citando

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 Mr. Green
Torna in cima
Profilo Messaggio privato [ Nascosto ]
Sponsor
Coach
amministratore
amministratore


Età: -1981
Registrato: 31/01/03 13:50
Messaggi: 4549
Località: Verona

MessaggioOggetto:
Inviato: 27.04.05 | 17:34
Rispondi citando

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
Profilo Messaggio privato [ Nascosto ] HomePage Yahoo Messenger MSN Messenger Skype
Pazzooo
moderatore
moderatore



Registrato: 20/01/04 12:57
Messaggi: 28
Località: Davanti ad un computer a Roma

MessaggioOggetto:
Inviato: 27.04.05 | 20:24
Rispondi citando

> 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
Profilo Messaggio privato   HomePage Yahoo Messenger MSN Messenger
cli
moderatore
moderatore



Registrato: 10/02/04 15:55
Messaggi: 402
Località: Padova

MessaggioOggetto:
Inviato: 28.04.05 | 12:21
Rispondi citando

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 Wink
Torna in cima
Profilo Messaggio privato [ Nascosto ]
Pazzooo
moderatore
moderatore



Registrato: 20/01/04 12:57
Messaggi: 28
Località: Davanti ad un computer a Roma

MessaggioOggetto:
Inviato: 28.04.05 | 13:19
Rispondi citando

se funziona allora e' buono Very Happy
____________________________________________________________
Pazzooo detto anche Frank
Torna in cima
Profilo Messaggio privato   HomePage Yahoo Messenger MSN Messenger
cli
moderatore
moderatore



Registrato: 10/02/04 15:55
Messaggi: 402
Località: Padova

MessaggioOggetto:
Inviato: 28.04.05 | 17:39
Rispondi citando

E bhe funzionare al primo colpo sarebbe stato troppo bello Crying or Very sad

 
Codice:
<?php
mysql_select_db
($database_feeling$feeling);
$query_sezioni "SELECT * FROM menu_sezioni WHERE menu_sottosezione is null";
$sezioni mysql_query($query_sezioni$feeling) or die(mysql_error());
$row_sezioni mysql_fetch_assoc($sezioni);
//$totalRows_sezioni = mysql_num_rows($sezioni);

//mysql_select_db($database_feeling, $feeling);
$query_sottosezioni "SELECT DISTINCT menu_sottosezione FROM menu_sezioni WHERE nome_menu_sezione = '{$row_sezioni['nome_menu_sezione']}'";
$sottosezioni mysql_query($query_sottosezioni$feeling) or die(mysql_error());
$row_sottosezioni mysql_fetch_assoc($sottosezioni);
//$totalRows_sottosezioni = mysql_num_rows($sottosezioni);
?>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>menu</title>
</head>
<body>
<?php do { ?>
<table width="100%"  border="0" cellpadding="0" cellspacing="0">
  <tr>
    <td><table width="100%"  border="0" cellspacing="0" cellpadding="0">
      <tr>
        <td>--<?php echo $row_sezioni['nome_menu_sezione']; ?></td>
      </tr>
      <tr>
        <td>
        
        <table width="100%"  border="0" cellspacing="0" cellpadding="0">
          <?php do { ?>
          <tr>
            <td class="paddin5">-<?php echo $row_sottosezioni['menu_sottosezione']; ?></td>
          </tr>
          <?php } while ($row_sottosezioni mysql_fetch_assoc($sottosezioni)); ?>
        </table>
        </td>
      </tr>
      <tr>
        <td class="puntini-in-td">&nbsp;</td>
      </tr>
    </table></td>
  </tr>
</table>
<?php } while ($row_sezioni mysql_fetch_assoc($sezioni)); ?>
<table width="100%"  border="0" cellspacing="0" cellpadding="0">
       <tr>
       <td>tabella a se</td>
       </tr>
</table>
</body>
</html>
<?php
mysql_free_result
($sezioni);
mysql_free_result($sottosezioni);
?>


non mi filtra in base alla prima query....

$query_sottosezioni = "SELECT DISTINCT menu_sottosezione FROM menu_sezioni WHERE nome_menu_sezione = '{$row_sezioni['nome_menu_sezione']}'";

in piu crea un record vuoto che sballa la seguenza....

se gli do io il valore funzia tipo...

$query_sottosezioni = "SELECT DISTINCT menu_sottosezione FROM menu_sezioni WHERE nome_menu_sezione = 'Chi Siamo'";

così funzia pero vedo questo es:


--Home
-
-Story
-Promozioni
-Negozi

crea un "record" cioè ripete il <tr><td>- ecc.. vuoto invece dovrebbe essere

--Home
-Story
-Promozioni
-Negozi

questo perche gli ho passato il io il valore "Chi Siamo" se no dovrebbe essere:

--Home

--Chi Siamo
-Story
-Promozioni
-Negozi

non so che dire

P.s.: Coach, lo script che mi hai fatto tu non funzionava, ma sicuramente sbaglio io...
Torna in cima
Profilo Messaggio privato [ Nascosto ]
Coach
amministratore
amministratore


Età: -1981
Registrato: 31/01/03 13:50
Messaggi: 4549
Località: Verona

MessaggioOggetto:
Inviato: 28.04.05 | 21:19
Rispondi citando

ciao cli, io farei così:
 
Codice:
<table width="100%" border="0" cellspacing="0" cellpadding="0">
<?php
mysql_select_db
($database_feeling$feeling);
$sezioni "SELECT *
        FROM menu_sezioni
        WHERE menu_sottosezione = ''"
;
$sezioni_r mysql_query($sezioni$feeling);
while(
$sez mysql_fetch_array($sezioni_r)){
    echo
'    <tr>
                <td>'
.$sez['nome_menu_sezioni'].'</td>
            </tr>'
;
    
$sottosezioni "SELECT *
                    FROM menu_sezioni
                    WHERE nome_menu_sezione = '
{$sez['nome_menu_sezione']}'";
    
$sottosezioni_r mysql_query($sottosezioni$feeling);
    while(
$sottosez mysql_fetch_array($sottosezioni_r)){
          echo
'    <tr>
                    <td>'
.$sottosez['nome_menu_sottosezione'].'</td>
                  </tr>'
;
    }
?>
  <tr>
    <td>&nbsp;</td>
  </tr>
</table>


...mio gusto personale è rendere al minimo (il più possibile) il nome delle variabili e dei campi del DB.

P.S: il $feeling lo puoi tralasciare avendo un solo DB.

.

____________________________________________________________


Il Forum è uno strumento di condivisione, oltre a fare DOMANDE, si possono anche dare RISPOSTE!


Ultima modifica di Coach il 29.04.05 | 17:24, modificato 4 volte in totale
Torna in cima
Profilo Messaggio privato [ Nascosto ] HomePage Yahoo Messenger MSN Messenger Skype
cli
moderatore
moderatore



Registrato: 10/02/04 15:55
Messaggi: 402
Località: Padova

MessaggioOggetto:
Inviato: 29.04.05 | 09:29
Rispondi citando

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
Profilo Messaggio privato [ Nascosto ]
Coach
amministratore
amministratore


Età: -1981
Registrato: 31/01/03 13:50
Messaggi: 4549
Località: Verona

MessaggioOggetto:
Inviato: 29.04.05 | 12:22
Rispondi citando

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
Profilo Messaggio privato [ Nascosto ] HomePage Yahoo Messenger MSN Messenger Skype
Coach
amministratore
amministratore


Età: -1981
Registrato: 31/01/03 13:50
Messaggi: 4549
Località: Verona

MessaggioOggetto:
Inviato: 29.04.05 | 23:46
Rispondi citando

Ciao cli,
ho guardato l'sql che mi hai inviato via e-mail e controllando erano come pensavo, solamente errori di battitura.

Allego anche il file sql, ed ecco il code praticamente quasi uguale al precedente ma corretto nelle parole e nella seconda query:
 
Codice:
<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>&nbsp;</td>
  </tr>
</table>

____________________________________________________________


Il Forum è uno strumento di condivisione, oltre a fare DOMANDE, si possono anche dare RISPOSTE!
Torna in cima
Profilo Messaggio privato [ Nascosto ] HomePage Yahoo Messenger MSN Messenger Skype
Pazzooo
moderatore
moderatore



Registrato: 20/01/04 12:57
Messaggi: 28
Località: Davanti ad un computer a Roma

MessaggioOggetto:
Inviato: 30.04.05 | 00:05
Rispondi citando

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
Profilo Messaggio privato   HomePage Yahoo Messenger MSN Messenger
cli
moderatore
moderatore



Registrato: 10/02/04 15:55
Messaggi: 402
Località: Padova

MessaggioOggetto:
Inviato: 02.05.05 | 16:00
Rispondi citando

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>&nbsp;</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
Profilo Messaggio privato [ Nascosto ]
Coach
amministratore
amministratore


Età: -1981
Registrato: 31/01/03 13:50
Messaggi: 4549
Località: Verona

MessaggioOggetto:
Inviato: 02.05.05 | 19:34
Rispondi citando

Ciao cli,
come da errore restituito: "Nessun database selezionato"

Manca per l'appunto la selezione del database. fagiano

 
Codice:
<?php
session_start
();

//--------------------------------------------------local connection::::::
$hostname_feeling "localhost";
$database_feeling "feeling";
$username_feeling "root";
$password_feeling "";
mysql_connect($hostname_feeling$username_feeling$password_feeling);
# qui manca la selezione del DB
mysq_select_db($database_feeling);
?>


.

____________________________________________________________


Il Forum è uno strumento di condivisione, oltre a fare DOMANDE, si possono anche dare RISPOSTE!
Torna in cima
Profilo Messaggio privato [ Nascosto ] HomePage Yahoo Messenger MSN Messenger Skype
cli
moderatore
moderatore



Registrato: 10/02/04 15:55
Messaggi: 402
Località: Padova

MessaggioOggetto:
Inviato: 03.05.05 | 15:26
Rispondi citando

Eccolooo eh eh che errore non chiamavo il "db"

Vergognoso dho dho dho

Adesso funzia naturalmente

Grazie Coach....
Torna in cima
Profilo Messaggio privato [ Nascosto ]
Pazzooo
moderatore
moderatore



Registrato: 20/01/04 12:57
Messaggi: 28
Località: Davanti ad un computer a Roma

MessaggioOggetto:
Inviato: 03.05.05 | 19:30
Rispondi citando

Tutto bene quel che finisce bene (ma che cavolo di frase... mah :P)
____________________________________________________________
Pazzooo detto anche Frank
Torna in cima
Profilo Messaggio privato   HomePage Yahoo Messenger MSN Messenger
Mostra prima i messaggi di:   
Nuovo Topic   Rispondi    Forum Flash, Actionscript, PHP e MySQL » PHP Tutti i fusi orari sono GMT + 2 ore
Pagina 1 di 1

Discussioni Simili
Topic Autore Forum Risposte Ultimo Messaggio
Nessun nuovo messaggio Logica MySql II cli PHP 7 05.05.05 | 09:10 Leggi gli ultimi messaggi
cli
Nessun nuovo messaggio Logica condizionale su ritorno PHP ab69aho ActionScript & Server Side 6 26.02.10 | 17:43 Leggi gli ultimi messaggi
ab69aho
Nessun nuovo messaggio MySQL 5 Coach News dal Web 0 28.10.05 | 11:13 Leggi gli ultimi messaggi
Coach
Nessun nuovo messaggio flash e MySQL wicked ActionScript & Server Side 4 29.06.06 | 19:21 Leggi gli ultimi messaggi
Coach
Nessun nuovo messaggio MySQL AB Web Seminars Coach PHP 0 03.04.07 | 11:09 Leggi gli ultimi messaggi
Coach



 
Vai a:  
Non puoi inserire nuovi Topic in questo forum
Non puoi rispondere ai Topic in questo forum
Non puoi modificare i tuoi messaggi in questo forum
Non puoi cancellare i tuoi messaggi in questo forum
Non puoi votare nei sondaggi in questo forum
Non puoi allegare files in questo forum
Non puoi downloadare gli allegati in questo forum



Powered by phpBB © 2001, 2002 phpBB Group - phpBB SEO Designed by coachdesign - © 2003-2005