• Consiglio Direttivo

    Puoi selezionare i dati mettendo DISTINCT per non avere doppioni e per il conteggio ti basterà utilizzare count(campo). 😉


  • User

    Ho un piccolo problemino, in pratica mettendo il codice in questo modo:
    [PHP]

    <?
    require_once ("config.php");

    $sql="SELECT * FROM posts ORDER BY id DESC" ;
    $query=@mysql_query($sql) or die (mysql_error());

    while ($array=mysql_fetch_array($query))
    {

    $titolo=html_entity_decode($array['titolo']);
    $post=html_entity_decode($array['post']);
    $immpost=html_entity_decode($array['immpost']);
    $contenuto=html_entity_decode($array['contenuto']);
    $fontenome=html_entity_decode($array);
    $fonteind=html_entity_decode($array);
    $tags=$array['tags'];
    $giorno=$array['giorno'];
    $mese=$array['mese'];
    $anno=$array['anno'];
    $ora=$array['ora'];
    $id=$array['id'];
    $postid=$id;

    $sql="SELECT * FROM categorie AS C JOIN assoc AS A ON C.id = A.id_categoria WHERE A.id_post='$post_id'";
    $query=@mysql_query($sql) or die (mysql_error());

    while ($array=mysql_fetch_array($query))
    {
    echo $array['campo_nome_categoria'].",";
    }

    }

    ?>

    [/PHP]

    (Ovviamente con i nomi dei campi corretti), funziona, però mi mostra solo l'ultimo post inserito; dov'è il problema?


  • Consiglio Direttivo

    Perché devi utilizzare altri nomi per le istruzioni sql e l'array dentro il while primario. 🙂

    Dovresti strutturarle in questa maniera:
    [php]<?php

    require_once ("config.php");

    $sql_post="SELECT * FROM posts ORDER BY id desc" ;
    $query_post=@mysql_query($sql_post) or die (mysql_error());

    while ($array_post=mysql_fetch_array($query_post))
    {

    echo $array_post['id']."-".$array_post['title']."-".$array_post['text']."-".$array_post['date'];

    $sql_cat="SELECT * FROM categorie AS C JOIN assoc AS A ON C.id = A.id_cat WHERE A.id_post='".$array_post['id']."'";
    $query_cat=@mysql_query($sql_cat) or die (mysql_error());

    while ($array_cat=mysql_fetch_array($query_cat))
    {
    echo "-".$array_cat['categoria'];
    }
    echo "<br />";

    }
    ?>[/php]

    😉


  • User

    Guarda ho provato così, ti mostro tutto il codice completo:

    [PHP]
    <?
    require_once ("config.php");

    //verifico che ci siano post
    $sql="SELECT id FROM posts";
    $query=@mysql_query($sql) or die (mysql_error());
    $row=mysql_num_rows($query);

    //procedo nel caso ci siano post
    if ($row!=0) {

    $sql_post="SELECT * FROM posts ORDER BY id DESC" ;
    $query_post=@mysql_query($sql_post) or die (mysql_error());

    while ($array_post=mysql_fetch_array($query_post))
    {

    $titolo=html_entity_decode($array_post['titolo']);
    $post=html_entity_decode($array_post['post']);
    $immpost=html_entity_decode($array_post['immpost']);
    $contenuto=html_entity_decode($array_post['contenuto']);
    $fontenome=html_entity_decode($array_post);
    $fonteind=html_entity_decode($array_post);
    $categorie=html_entity_decode($array_post['categorie']);
    $tags=$array_post['tags'];
    $giorno=$array_post['giorno'];
    $mese=$array_post['mese'];
    $anno=$array_post['anno'];
    $ora=$array_post['ora'];
    $id=$array_post['id'];
    $postid=$id;

    //conto quanti commeti ci sono per questo post
    $st="SELECT COUNT(*) AS tot FROM commenti WHERE postid='$postid'" ;
    $que=@mysql_query($st) or die (mysql_error());
    $que=mysql_fetch_assoc($que);
    $totalecom=$que['tot'];

    //associo le categorie al post
    $sql_cat="SELECT * FROM categorie AS C JOIN postcat AS A ON C.id = A.id_categoria WHERE A.id_post='$postid'";
    $query_cat=@mysql_query($sql_cat) or die (mysql_error());

    while ($array_cat=mysql_fetch_array($query_cat))
    {
    echo $array_cat['codicecat'].", ";
    }

    }

    //poi qui metto le varie scritture per stampare i risultati e chiudo l'if

    }

    ?>
    [/PHP]

    Però non mi va lo stesso, non so come mai, mi mostra sempre il primo post


  • Consiglio Direttivo

    @ManuelHT said:

    >
    
    **}**
    
    **//poi qui metto le varie scritture per stampare i risultati e chiudo l'if**
    
    }
    
    ?>
    
    >```
    
    Eccallà :D
    Perché la stampa la effettui fuori dal ciclo while, indi ti manda in stampa l'ultimo dato salvato nelle variabili, ti basta mettere la stampa dei risultati prima di quella graffa. ;)

  • User

    Perfetto ora va tutto alla perfezione, grazie mille.
    Un ultimissima cosa, se volessi fare in modo che per ogni post si vedano solo un tot di parole e poi cliccando su "Leggi tutto" si vada al resto dell'articolo come potrei fare??

    Grazie ancora


  • ModSenior

    Ciao io opterei per una sottostringa.

    $quanticaratteri=10;
    $lunghezza= strlen($messaggio);
    if($lunghezza<=$quanticaratteri)
    {
       echo $messaggio
    }
    else
    {
       $sottostringa=substr($messaggio, 0, $quanticaratteri); 
       echo $sottostringa."...";
    }
    

    Chiedo scusa se il codice è sbagliato, ma provengo da Asp, Php lo ho visto poco.


  • Consiglio Direttivo

    Giusto Marco, manca solo un banale ; dopo echo $messaggio, ma va benissimo. 😉

    Mi permetto l'intervento solo per una precisazione sull'utilizzo di questo script, perché finché il dato contenuto in $messaggio è privo di tag html va benissimo, ma se utilizzi un editor per salvare il post o comunque utilizzi un qualche tipo di formattazione, ti ritroveresti con dei tag html aperti e non chiusi. 😉

    Nel caso tu formattassi il testo dei post allora un metodo è quello di utilizzare la funzione strip_tags, prima di passare $messaggio allo script che ti ha postato Marco. 😉


  • User

    Ok allora proverò come dici tu.
    Ma per esempio una volta mi ricordo di aver visto dei pannelli di controllo già fatti che assomigliavano a quello di wordpress (non so se avete presente) ed erano installabili sui siti web normali, sapete mica dove posso reperirli??

    Ps: Comunque grazie a tutti e due per l'aiuto.


  • ModSenior

    Mannaggia hai ragione Samyorn.
    Si trovava con div aperti e mai chiusi, magari si spostava anche tutto il template.


  • Consiglio Direttivo

    @ManuelHT said:

    Ma per esempio una volta mi ricordo di aver visto dei pannelli di controllo già fatti che assomigliavano a quello di wordpress (non so se avete presente) ed erano installabili sui siti web normali, sapete mica dove posso reperirli??
    Sotto quest'aspetto non saprei aiutarti, mi spiace, i pannelli di controllo me li faccio da me. 😄
    @marcocarrieri said:
    Mannaggia hai ragione Samyorn.
    Ma figurati Marco, il tuo indirizzo era giustissimo, solo che immaginavo potevano esserci delle formattazioni nel testo e quindi era consigliabile aggiungere una funzione. 😉