Visualizzazione dei risultati da 1 a 4 su 4
  1. #1

    creare una classe per rendere dinamico l'inserimento

    ciao a tutti! potreste darmi qualche consiglio per creare una classe generica per inserire dei dati html? vi spiego in breve: ho creato un cms che mi permette di realizzare pagine web in modo semplice e veloce. Ho creato un DB in cui sono registrate delle scelte, ovvero i tipi di "box" da inserire nella pagina (ad esempio un'immagine o un form o un menu) e le posizioni all'interno del layout in cui inserire il box. Quando voglio realizzare una pagina web, scelgo nelle select che ho creato ciò che voglio inserire, invio e nel DB viene salvata la mia scelta e visualizzata una tabella a video in cui vengono mostrati tutte le mie scelte fatte, ovvero tutti i "box" che voglio inserire all'interno del layout nelle posizioni scelte(header, sidebar, main, footer..). Con un pulsante visualizzo così la mia anteprima, ovvero il layout completo e funzionante. Bene, fin qui sono riuscita a realizzare un modello statico... In quanto, se modifico l'html del box che voglio inserire ad esempio dentro all'header, poi se lo inserisco un'altra volta, inserisce il box con lo stesso contenuto.. Mentre ovviamente deve essere dinamico cambiare ogni volta che inserisco contenuti nuovi. Ho pensato che forse potrei ovviare creando una classe generica con tutti i "box" e dentro un html generico da poter cambiare al momento dell'inserimento ma nn so se si può fare... Avete qualche consiglio da darmi su come procedere? per fare in modo che l'inserimento del html diventi dinamico? vi mostro il codice solo del header con tutti i box creati, ho utilizzato twitter bootstrap per la grafica... Spero che riusciate a darmi una mano perchè mi sono bloccata!

    Codice PHP:
    <?php $header="SELECT box.nome_box, layout.nome_lay, sum.sum_id FROM box INNER JOIN sum ON box.id_box = sum.sum_id_box INNER JOIN layout ON layout.id_lay = sum.sum_id_layout WHERE sum_id_layout = 1"
    $res=mysql_query($header); while($sol=mysql_fetch_assoc($res)){ switch($sol['nome_box']){ 
    case 
    'Mappa'
    print(
    '<div style="float:left;height:30px;width:50px;background:#fce300;">mappa</div>'); break; 
    case 
    'Contatti': print('<div style="float:right;"><address> [b]Test, Inc.[/b]
     795 Folsom Ave, Suite 600
     San Francisco, CA 94107
     <abbr title="Phone">P:</abbr> (123) 456-7890 </address> <address> [b]Full Name[/b]
     [email="#"]first.last@gmail.com[/email] </address></div>'
    ); 
    break; 
    case 
    'Articoli': print('

    <div style="height:200px;width:700px;"> <h1>The Last Dreamers</h1>The Last Dreamers e&grave; un gruppo rock composto da ....</small></p> </div>'
    ); 
    break; 
    case 
    'Ricerca': print('<div><form style="float:left;" class="form-search"> <input type="text" class="input-medium search-query"> <button type="submit" class="btn">Search</button> </form></div>'); 
    break; 
    case 
    'Menu': print('

    <div class="subnav"> <ul class="nav nav-pills">[*][url="#"]link1[/url][*][url="#"]link2[/url][*][url="#"]link3[/url][*][url="#"]link4[/url][*][url="#"]link5[/url][*][url="#"]link6[/url][/list]</div>'
    ); break; case 'NavFixedTop': print('<div class="bs-docs-example bs-navbar-top-example"> <div class="navbar navbar-fixed-top" style="position: absolute;"> <div class="navbar-inner"> <div class="container" style="width: auto; padding: 0 20px;"> <ul class="nav nav-pills">[*][url="#"]Chi Siamo[/url][*][url="#"]I Nostri Video[/url][*][url="#"]Alessio Solista[/url][*][url="#"]Simona Solista[/url][*][url="#"]RockProject[/url][*][url="#"]Contattaci[/url][*][url="#"][img]immagini/facebook.png[/img][/url][*][url="#"][img]immagini/twitter.png[/img][/url][*][url="#"][img]immagini/youtube.jpg[/img][/url][/list]</div> </div> </div> </div>'); 
    break; 
    case 
    'TextArea': print('<div style="float:left;" class="control-group"> <label class="control-label" for="textarea">Textarea</label> <div class="controls"> <textarea class="input-xlarge" id="textarea" rows="3"></textarea> </div> </div>'); 
    break; 
    case 
    'Button': print('[url="#"]bottone[/url]'); break; 
    case 
    'Form': print('<div><form class="form-inline"> <input type="text" class="input-small" placeholder="Email"> <input type="password" class="input-small" placeholder="Password"> <label class="checkbox"> <input type="checkbox"> Remember me </label> <button type="submit" class="btn">Sign in</button> </form></div>'); 
    break; 
    case 
    'Image': print('<div>[url="http://imageshack.us/photo/my-images/444/rscn8806.jpg/"][img]http://img444.imageshack.us/img444/3370/rscn8806.jpg[/img][/url]</div>'); break; 
    case 
    'Breadcrumbs': print('<div><ul class="breadcrumb">[*][url="#"]Home[/url] <span class="divider">/</span>[*][url="#"]Pagina uno[/url] <span class="divider">/</span> <li class="active">Pagina corrente[/list]</div>');
     break; 


    ?> 
    </header>

  2. #2
    Utente di HTML.it L'avatar di boots
    Registrato dal
    Oct 2012
    Messaggi
    1,626
    Secondo me dovresti rivedere bene i tipi di box...che senso ha mettere form, textarea o button?

    Inoltre eviterei di mettere box che non sono "autosufficienti". mi spiego: il box menù, come quello articoli non hanno bisogno di altre informazioni. Articoli, ad esempio, prenderà gli ultimi articoli e li metterà nel box. Ma immagine o mappa? nella pagina dove crei il layout oltre a selezionare la posizione devi anche specificare quale immagine mettere, no?

    Una volta che hai definito quali sono i box, potresti crearti le classi che li vanno a gestire.
    Ad esempio, potresti farti la classe Menu che fa una query sul db, prende le voci del menù e crea l'html. quindi nel tuo codice andresti a scrivere

    Codice PHP:
    case 'Menu'
       
    $menu = new Menu(); // nel costruttore leggi dal db le voci del menù
       
    echo $menu->render($position);
      
    // stampa l'html per il menù, $position è la posizione (header, sidebar, etc) in modo da 
      // visualizzarlo orizzontalmente o verticalmente
    break; 
    e così via...

    Nel caso di immagine, mappa o roba simile dovesti aggiungere un campo sulla tabella dove fai l'associazione box-pagina-posizione dove mettere il "contenuto". Nel caso di immagine l'url alla stessa. Quindi lo vai a richiamare

    Codice PHP:
    case 'Immagine'
       echo 
    '[img]'.$sol['box_content'].'[/img]';
       
    // $sol['box_content'] contiente l'url dell'imagine
    break; 
    Però, come ti ho detto, io eviterei di creare dei box così perchè sono difficili da gestire soprattutto se ne hai di eterogenei

  3. #3
    si ma tutte le info bootstrap? dove le metto?

  4. #4
    Utente di HTML.it L'avatar di boots
    Registrato dal
    Oct 2012
    Messaggi
    1,626
    Con bootstrap, intendi la grafica di twitter ?
    Quella la metti nel metodo che ti renderizza l'html...tipo nel caso del menu avesti, ad esempio

    Codice PHP:
    class Menu{
     
       private 
    $items;   

       public function 
    __construct(){
             
    // leggo le voci del menu e le metto in items;
       
    }

       public function 
    render($position){
           
    ob_start();
           echo 
    '<div class="subnav"> <ul class="nav nav-pills">';
           foreach(
    $this->items as $item){
               echo 
    '[*][url="'.$item['link'].'"]'.$item['name'].'[/url]';
           }
           echo 
    '[/list]</div>';
           return 
    ob_get_clean();
       }


Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.