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

    Visualizzazione in home page di determinati record

    Salve ragazzi,
    innanzitutto un saluto a tutta la comuntià, essendomi iscritto appena ieri. Tuttavia è da un mese che studio il php perchè ho realizzato un sito dove, a breve, vorrei inserire una sezione NEWS. Ossia una sezione dove pubblicare articoli relativi alle materie trattate nel portale.

    Dopo varie notti insonni a studiare il tutto, ho più o meno capito come realizzare un'area amministrazione, ossia inserimento, modifica, eliminazione articoli e loro visualizzazione. Ma a proposito di quest'ultimo punto, vi propongo il codice che mi permette di visualizzare tutti gli articoli presenti nel database ed estratti dalla tabella, ordinati per Id dal primo fino all'ultimo.

    Sono esattamente dua file .php. Uno si chiama link.php e vi posto il codice di seguito:

    <?
    include("config.php");
    mysql_connect($db_host,$db_user,$db_password,$db_n ame) or die ("non riesco a connettermi");
    mysql_select_db("$db_name") or die ("Non riesco a selezionare il database");
    $sql = "SELECT id, titolo FROM news ORDER BY id DESC";
    $result = @mysql_query($sql) or die (mysql_error ());
    while ($row = @mysql_fetch_array($result))
    {
    $id = $row['id'];
    $titolo = $row['titolo'];
    echo "<a href=\"show2.php?id=".$id."\">".$titolo."</a>
    ";
    }
    ?>

    L'altro si chiama show2.php ed è quello che mostra tutti i titoli degli articoli ordinati dal primo all'ultimo. Ecco il codice:

    <?
    if (isset($_GET['id']))
    {
    $id = @intval($_GET['id']);
    include("config.php");
    mysql_connect($db_host,$db_user,$db_password,$db_n ame) or die ("non riesco a connettermi");
    mysql_select_db("$db_name") or die ("Non riesco a selezionare il database");
    $sql = "SELECT id, testo FROM news WHERE id='$id'";
    $result = @mysql_query($sql) or die(mysql_error ());
    $row = @mysql_fetch_array($result);
    $id_art = $row['id'];
    $testo = $row['testo'];
    if (!$id_art)
    {
    echo "Id sconosciuto";
    }else{
    @header ("Content-type: ".$testo);
    echo $testo;
    }
    }else{
    echo "Impossibile soddisfare la richiesta.";
    }
    ?>

    Premesso che funzionano entrambi bene (ho studiato come inserire le immagini e ho adattato i vari script ai miei articoli), vorrei spiegarvi cosa vorrei ottenere. Nella home page del mio sito vorrei che venissero visualizzati solo alcuni articoli, ossia gli ultimi scritti del giorno. Ecco allora che mi servirebbe creare uno script che mi visualizzi nella home page ad esempio solo gli ultimi due Id inseriti nel database. Ecco, nel file show.php, cliccando sui vari link attivi dei titoli visualizzati, mi manda alla pagina dove viene visualizzato il contenuto solo di quell'articolo. Ma mi sembra di capire che, qualora dovessi inserire lo script show2.php in home page nelle varie sezioni relative ai diversi articoli, mi comparirebbe in tutte le sezioni solo quell'articolo e basta. Come posso fare affinchè vengano visualizzati in home page determinati id (ad esempio gli ultimi due oppure gli ultimi tre ect) ?

    Ringrazio fin da ora chi avrà la pazienza di leggere tutta sta roba e rispondere. Ho intuito quaclosa maneggiando i vari script ma non sono riuscito. Mi date una mano?
    Grazie mille!!!

    p.s. spero che il quesito sia stato espresso con chiarezza

  2. #2
    Utente di HTML.it L'avatar di nicola75ss
    Registrato dal
    Nov 2004
    Messaggi
    12,922
    Per visualizzare gli ultimi record inseriti basta che aggiungi la clausola limit alla tua query

    select id,titolo from news order by id desc limit 2;

  3. #3
    Utente di HTML.it
    Registrato dal
    May 2006
    Messaggi
    555
    Grazie per la prima risposta.
    L'altro quesito è questo, che forse non traspariva bene da quanto scritto prima.

    Supponiamo che nella tabella abbia 10 articoli. Con i due fila visti prima mi viene, lanciando show2.php, una lista di articoli che va da quello a id 1 a quello a id 10. Ossia:

    id 10
    ......
    id 2
    id 1

    Ora, nella home page ho diverse sezioni (o tabelle) dove inserire le diverse news. In una voglio inserire l'articolo con l'id 10, nell'altra quello con l'id 9, in un'altra ancora quello con l'id 7.

    Ecco, come faccio a fare in modo che mi visualizzi solo determinati id all'interno della sezione voluta?

    mi verrebbe da pensare che debba mettere una query che richiama quello specifico id in quella determinata sezione, solo che così dovrei scrivere ogni giorno lo script e cambiare l'id in base all'ultimo articolo inserito. Mi servirebbe qualcosa in grado di farlo automaticamente, che riconosca l'ultimo id (o gli ultimi due o 3 o così via) e che mi stampi in home page solo quelli che voglio io.

    Spero di non aver fatto troppo casino!

  4. #4
    Utente di HTML.it L'avatar di nicola75ss
    Registrato dal
    Nov 2004
    Messaggi
    12,922
    La query che ti ho scritto prima recupera gli ultimi due record inseriti. Puoi fare tutti gli inserimenti che vuoi, verranno sempre visualizzati gli ultimi due. Se vuoi solo l'ultimo o gli ultimi 3 basta mettere limit 1 o limit 3.

  5. #5
    Utente di HTML.it
    Registrato dal
    May 2006
    Messaggi
    555
    Ok Nicola,
    su questo siamo daccordo. Quel che volgio dire è questo. Se in una sezione volgio inserire l'ultimo id allora metto limit 1. E ok.

    Ma se in un'altra sezione (o tabella) voglio inserire il penultimo id (nell'esempio precedente il 9 ad esempio) senza l'ultimo, non posso mettere limit 2 perchè mi stampa entrambi gli ultimi 2 articoli, ma nemmeno limit 1 perchè mi stampa solo l'ultimo. Ecco, mi serve una quiery o uno script che mi permetta di far ciò. Solo stampare l'id dell'articolo che voglio.

    Spero che il mio quesito sia più chiaro :master:

  6. #6
    Utente di HTML.it L'avatar di nicola75ss
    Registrato dal
    Nov 2004
    Messaggi
    12,922
    Originariamente inviato da marckhh
    Ok Nicola,
    su questo siamo daccordo. Quel che volgio dire è questo. Se in una sezione volgio inserire l'ultimo id allora metto limit 1. E ok.

    Ma se in un'altra sezione (o tabella) voglio inserire il penultimo id (nell'esempio precedente il 9 ad esempio) senza l'ultimo, non posso mettere limit 2 perchè mi stampa entrambi gli ultimi 2 articoli, ma nemmeno limit 1 perchè mi stampa solo l'ultimo. Ecco, mi serve una quiery o uno script che mi permetta di far ciò. Solo stampare l'id dell'articolo che voglio.

    Spero che il mio quesito sia più chiaro :master:
    Per visualizzare i dati relativi a uno specifico record basta che fai

    select * from news where id = 9;

    in questo modo recuperi tutte le informazioni relative alla notizia che ha per identificativo il numero 9. Quando hai tempo studiati bene questa guida.

    http://database.html.it/guide/leggi/87/guida-mysql/

  7. #7
    Utente di HTML.it
    Registrato dal
    May 2006
    Messaggi
    555
    Ok,
    appena posso me la leggo. Si, sò che per recuperare un determinato record devo fare un quesry di questo genere. Però capisci che se ho una home page che giornalmente deve essere aggiornata con le news, diventa improponibile correggere il codice ogni giorno in modo da visualizzare l'id 9 oppure il 10 oppure l'11.

    Mi serve uno script che lo fa in automatico. Come posso risolvere?

  8. #8
    Utente di HTML.it L'avatar di nicola75ss
    Registrato dal
    Nov 2004
    Messaggi
    12,922
    Se vuoi recuperare il penultimo fai

    select * fro news order by id desc limit 1,1

    per il terz'ultimo
    select * fro news order by id desc limit 2,1

    e così via.

  9. #9
    Utente di HTML.it
    Registrato dal
    May 2006
    Messaggi
    555
    Grazie Nicola,
    proverò a fare come hai detto. Vediamo un pò che ne esce fuori.

  10. #10
    Utente di HTML.it
    Registrato dal
    May 2006
    Messaggi
    555
    Ciao Nicola,
    ho appena provato a modificare il codice con la query da te suggerita ma vien fuori un problema.
    Ti scrivo il codice:

    <?
    include("config.php");
    mysql_connect($db_host,$db_user,$db_password,$db_n ame) or die ("non riesco a connettermi");
    mysql_select_db("$db_name") or die ("Non riesco a selezionare il database");
    $sql = "SELECT id, testo FROM news order by id desc limit 2";
    $result = @mysql_query($sql) or die(mysql_error ());
    $row = @mysql_fetch_array($result);
    $id_art = $row['id'];
    $testo = $row['testo'];
    if (!$id_art)
    {
    echo "Id sconosciuto";
    }else{
    @header ("Content-type: ".$testo);
    echo $testo;
    }
    ?>

    Il problema è molto semplice. Nonostante imponga il limit 2, mi fa vedere solo il testo relativo all'ultimo articolo. Ho provato a mettere 3, 4, 5 ma nulla. Mi fa sempre vedere l'ultimo, come se fosse impostato su limit 1.
    Dove sta l'errore?

    p.s. siccome stò imparando da poco il php e sql ti e vi prego, se è una banalità non incacchiatevi!

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.