Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 15

Discussione: Select singolo record

  1. #1
    Utente di HTML.it
    Registrato dal
    May 2007
    Messaggi
    6

    Select singolo record

    Ciao, scrivo in php da un paio di settimane utilizzando la vs.guida "Guida PHP/MySql pratica". Alla fine ho realizzato il mio primo script per visualizzare delle news prese dal mio db mysql. Tutto ok. Vorrei fare in modo adesso che gli ultimi 4 articoli inseriti in ordine di tempo siano visualizzati sulla home page uno per uno all'interno di <table> codice1...</table>, <table> codice2...</table> ecc. . poi li posiziono con dei fogli di stile.
    Posto il codice per far capire meglio:
    <?
    include("conn.php");
    $db_tab = @mysql_connect($host, $user, $password);
    if ($db_tab == FALSE)
    die ("Errore nella connessione. Verificare i parametri nel file conn.php");
    @mysql_select_db($db_name, $db_tab)
    or die ("Errore nella selezione del database. Verificare i parametri nel file connessione.php");

    /*Il primo articolo da visualizzare sarà memorizzato in una variabile che passeremo alla pagina con il metodo get. Se questa non viene passata assumiamo questo valore uguale a zero, quindi visualizzeremo gli ultimi articoli. Impostiamo inoltre il numero di articoli da visualizzare contemporaneamente a 8:*/ if (!isset($start) OR $start<0)
    $start= 0;
    $step = 1;
    //variato da me per visualizzare solo un record
    $query = "SELECT id,data,testo FROM articoli ORDER BY data DESC LIMIT $start,$step";
    /* I parametri del vincolo LIMIT sono variabili. $step è impostato a priori e sempre fisso, $start varia invece a seconda del valore passato alla pagina.*/
    //questo lo realizzato per avere con certezza il numero di caratteri da visualizzare sulla home page all'interno di una singola tabella.

    $result = mysql_query($query, $db_tab);
    while ($row = mysql_fetch_array($result))
    {
    $testoform = wordwrap($row[testo]);
    nl2br($testoform);
    echo substr("$testoform",0,320);
    }
    mysql_close($db_tab);
    ?>

    l'ultimo record inserito in ordine di tempo funziona perfettamente ma per gli altri 3 non so prorpio come fare.
    Grazie.

    P.S. La tabella nel db contiene 5 campi:
    ( id int(5) UNSIGNED auto_increment;
    titolo text
    data int(11)
    testo text
    autore varchar(100))

  2. #2
    Utente di HTML.it L'avatar di badaze
    Registrato dal
    Jun 2002
    residenza
    Lyon
    Messaggi
    5,372
    Non so se ho capito bene. Comunque....

    Primo record :
    $query = "SELECT id,data,testo FROM articoli ORDER BY data DESC LIMIT 0,1";

    Secondo record :
    $query = "SELECT id,data,testo FROM articoli ORDER BY data DESC LIMIT 1,1";

    Terzo record :
    $query = "SELECT id,data,testo FROM articoli ORDER BY data DESC LIMIT 2,1";

    etc...
    Ridatemi i miei 1000 posts persi !!!!
    Non serve a nulla ottimizzare qualcosa che non funziona.
    Cerco il manuale dell'Olivetti LOGOS 80B - www.emmella.fr

  3. #3
    Utente di HTML.it
    Registrato dal
    May 2007
    Messaggi
    6
    Originariamente inviato da badaze
    Non so se ho capito bene. Comunque....

    Primo record :
    $query = "SELECT id,data,testo FROM articoli ORDER BY data DESC LIMIT 0,1";

    Secondo record :
    $query = "SELECT id,data,testo FROM articoli ORDER BY data DESC LIMIT 1,1";

    Terzo record :
    $query = "SELECT id,data,testo FROM articoli ORDER BY data DESC LIMIT 2,1";

    etc...
    Grazie badaze, credo che potesse andar bene cmq nel frattempo ho risolto il problema ordinandoli per id ed utilizzando mysql_result e togliendo il ciclo while ke non serviva a nulla.
    $query = mysql_query("SELECT id,titolo FROM articoli ORDER BY id DESC");
    $result = mysql_result($query, 1,'titolo');
    echo substr("$result",0,250);

  4. #4
    Utente di HTML.it
    Registrato dal
    May 2007
    Messaggi
    6
    Ciao pensavo fosse semplice inserire il collegamento facendo così invece... non visualizza il titolo anzi ignora totalmente la variabile.

    $query = mysql_query("SELECT id,titolo FROM articoli ORDER BY id DESC");
    $result = mysql_result($query, 1,'titolo');

    //anzichè echo substr("$result",0,250);
    inserivo il risultato in una variabile e poi la stampavo a video:

    $dati = substr("$result",0,250);
    echo "<a href=\"../view.php?id=$dati[titolo]\"></a>";

    niente.... poi ho fatto così:
    $dati = substr("$result",0,250);
    echo "<a href=\"../view.php?id=$dati\"></a>";

    niente ed infine così:
    $query = mysql_query("SELECT id,titolo FROM articoli ORDER BY id DESC");
    echo "<a href=\"../view.php?id=".substr(mysql_result($query, 1,'titolo'),0,250)."\"></a>";


    Dove sbaglio?
    Spero in un aiuto altrimenti mi toccherà fare le ore piccole stanotte.

  5. #5
    Utente di HTML.it L'avatar di badaze
    Registrato dal
    Jun 2002
    residenza
    Lyon
    Messaggi
    5,372
    Originariamente inviato da live_rm
    Ciao pensavo fosse semplice inserire il collegamento facendo così invece... non visualizza il titolo anzi ignora totalmente la variabile.

    $query = mysql_query("SELECT id,titolo FROM articoli ORDER BY id DESC");
    $result = mysql_result($query, 1,'titolo');

    //anzichè echo substr("$result",0,250);
    inserivo il risultato in una variabile e poi la stampavo a video:

    $dati = substr("$result",0,250);
    echo "<a href=\"../view.php?id=$dati[titolo]\"></a>";

    niente.... poi ho fatto così:
    $dati = substr("$result",0,250);
    echo "<a href=\"../view.php?id=$dati\"></a>";

    niente ed infine così:
    $query = mysql_query("SELECT id,titolo FROM articoli ORDER BY id DESC");
    echo "<a href=\"../view.php?id=".substr(mysql_result($query, 1,'titolo'),0,250)."\"></a>";


    Dove sbaglio?
    Spero in un aiuto altrimenti mi toccherà fare le ore piccole stanotte.
    Già c'è una cosa strana. Vuoi mettere un testo come id passata alla pagina view.php !!!!

    Fossi in te farei cosi :

    codice:
    $query = mysql_query("SELECT id,substring(titolo, 1, 250) as tit FROM articoli ORDER BY id DESC LIMIT 0,4");
    while (list($id,$titolo) = mysql_fetch_array($query)) {
     $titolo = stripslashes( $titolo );
     print "<a href=\"quello che vuoi.php?id=$id\">$titolo</a>
    ";
    }
    Ridatemi i miei 1000 posts persi !!!!
    Non serve a nulla ottimizzare qualcosa che non funziona.
    Cerco il manuale dell'Olivetti LOGOS 80B - www.emmella.fr

  6. #6
    Utente di HTML.it
    Registrato dal
    May 2007
    Messaggi
    6
    Originariamente inviato da badaze
    Già c'è una cosa strana. Vuoi mettere un testo come id passata alla pagina view.php !!!!

    Fossi in te farei cosi :

    codice:
    $query = mysql_query("SELECT id,substring(titolo, 1, 250) as tit FROM articoli ORDER BY id DESC LIMIT 0,4");
    while (list($id,$titolo) = mysql_fetch_array($query)) {
     $titolo = stripslashes( $titolo );
     print "<a href=\"quello che vuoi.php?id=$id\">$titolo</a>
    ";
    }
    Grazie Badaze non era quello che stavo cercando di fare ma l'ho modificato e funziona perfettamente. Grazie 1000!!
    Un ultima cosa se hai un pò di tempo, potresti commentarmelo così capisco meglio?
    Sicuramente domani voglio documentarmi su: "as tit ,(boh tit) e poi hai sostituito substr con substring... sarà la stessa cosa oppure xkè hai usato un ciclo while? infine stripslashes, quali backslash dovevi rimuovere?"
    Ciao e grazie ancora.

  7. #7
    Utente di HTML.it L'avatar di badaze
    Registrato dal
    Jun 2002
    residenza
    Lyon
    Messaggi
    5,372
    Originariamente inviato da live_rm
    Grazie Badaze non era quello che stavo cercando di fare ma l'ho modificato e funziona perfettamente. Grazie 1000!!
    Un ultima cosa se hai un pò di tempo, potresti commentarmelo così capisco meglio?
    Sicuramente domani voglio documentarmi su: "as tit ,(boh tit) e poi hai sostituito substr con substring... sarà la stessa cosa oppure xkè hai usato un ciclo while? infine stripslashes, quali backslash dovevi rimuovere?"
    Ciao e grazie ancora.
    Era quello che avevo capito !!!

    as tit si usa per dare un nome "fittizio" ad un calcolo fatto in sql ( ma si puo' anche usare per un campo normale ). Ho messo tit ma avrei potuto mettere pippo . Serve soprattutto per ricordarsi cosa fa il calcolo.
    Puo' anche servire per gli group by tit o having tit = 'pippo' o order by tit. Ma dipende dal dialetto visto che in certi questo non funziona.

    substring è la parola chiave mysql che equivale a substr in php. In altri "dialetti" sql si usa substr. Poi forse anche in mysql substr funziona. Non ho mai provato.

    Perché il ciclo while ? perché mysql mette il risultato delle query in un array. Quindi ci vuole un ciclo per sfruttare il risultato soprattutto se mysql ricava + di 1 record.


    stripslashes : quando salvo i testi in una tabella metto sempre un addslashes quindi se leggo i dati li rimuovo prima di stampare a video.

    Ridatemi i miei 1000 posts persi !!!!
    Non serve a nulla ottimizzare qualcosa che non funziona.
    Cerco il manuale dell'Olivetti LOGOS 80B - www.emmella.fr

  8. #8
    Utente di HTML.it L'avatar di luca200
    Registrato dal
    Apr 2002
    Messaggi
    4,120
    Originariamente inviato da badaze

    stripslashes : quando salvo i testi in una tabella metto sempre un addslashes quindi se leggo i dati li rimuovo prima di stampare a video.
    Vorrei non averlo mai letto....


    http://forum.html.it/forum/showthrea...ostid=10166292

  9. #9
    Utente di HTML.it L'avatar di badaze
    Registrato dal
    Jun 2002
    residenza
    Lyon
    Messaggi
    5,372
    Originariamente inviato da luca200
    Vorrei non averlo mai letto....
    Ognuno fa come vuole !!!!
    Ridatemi i miei 1000 posts persi !!!!
    Non serve a nulla ottimizzare qualcosa che non funziona.
    Cerco il manuale dell'Olivetti LOGOS 80B - www.emmella.fr

  10. #10
    Utente di HTML.it L'avatar di luca200
    Registrato dal
    Apr 2002
    Messaggi
    4,120
    Originariamente inviato da badaze
    Ognuno fa come vuole !!!!
    Ah certo.
    La correttezza dei dati è un optional...

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.