Pagina 1 di 3 1 2 3 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 26
  1. #1
    Utente di HTML.it
    Registrato dal
    May 2006
    Messaggi
    555

    Associare un campo di una tabella ad un determinato DIV di testo e immagine

    Salve ragazzi,
    ripropongo il problema sotto altra forma, forse più comprensibile. Allora, il fatto è questo. Ho costruito un'area amministrazione per il mio sito (anche grazio al fondamentale aiuto di Drugo), attraverso la quale sia possibile gestire inserimento di news e decidere quale mettere in linea (o pubblicare) in home page.

    Il tutto è stato realizzato attraverso l'inserimento nella tabella "articoli" di un campo numerico denominato PUB, al quale viene appunto assegnato un nuemero. Attraverso la scelta del numero, la news viene pubblicata in home page. Se il numero è zero, allora viene tolta la news pubblicata.

    Per capirci, riporto il codice php del file "scegli.php", ossia quello che permette la scelta del numero.


    <?php
    include("config.php");
    $id = $_GET["id"];
    mysql_connect($db_host,$db_user,$db_password,$db_n ame) or die ("errore nella connessione");
    mysql_select_db("$db_name") or die ("errore nella selezione del database");

    // esecuzione prima query
    $count = mysql_query("SELECT COUNT(art_id) FROM articoli");
    $res_count = mysql_fetch_row($count);

    // numero totale di records
    $tot_records = $res_count[0];

    // risultati per pagina(secondo parametro di LIMIT)
    $per_page = 5;

    // numero totale di pagine
    $tot_pages = ceil($tot_records / $per_page);

    // pagina corrente
    $current_page = (!$_GET['page']) ? 1 : (int)$_GET['page'];

    // primo parametro di LIMIT
    $primo = ($current_page - 1) * $per_page;

    echo "<div align=\"center\">\n<table>\n";

    // esecuzione seconda query con LIMIT
    $query_limit = mysql_query("SELECT * FROM articoli LIMIT $primo, $per_page");
    while($row = mysql_fetch_array($query_limit))
    {
    if($row['pub'] == 0) { $pub = ""; } else { $pub = $row['pub']; }
    print("<form action='".$_SERVER['PHP_SELF']."?act=1&id=".$row['art_id']."' method='post'>");
    print("<tr>");
    print("<td style='border-bottom:1px solid #999;'>");
    print("ord.");
    print("</td>");
    print("<td style='border-bottom:1px solid #999;'>");
    print("<input name='ord' type='text' maxlength='1' size='1' value='".$pub."' />");
    print("</td>");
    print("<td style='border-bottom:1px solid #999;'>");
    print(" - ".$row['titolo']);
    print("</td>");
    print("<td style='border-bottom:1px solid #999;'>");
    print(" <input type='submit' value='aggiorna' />");
    print("</td>");
    print("</tr>");
    print("<tr>");
    print("<td colspan='4'> </td>");
    print("</tr>");
    print("</form>");
    }
    // includiamo uno dei files contenenti la paginazione, commentate l'altro ovviamente
    include("paginazione_2.php");
    //include("paginazione_1.php");

    // in questa cella inseriamo la paginazione
    echo " <tr>\n <td height=\"50\" valign=\"bottom\" align=\"center\">$paginazione</td>\n";

    echo " </tr>\n</table>\n</div>";

    mysql_close();
    ?>


    <?php
    }
    else
    {
    if($_POST['ord'] == "") { $ord = 1; }
    else { $ord = $_POST['ord']; }
    include("config.php");
    mysql_connect($db_host,$db_user,$db_password,$db_n ame) or die ("errore nella connessione");
    mysql_select_db("$db_name") or die ("errore nella selezione del database");
    mysql_query("UPDATE articoli SET pub = '".$ord."' WHERE art_id = '".$_GET['id']."'") or die(mysql_error());
    header("Location: ".$_SERVER['PHP_SELF']);
    }
    ?>


    Ora posto il codice della home page, ossia la pagina dove vengono pubblicate le news. Come si può vedere, le news vengono inserite in dei contenitori di testo ed immagine, ossia dei DIV Textimage:

    <div id="content">
    <?php

    include("config.php");
    mysql_connect($db_host, $db_user, $db_password, $db_name) or die ("non riesco a connettermi");
    mysql_select_db("$db_name") or die ("Non riesco a selezionare il database");

    $dati = mysql_query("SELECT art_id, titolo, sottotitolo, testo, immagine, date_format(data,'%d-%m-%Y %H:%i') AS dataora FROM articoli WHERE pub > 0 ORDER BY pub ASC");

    $n = mysql_num_rows($dati);

    if($n == 0)
    {
    echo "Non ci sono news al momento";
    }
    else
    {
    while($array = mysql_fetch_array($dati))
    {
    ?>
    <div class="news_content">
    <div class="textimage">[img]show.php?id=<?php echo $array['art_id']; ?>[/img] </div>

    <?php echo "".$array['titolo']."";
    ?>



    <?php echo $array['sottotitolo'];
    ?>



    <?php
    $swap = explode(" ", $array['testo'], 21);
    foreach($swap as $key => $val) if($key < 20) echo $val." ";
    echo ".....
    ";
    echo "<a href=\"page.php?id=".$array['art_id']."\">leggi</a>";
    ?>



    <?php
    echo "Pubblicato il ".substr($array ['dataora'],0,10)." alle ". substr($array ['dataora'],11,5);
    ?>
    <div class="news_clear"></div>
    </div>
    <?php
    }
    }
    mysql_close();
    ?>


    Ora, il mio problema è questo. Con questo metodo mi è possibile stabilire quale news mettere in home page anche se vi fossero un numero illimitato di news. Posso scegliere si quali mettere in linea, inserendo un numero diverso da zero, ma non posso decidere in quale area della home page metterlo. Ossia, se nella pagina news.php ho innumerevoli DIV Textimage, disposte magari alcune verticalmente ed altre orizzontalmente, come posso fare per scegliere in quale di queste pubblicare le news.

    Ossia, esempio semplice, come se al DIV Textimage che deve ospitare la notizia più importante, venga associate l'articolo 35 e non il 46 (ad esempio).

    Avevo pensato ad una soluzione, ossia quella di inserire altri campi nella tabella, oltre a quello PUB. Ad esempio inserire un campo che sia possibile indicizzare con delle lettere (in modo che poi, nel file scegli.php, possa scegliere di inserire un numero o una lattera e quindi quale articolo) oppure cercare di associare ad ogni DIV Textarea un parametro che poi mi permetta di associarlo ad un articolo a scelta.

    Insomma, è l'ultima fase dello sviluppo del mio sito. Spero di essere stato più chiaro nella spiegazione..
    Qualche spiegazione in merito?

  2. #2
    Utente di HTML.it
    Registrato dal
    May 2006
    Messaggi
    555
    Ragazzi,
    ma è così complicato come argomento? Oppure sono io che mi stò spiegando male?

  3. #3
    quando kiedi aiuto sul forum al di la della difficoltà o no delproblema devi cmq fare in modo ke un utente non si scocci a leggere quelloke hai postato e quindi t possa aiutare.

    oltre al fatto ke hai postato un bel popò di roba, non hai nemmeno usato i tag php, rendendo ancora più noiosa la lettura...
    http://codecanyon.net/category/all?ref=Manuelandro
    And I bet she told a million people that she'd stay in touch, Well all the little promises they dont mean much,When theres
    memories to be made

  4. #4
    Utente di HTML.it
    Registrato dal
    May 2006
    Messaggi
    555
    Capisco che il post è lungo,
    tuttavia non era possibile spiegare il problema senza scrivere per filo e per segno che intendo realizzare.
    Sono daccordo con te sul fatto dei tag php, solo che ancora non ho imparato ad utilizzarli.

    p.s. visto che hai avuto la pazienza di leggere il post, saresti in grado di darmi un suggerimento?

  5. #5
    Utente di HTML.it L'avatar di nicola75ss
    Registrato dal
    Nov 2004
    Messaggi
    12,923
    Un'idea potrebbe essere questa: come hai già intuito aggiungi un campo alla tua tabella che serva per associare la notizia ad uno specifico div. (meglio se definisci il campo come unique in maniera da impedire l'assegnazione di due notizie ad uno stesso div). Nel mio esempio il campo si chiama blocco e lo puoi definire come campo di testo, quindi per le notizie che non devi mostrare lascierai il campo vuoto.

    Usi questa funzione (recuperata tra i commenti del manuale, non ho inventato niente )

    Codice PHP:
    function multi_array_search($search_value$the_array)
    {
       if (
    is_array($the_array))
       {
           foreach (
    $the_array as $key => $value)
           {
               
    $result multi_array_search($search_value$value);
               if (
    is_array($result))
               {
                   
    $return $result;
                   
    array_unshift($return$key);
                   return 
    $return;
               }
               elseif (
    $result == true)
               {
                   
    $return[] = $key;
                   return 
    $return;
               }
           }
           return 
    false;
       }
       else
       {
           if (
    $search_value == $the_array)
           {
               return 
    true;
           }
           else return 
    false;
       }

    Ti crei un array con tutti i dati restituiti dalla query

    Codice PHP:
    $query mysql_query("select * from articoli where blocco != '' order by art_id") or die(mysql_error());
    while (
    $row mysql_fetch_assoc($query)){
    $array[] = $row;

    Ora richiami la funzione postata prima per recuperare le informazioni associate ad uno specifico div.

    <div id="livello1">
    Codice PHP:
    <?php
    // primo,secondo,terzo,ecc sono i valori nel mio esempio che inserirai nel tuo campo aggiuntivo della tabella
    // per associare la notizia ad uno specifico div
    $result multi_array_search('primo'$array);
    echo 
    $array[$result[0]]['titolo']; // qui metti i nomi dei campi che vuoi mostrare nei div
    echo $array[$result[0]]['sottotitolo'];
    ?>
    </div>
    <div id="livello2">
    Codice PHP:
    <?php
    $result 
    multi_array_search('secondo'$array);
    echo 
    $array[$result[0]]['titolo'];
    echo 
    $array[$result[0]]['sottotitolo']; // se vuoi aggiungi l'immagine,ecc
    ?>
    </div>
    <div id="livello3">
    Codice PHP:
    <?php
    $result 
    multi_array_search('terzo'$array);
    echo 
    $array[$result[0]]['titolo'];
    echo 
    $array[$result[0]]['sottotitolo'];
    ?>
    </div>


  6. #6
    Utente di HTML.it
    Registrato dal
    May 2006
    Messaggi
    555
    Ciao Nicola,
    e grazie per la risposta. Mi vengono in mente alcune domande. Allora, se nel Div "livello uno" voglio inserire la seconda notizia, mi basta sostituire,nel $result, "primo" con "secondo"??

    Ah, mi puoi spiegare dove avviene praticamente l'associazione tra un Div e la notizia (che sia la terza notizia oppure la centesima, giusto?)

    Poi, la parte di codice relativa alla funzione multy_array_search, la devo inserire ad inizio pagina, prima del resto del codice php (ossia della query)?

    In questo modo, da quanto capisco, potrei anche fare a meno del campo PUB, sostituendolo direttamente con questo nuovo campo?

  7. #7
    Utente di HTML.it L'avatar di nicola75ss
    Registrato dal
    Nov 2004
    Messaggi
    12,923
    L'associazione avviene nel momento in cui richiami la funzione multi_array_search, in base al valore messo tra parentesi.

    se la tua tabella è così

    titolo sottotitolo blocco .... altri campi
    titolo1 bla bla bla1 primo
    titolo2 bla bla2 secondo
    titolo20 bla bla20 quinto

    quando hai il tuo array e gli dai come chiave di ricerca ad esempio quinto, vengono recuperate tutte le informazioni associate al record che ha valore quinto come una delle sue chiavi (la sua chiave specifica è il nome del campo, blocco o pub che sia), quindi titolo20, bla bla20 ecc.
    Nessuno ti vieta di mettere nel campo del tuo db pippo,pluto,minnie e così via basta che poi la richiami così

    <div id="livello1">
    $result = multi_array_search('pluto', $array);
    echo $array[$result[0]]['titolo'];
    echo $array[$result[0]]['sottotitolo'];
    </div>

    La funzione la puoi mettere in cima alla pagina, in fondo o anche in un file esterno che poi includi. Come preferisci.

  8. #8
    Utente di HTML.it
    Registrato dal
    May 2006
    Messaggi
    555
    Ok,
    forse ho capito. Appena torno a casa dal lavoro mi metto alla prova. Se dovessi avere dei problemi riprenderò il mano il post.

    Per ora grazie mille Nicola..

  9. #9
    Utente di HTML.it
    Registrato dal
    May 2006
    Messaggi
    555
    Ciao Nicola,
    stò lavorando alla struttura. Ho aggiunto il campo "scegli" (da te chiamato blocco) ma non riesco ad attribuirgli valore unique.

    Come mai?

  10. #10
    Utente di HTML.it
    Registrato dal
    May 2006
    Messaggi
    555
    Per essere precisi,
    ecco l'errore segnalato da phpmyadmin

    #1062 - Duplicate entry '' for key 2

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 © 2025 vBulletin Solutions, Inc. All rights reserved.