phpBB Italia chiude!
phpBB Italia ringrazia tutti gli utenti che hanno dato fiducia al nostro progetto per ben 9 anni, e che, grazie al grande lavoro fatto da tutto lo Staff (rigorosamente a titolo gratuito), hanno portato il portale a diventare il principale punto di riferimento italiano alla piattaforma phpBB.

Purtroppo, causa motivi personali, non ho più modo di gestirlo e portarlo avanti. Il forum viene ora posto in uno stato di sola lettura, nonché un archivio storico per permettere a chiunque di fruire di tutte le discussioni trattate.

Il nuovo portale di assistenza per l'Italia di phpBB diventa phpBB-Store.it, cui ringrazio per aver deciso di portare avanti questo grande progetto.

Grazie ancora,
Carlo - Amministratore di phpBB Italia

Pagine

Area di discussione relativa al linguaggio di programmazione web più conosciuto. Il forum è dedicato anche a MySQL, la piattaforma di database più utilizzata con il PHP.
BMercer
Utente
Utente
Messaggi: 205
Iscritto il: 02/09/2009, 12:28
Versione: 3.0.6
Server: UNIX/Linux

Pagine

Messaggio da BMercer » 17/05/2010, 21:00

Avrei bisogno di impostare in un mio script (staccato da phpbb) il massimo numero di topic a 10.
Per questo dopo aver estratto i dati con una select, li passo ad un ciclo while così:

Codice: Seleziona tutto

while ($row = $db->fetch($result))
{
// codice per mostrare i risultati
}
 
Il problema è che non saprei come mettere il limite.
Ho provato così:

Codice: Seleziona tutto

$i = 1;
while ($row = $db->fetch($result) && $1 <= 10)
{
// codice per mostrare i risultati
++$i;
}
 
Ma mi dà errore di connessione, mentre con il primo codice funziona, però senza il limite.

Avatar utente
Carlo
Amministratore
Amministratore
Messaggi: 9957
Iscritto il: 19/04/2009, 10:24
Sesso: Maschio
Versione: 3.2.0
Server: UNIX/Linux
PHP: 7.1.0
Database: MySQL(i) 10.0.27-MariaDB-cll-lve
Località: Puglia
Contatta:

Re: Pagine

Messaggio da Carlo » 17/05/2010, 22:31

Scusa, ma tu vorresti estrarre solo 10 discussioni? Ho capito bene?
MODs | Stili | Traduzioni MOD
Ogni MP contenente una richiesta di supporto verrà ignorato.

Avatar utente
Micogian
Leader Programmatori
Leader Programmatori
Messaggi: 3704
Iscritto il: 07/01/2010, 8:51
Versione: 3.2.0
Server: UNIX/Linux
PHP: 5.4.36
Database: MySQL 5.1.70-log
Località: Udine
Contatta:

Re: Pagine

Messaggio da Micogian » 18/05/2010, 11:15

$sql = "SELECT * FROM tabella WHERE condizioni ORDER by xxxx LIMIT 0,10"

estrai i primi 10 records della tabella

BMercer
Utente
Utente
Messaggi: 205
Iscritto il: 02/09/2009, 12:28
Versione: 3.0.6
Server: UNIX/Linux

Re: Pagine

Messaggio da BMercer » 18/05/2010, 18:21

Così facendo, bingo, non posso con una sola query fare un controllo di quante discussioni ci sono in totale e dire:

Codice: Seleziona tutto

if ($numrows > 10) {
// bottone per le pagine sucessive
}
 
Perchè esse saranno sempre e solo 10 se le limito a tale numero.

Avatar utente
Carlo
Amministratore
Amministratore
Messaggi: 9957
Iscritto il: 19/04/2009, 10:24
Sesso: Maschio
Versione: 3.2.0
Server: UNIX/Linux
PHP: 7.1.0
Database: MySQL(i) 10.0.27-MariaDB-cll-lve
Località: Puglia
Contatta:

Re: Pagine

Messaggio da Carlo » 18/05/2010, 18:37

Puoi utilizzare la funzione array_slice del PHP.

In questo modo:

Codice: Seleziona tutto

$nuovo_array = array_slice($array_topics, 0, 10); 
MODs | Stili | Traduzioni MOD
Ogni MP contenente una richiesta di supporto verrà ignorato.

BMercer
Utente
Utente
Messaggi: 205
Iscritto il: 02/09/2009, 12:28
Versione: 3.0.6
Server: UNIX/Linux

Re: Pagine

Messaggio da BMercer » 18/05/2010, 19:05

Codice: Seleziona tutto

$posts = array_slice($db->fetch($result), 0, 10);
while ($row = $posts) {
// codice html
}
Produce il primo post per infinite volte (o almeno moltissime, perchè ad un certo punto ho interrotto la pagina).

Avatar utente
Carlo
Amministratore
Amministratore
Messaggi: 9957
Iscritto il: 19/04/2009, 10:24
Sesso: Maschio
Versione: 3.2.0
Server: UNIX/Linux
PHP: 7.1.0
Database: MySQL(i) 10.0.27-MariaDB-cll-lve
Località: Puglia
Contatta:

Re: Pagine

Messaggio da Carlo » 18/05/2010, 19:12

Mhm... dovresti prima aggiungere tutti records ad una array con il ciclo while(), poi con count() conti il numero di topics totali, e con array_slice() estrai solo 10 topics.
MODs | Stili | Traduzioni MOD
Ogni MP contenente una richiesta di supporto verrà ignorato.

BMercer
Utente
Utente
Messaggi: 205
Iscritto il: 02/09/2009, 12:28
Versione: 3.0.6
Server: UNIX/Linux

Re: Pagine

Messaggio da BMercer » 18/05/2010, 19:14

mysql_fetch_assoc inserisce di base i records in un array.
E a cosa mi servirebbe contare i topic totali?

Avatar utente
Carlo
Amministratore
Amministratore
Messaggi: 9957
Iscritto il: 19/04/2009, 10:24
Sesso: Maschio
Versione: 3.2.0
Server: UNIX/Linux
PHP: 7.1.0
Database: MySQL(i) 10.0.27-MariaDB-cll-lve
Località: Puglia
Contatta:

Re: Pagine

Messaggio da Carlo » 18/05/2010, 19:31

BMercer ha scritto:E a cosa mi servirebbe contare i topic totali?
L'hai chiesto tu in un messaggio precedente o sbaglio?
BMercer ha scritto:[...] non posso con una sola query fare un controllo di quante discussioni ci sono in totale e dire: [...]
MODs | Stili | Traduzioni MOD
Ogni MP contenente una richiesta di supporto verrà ignorato.

BMercer
Utente
Utente
Messaggi: 205
Iscritto il: 02/09/2009, 12:28
Versione: 3.0.6
Server: UNIX/Linux

Re: Pagine

Messaggio da BMercer » 18/05/2010, 19:41

Ma il senso era che non si può fare un conteggio dei records di una query con limit 0,10 , perchè si sà già che saranno 10. E poi per fare il conteggio basta un mysql_num_rows.
Non è quello il problema. Il problema è che effettuando una query del tipo "SELECT * FROM xxx" vorrei mostrare solo i primi 10 risultati. Il problema è che non riesco a capire come.

Rispondi

Torna a “PHP - MySQL”

Chi c’è in linea

Visitano il forum: Nessuno e 3 ospiti