Problema con query e script PHP

neo996sps

Utente Attivo
31 Mag 2007
247
0
0
Trentino
Ciao a tutti,

ho preparato uno script PHP da pubblicare su un sito per la gestione delle news. Lo script si deve comportare così:

- creare una tabella 3 X 3 in cui in ogni cella ho la mia news;
- paginare il tutto, in maniera tale che ogni 9 news crei una nuova pagina;

ora, tutto questo è stato realizzato alla perfezione, però solamente per la prima pagina... se passo alla seconda ricevo un errore relativo all'indice della news.

Questo è il codice dello script:

PHP:
<?php
$count = mysql_query("SELECT COUNT(id) FROM news");
$res_count = mysql_fetch_row($count);
$tot_records = $res_count[0];
$per_page = 9;
$tot_pages = ceil($tot_records / $per_page);
$current_page = (!$_GET['page']) ? 1 : (int)$_GET['page'];
$primo = ($current_page - 1) * $per_page;
$result = mysql_query("SELECT * FROM news WHERE archivia = '0' ORDER BY id desc LIMIT $primo, $per_page;");
$num_cols = 3;
$num_rows = ceil($tot_records / $num_cols); // the number of rows
$num = 0;
print("<table class='tabella_moduli'>");
while($results = mysql_fetch_array($result)) {
    print("<tr>");
    for ($cols = 0; $cols < $num_cols; $cols++) {
        if ($num < $tot_records) {
            $titolo = mysql_result($result, $num, "titolo");
            $descrizione = mysql_result($result, $num, "testo_introduttivo");
            $data = mysql_result($result, $num, "data");
            $m = mysql_result($result, $num, "id");
            print("<td class='tdmoduli'>");
            print("<div class='art-block'>
                                <div class='art-block-tl'></div>
                                <div class='art-block-tr'></div>
                                <div class='art-block-bl'></div>
                                <div class='art-block-br'></div>
                                <div class='art-block-tc'></div>
                                <div class='art-block-bc'></div>
                                <div class='art-block-cl'></div>
                                <div class='art-block-cr'></div>
                                <div class='art-block-cc'></div>
                                <div class='art-block-body'>
                                            <div class='art-blockheader'>
                                                 <div class='t'>".$titolo."</div>
                                            </div>
                                            <div class='art-blockcontent'>
                                                <div class='art-blockcontent-body'>
                                            <!-- block-content -->
<div>
".$descrizione."
</div>
                                            <!-- /block-content -->
                                                <br>
                                            		<div class='cleared2'>".$data." - <a href='./news_dettaglio.php?id=$m'>Leggi Tutto</a></div>
                                            		<div class='cleared'></div>
                                                </div>
                                            </div>
                            		<div class='cleared'></div>
                                </div>
                            </div>");
            print("<td>");
            
        } 
        $num++;
    }
  print("</tr>");
}
print("</table>");
?>

questo è l'errore:

Codice:
Warning: mysql_result() [function.mysql-result]: Unable to jump to row 2 on MySQL result index 7 in /var/www/sito/2/index.php on line 107

Warning: mysql_result() [function.mysql-result]: Unable to jump to row 2 on MySQL result index 7 in /var/www/sito/2/index.php on line 108

Warning: mysql_result() [function.mysql-result]: Unable to jump to row 2 on MySQL result index 7 in /var/www/sito/2/index.php on line 109

Warning: mysql_result() [function.mysql-result]: Unable to jump to row 2 on MySQL result index 7 in /var/www/sito/2/index.php on line 110

le righe interessate sono queste:

PHP:
$titolo = mysql_result($result, $num, "titolo");
            $descrizione = mysql_result($result, $num, "testo_introduttivo");
            $data = mysql_result($result, $num, "data");
            $m = mysql_result($result, $num, "id");

qualcuno mi sa dire come si risolve sto problema infame?
 

satifal

Utente Attivo
25 Set 2008
522
13
0
Roma
Un primo problema che mi salta all'occhio è che la count la fai sempre sull'intera tabella news, per cui $tot_records conterrà sempre il numero di tutti i record presenti nella tabella news, ma poi usi $tot_records per scorrere il resultset (if ($num < $tot_records)) che però ottieni tramite una query che usa la clausola LIMIT per cui è normale che prima o poi sfori.
 

neo996sps

Utente Attivo
31 Mag 2007
247
0
0
Trentino
quando le fesserie si fanno, bisogna farle in grande stile! Con il tuo suggerimento ho risolto...

Ecco il codice se servisse a qualcuno:

PHP:
<?php
$count = mysql_query("SELECT COUNT(id) FROM news");
$per_page = 9;
$current_page = (!$_GET['page']) ? 1 : (int)$_GET['page'];
$primo = ($current_page - 1) * $per_page;
$result = mysql_query("SELECT * FROM news WHERE archivia = '0' ORDER BY id desc LIMIT $primo, $per_page;");
$res_count = mysql_fetch_row($result);
$tot_records = $res_count[0];

$tot_pages = ceil($tot_records / $per_page);


$num_cols = 3;
$num_rows = ceil($tot_records / $num_cols); 
$num = 0;
print("<table class='tabella_moduli'>");
while($results = mysql_fetch_array($result)) {
    print("<tr>");
    for ($cols = 0; $cols < $num_cols; $cols++) {
        if ($num < $tot_records) {
            $titolo = mysql_result($result, $num, "titolo");
            $descrizione = mysql_result($result, $num, "testo_introduttivo");
            $data = mysql_result($result, $num, "data");
            $m = mysql_result($result, $num, "id");
            print("<td class='tdmoduli'>");
            print("<div class='art-block'>
                                <div class='art-block-tl'></div>
                                <div class='art-block-tr'></div>
                                <div class='art-block-bl'></div>
                                <div class='art-block-br'></div>
                                <div class='art-block-tc'></div>
                                <div class='art-block-bc'></div>
                                <div class='art-block-cl'></div>
                                <div class='art-block-cr'></div>
                                <div class='art-block-cc'></div>
                                <div class='art-block-body'>
                                            <div class='art-blockheader'>
                                                 <div class='t'>".$titolo."</div>
                                            </div>
                                            <div class='art-blockcontent'>
                                                <div class='art-blockcontent-body'>
                                            <!-- block-content -->
<div>
".$descrizione."
</div>
                                            <!-- /block-content -->
                                                <br>
                                            		<div class='cleared2'>".$data." - <a href='./news_dettaglio.php?id=$m'>Leggi Tutto</a></div>
                                            		<div class='cleared'></div>
                                                </div>
                                            </div>
                            		<div class='cleared'></div>
                                </div>
                            </div>");
            print("<td>");
            
        } 
        $num++;
    }
  print("</tr>");
}
print("</table>");
?>
 

Eliox

Utente Attivo
25 Feb 2005
4.390
3
0
grazie per aver postato il codice funzionante, per rendere lo script più sicuro sarebbe meglio filtrare i parametri passati per GET
 

neo996sps

Utente Attivo
31 Mag 2007
247
0
0
Trentino
attenzione. Mi sono appena accorto di un errore. Se io voglio dare più colonne si ripresenta l'errore del primo post e non riesco a capire come posso sistemarlo in via definitiva.

vorrei inoltre sapere come fare il passaggio per $_GET dei parametri
 
Discussioni simili
Autore Titolo Forum Risposte Data
L problema con query select PHP 2
R Problema query con ricerca id numerico PHP 2
G Problema ------- con Query PHP 1
G Problema con Query PHP 1
M [PHP] Problema con query select PHP 2
V [MySQL] problema query con date su server MySQL 5
D Problema con query in php PHP 5
M [PHP] Problema con query PHP 17
Rikk73 [C#] problema con stampa da query linq EnumerableRowCollection .NET Framework 0
M Problema con query PHP 15
G Problema con una query. PHP 5
F problema su query con nome tabella variabile PHP 20
M problema con media query CSS HTML e CSS 1
L problema creazione query con campo float PHP 2
andrea.peo Problema query con join visualizzazione record ripetuti PHP 5
Emix Dubbio e problema su query con operatore LIKE PHP 56
S Problema query con sum MySQL 4
G Problema con query mysql MySQL 1
L PHP: problema con query mysql. PHP 3
S Autocompletamente con jQuery, PHP e MySQL - Problema con le query PHP 7
Trapano Problema con query MySQL 32
K problema con query complessa MySQL 4
K [MYSQL] problema con una query in loop MySQL 1
D problema con ciclo if else query PHP 3
B Problema con query mySql Java 2
P problema con query PHP 0
A problema con query mysql PHP 1
A Problema con Query SQL Classic ASP 3
P problema con una query PHP 0
B problema con query PHP 4
K problema con una query.. Database 2
T ALTRO PROBLEMA CON ARRAY PHP PHP 1
T PROBLEMA CON ARRAY PHP 8
F Problema con risposta PHP 0
S problema con recupero dati tabella mysql PHP 2
Z Problema con il mio tp-l i nk Reti LAN e Wireless 1
L Problema RAM con Tomcat 8 Apache 0
napuleone problema con sort e asort PHP 4
Z Problema con INT MySQL PHP 1
Z Problema database MySQL con XAMPP PHP 0
M Problema con controllo form in real time jQuery 6
Z Problema di sincronizzazione PAYPAL con PHP PHP 1
G Problema con Get page PHP 4
P Problema con require once PHP 6
P Problema con i package Java 1
A Problema login con Safari PHP 14
F INDESIGN: problema esportazione esecutivo per la stampa con foto B/N Webdesign e Grafica 0
S problema con css bootstrap3 HTML e CSS 4
M .load() problema con caricamenti dinamici di js Javascript 0
T problema con select dinamica con jquery Javascript 0

Discussioni simili