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

    Problema con query di aggiornamento articoli in home page

    Salve ragazzi,
    il problema che vi posto è il seguente. Ho un sito con una struttura amministrativa che mi permette di inserire delle news (o articoli) in home page. Con gli script in php riesco anche a decidere in che posizione della home page pubblicarli. Per capirci ecco il codice.

    Codice PHP:
    <?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;
       }
    }

    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");

    $query mysql_query("select *, date_format(data,'%d-%m-%Y %H:%i') AS 'dataora' from articoli where pub != '' order by art_id") or die(mysql_error());
    while (
    $row mysql_fetch_assoc($query)){
    $array[] = $row;
    }
    ?>
    <?php $result 
    multi_array_search('1'$array); echo "[b]<a href=\"page.php?id=".$array[$result[0]]['art_id']."\">".$array[$result[0]]['titolo']."</a>[/b]"
    ?>
    Praticamente, in tabella, ho un campo "pub" che può assumere diversi valori numerici. In questo caso, mettendo il valore "1", mi viene pubblicato il titolo di quella determinata news che assume appunto il valore 1. Dove viene inserito questo valore? In un form, sempre in php, che ha al suo interno un pulsante "aggiorna" che esegue la seguente query:

    Codice PHP:
    <?php
    }
    else
    {
        if(
    $_POST['ord'] == "") { $ord 1; }
        else { 
    $ord $_POST['ord']; }
        include(
    "config.php");
        
    mysql_connect($db_host,$db_user,$db_password,$db_name) 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']);    
    }
    ?>
    Il problema è questo. Per togliere una determinata news devo inserire il numero zero e poi clikkare su aggiorna. In tal modo viene eliminata la news che era presente in tale sezione. Soltanto che devo assolutamente sostituirla con un'altra, altrimenti mi escono fuori tuta una serie di warning che mi avvertono che in quella sezione mancano diversi campi. Ciò che vorrei è evitare questa operazione. Ossia, inserendo lo zero, vorrei che quella detemrinata sezione della home page (che poi è riconducibile ad una struttura con diversi div per gestirne l'impaginazione di testi, titolo, ecc..) non venisse mostrata, in qualche modo sparisca dalla pagina, venga nascosta. Cioè, metto lo zero, viene tolta la news e viene nascosta la sezione relativa. Come posso fare?

  2. #2
    Utente di HTML.it L'avatar di neida
    Registrato dal
    Feb 2005
    Messaggi
    1,478
    Non credo di aver ben capito la cosa ma potresti provare a modificare la query che estrae le news aggiungendo la condizione pub != 0. In questo modo la selezione avrebbe valore solo se il campo pub risulta con un valore diverso da 0.

  3. #3
    Utente di HTML.it L'avatar di telegio
    Registrato dal
    Sep 2001
    Messaggi
    2,592
    spero di non aver capito male..

    credo dovresti dirgli che se il tuo recordset è vuoto di non stampare nulla..
    <?php if ($totalRows_tuorecordset > 0) {
    echo $tuavariabile
    }
    ?>

    una cosa del genere...

  4. #4
    Utente di HTML.it
    Registrato dal
    May 2006
    Messaggi
    555
    Forse conviene che posti anche il form di inserimento dati:

    Codice PHP:
                <?php 
    include("config.php");
    $id =! isset ($_GET["id"]); 
    mysql_connect($db_host,$db_user,$db_password,$db_name) 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 = ! isset ($_GET['page']) ? : (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 Order by art_id Desc 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(
    '<table border="1">');
        print(
    "<tr>");
        print(
    "<td style='border-bottom:1px solid #999;'>");
        print(
    "[b]Id articolo[/b]");
        print(
    "</td>");
        print(
    '<td rowspan="1">'.$row['art_id'].'</td>');
        print(
    "</tr>");
        print(
    "<tr>");
        print(
    "<td style='border-bottom:1px solid #999;'>");
        print(
    "[b]Titolo[/b]");
        print(
    "<td style='border-bottom:1px solid #999;'>");
        print(
    "<textarea name=\"titolo\" rows=\"2\" cols=\"30\">$row[titolo]</textarea>");
        print(
    "</td>");
        print(
    "</tr>");
            print(
    "<tr>");
        print(
    "<td style='border-bottom:1px solid #999;'>");
        print(
    "[b]Scegli la sezione[/b]");
        print(
    "</td>");
        print(
    "<td style='border-bottom:1px solid #999;'>");
        print(
    "<input name='ord' type='text' maxlength='2' size='2' value='".$pub."' />");
        print(
    "</td>");
        print(
    "</tr>");
        print(
    "<tr>");
        print(
    "<td style='border-bottom:1px solid #999;'>");
        print(
    "<input type='submit' value='aggiorna' />");
        print(
    "</td>");
        print(
    "</tr>");
            print(
    "</table>");
            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(); 
    ?>
    Al di la della paginazione, potete notare che viene inserito un valore numerico associato alla variabile $pub.
    con la prima funzione php che ho postato nel messaggio precedente, ad ogni valore $pub corrisponde un numero che a sua volta è associato ad una singola sezione della home page (per sezione intendo una tabella con div ecc dove sta un singolo articolo) con lo sript:

    Codice PHP:
    $result multi_array_search('1'$array
    Cioè il numero 1 corrisponde ad esempio alla prima tabella in alto sulla home page. Il 4, ad esempio, a quella più in basso. Solo che se al momento della scelta del numero nel form metto lo zero, nella sezione dove prima c'era la news (supponete la prima, cioè quella con valore 1) viene cancellato l'articolo e mi rimane una serie di warning proprio perchè nella sezione 1 abbiamo la riga di codice:

    Codice PHP:
    $result multi_array_search('1'$array
    Cioè, non trovano l'1 mi vengono fuori una serie di errori. Come posso fare per evitare che accada ciò? e che pertanto in quella sezione, in questo caso la 1, se c'è lo zero non vegna stampato nulla e la stessa sezione risulti invisibile? Magari ora si capisce un pò meglio

  5. #5
    Utente di HTML.it L'avatar di telegio
    Registrato dal
    Sep 2001
    Messaggi
    2,592
    ...

    post auto-editato..

    ...

  6. #6
    Utente di HTML.it L'avatar di telegio
    Registrato dal
    Sep 2001
    Messaggi
    2,592
    CANCELLA QUELLO CHE HO SCRITTO SOPRA...

  7. #7
    Utente di HTML.it
    Registrato dal
    May 2006
    Messaggi
    555
    Ecco parte del codice della home page:

    Codice PHP:
    <?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;
       }
    }

    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");

    $query mysql_query("select *, date_format(data,'%d-%m-%Y %H:%i') AS 'dataora' from articoli where pub != '' order by art_id") or die(mysql_error());
    while (
    $row mysql_fetch_assoc($query)){
    $array[] = $row;
    }
    ?>

    <div id='contenutocentrale'>
    <div id='primanotizia' style="width:100%">
    <div id='categprima'>[url='http://localhost/archivionews.php']Ultima notizia[/url]</div>
    <h1 id='titolocatprima'>      <?php $result multi_array_search('1'$array); echo "[b]<a href=\"page.php?id=".$array[$result[0]]['art_id']."\">".$array[$result[0]]['titolo']."</a>[/b]"
                
    ?></h1>
    <div id='autoreprimacat' align="right">di <?php $result multi_array_search('1'$array); echo $array[$result[0]]['autore'];?></div>
    <h2 id='sottotitoloprimacat'>      <?php $result multi_array_search('1'$array); echo $array[$result[0]]['sottotitolo'];?></h2>
    <div id='primoarticolo' style='min-height: 146px; height: auto !important; height: 146px'>

    <div class='textimage'>
    <div class='img' style='width: 202px'>
    [img]show.php?id=<?php $result multi_array_search('1'$array); echo $array[$result[0]]['art_id']; ?>[/img]</a>
                        </div>
    </div>
    <?php
          $result 
    multi_array_search('1'$array);
          
    $swap explode(" "$array[$result[0]]['testo'], 91);
                foreach(
    $swap as $key => $val) if($key 90) echo $val." ";
                echo 
    ".....<a href=\"page.php?id=".$array[$result[0]]['art_id']."\">leggi l'articolo</a>";
                
    ?>   
                

                
      
                <div id="pubblicatoil" align="right"><?php    
          $result 
    multi_array_search('1'$array);
          echo 
    "Pubblicato il ".substr($array[$result[0]]['dataora'],0,10)." alle "substr($array[$result[0]]['dataora'],11,5);
                
    ?> 
                </div>
                </div>
            </div>
    Questa è la prima sezione, quella contraddistinta dal numero 1 (cioè dal valore di $pub pari ad 1 appunto). Se ho una notizia e nel form inserisco il numero 1, ecco che appare in questa sezione. Ma se poi ci metto lo zero, ecco che tutte le righe di codice in php mi danno un errore perchè non trovano più il numero 1. Come posso fare affinchè ciò non accada? Ossia, se metto zero, come posso fare affinchè questa sezione non venga resa visibile in home page?

  8. #8
    Utente di HTML.it
    Registrato dal
    May 2006
    Messaggi
    555
    Ragazzi,
    nessuno che abbia capito il quesito??

  9. #9
    Utente di HTML.it
    Registrato dal
    May 2006
    Messaggi
    555
    Porto nuovamente su la discussione perchè ritengo sia interessante. Nessuna che può darmi una mano a risolvere il quesito?

  10. #10
    Utente di HTML.it
    Registrato dal
    May 2006
    Messaggi
    555
    Ragazzi non ci stò cavando piede. Nessuno che mi può dare un mano

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.