- Home
- Categorie
- Coding e Sistemistica
- PHP
- Aiuto con elenco categorie in articoli di un blog
-
E per stampare tutte le categorie associate ad un determinato id_post come devo fare?
-
La select che ti ho postato prima.
-
E ma poi cosa ci stampo?
Cioè devo fare un echo di qualcosa no? E cosa ci metto dentro l'echo?
-
[php]$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]
-
Grazie mille gentilissimo veramente...domani provo se riesco.
Poi ti posso chidere un ultimo favore???
Se nella tabella posts ho un campo 'mese' in cui vengono elencati i mesi di ogni post, come faccio a creare uno script che mi prenda tutti i tipi di valori che ci sono in quel campo e me li stampi e che poi per ogni valore mi dica quante volte viene ripetuto all'interno della tabella???In modo da postare tipo
- Novembre (4)
- Dicembre (9)
dove 4 e 9 sono gli articoli per il determinato mese...
Se hai voglia di farmi vedere un esempio ti sarei molto grato, altrimenti fa niente mi hai comunque dato un grosso aiuto quindi grazie mille lo stesso
-
Puoi selezionare i dati mettendo DISTINCT per non avere doppioni e per il conteggio ti basterà utilizzare count(campo).
-
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?
-
Perché devi utilizzare altri nomi per le istruzioni sql e l'array dentro il while primario.
Dovresti strutturarle in questa maniera:
[php]<?phprequire_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]
-
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
-
@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. ;)
-
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
-
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.
-
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.
-
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.
-
Mannaggia hai ragione Samyorn.
Si trovava con div aperti e mai chiusi, magari si spostava anche tutto il template.
-
@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.