problema script impaginazione

SolidSnake4

Utente Attivo
23 Ott 2007
505
0
0
sto usndo questo script per impaginare su due colonne degli articoli, però quando lo avvio con easy php non mi funziona come mai ?

PHP:
<?php
@include 'config.inc.php';
$colonne = 2;
$sql = "SELECT titolo FROM articoli";

$res = @mysql_query($sql);
$righe = @mysql_num_rows($res);
$rs = @ceil($righe / $colonne);

while($r = @mysql_fetch_array($res)) {
  $data[] = $r['titolo'];
  }

echo "<table>\n";
for($i = 0; $i < $rs; $i++) {
  echo "<tr>\n";
  for($j = 0; $j < $colonne; $j++) {
  if(isset($data[$i + ($j * $rs)])) {
  echo "<td>" . $data[$i + ($j * $rs)] . "</td>\n";
  }
}
echo "</tr>\n";
}
echo "</table>\n";
?>

ovviament el'ho modificato in base al mio db
 
togli tutte le @ davanti alle funzioni, poi metti mysql_error() davanti alle query, così:
PHP:
$res = @mysql_query($sql) or die (mysql_error());

In questo modo se ci sono errori vengono stampati.
Poi è necessario controllare che i dati di connessione e selezione contenuti in config.inc.php siano corretti.
 
ma la @ davanti a mysql_query la lascio ?
questo è il codice contenuto nel mio file config.inc

PHP:
<?php
$db_host = "localhost";
$db_user = "root";
$db_password = "";
$db_name = "archivionotizie";
?>

aggiungo mysql_error in questo modo ?

PHP:
<?php
@include 'config.inc.php';
$colonne = 2;

$res = @mysql_query($sql) or die (mysql_error());
$righe = @mysql_num_rows($res) or die (mysql_error());
$rs = @ceil($righe / $colonne) or die (mysql_error());

while($r = @mysql_fetch_array($res) or die (mysql_error()) {
  $data[] = $r['titolo'];
  }
  
echo "<table>\n";
for($i = 0; $i < $rs; $i++) {
  echo "<tr>\n";
  for($j = 0; $j < $colonne; $j++) {

  if(isset($data[$i + ($j * $rs)])) {
  echo "<td>" . $data[$i + ($j * $rs)] . "</td>\n";
  }
 }
 echo "</tr>\n";
}
echo "</table>\n";
?>
 
Ultima modifica:
mi dice che La query e` vuota, che singifica, può essere che l'array data[] sia vuoto ?
 
dove viene valorizzata la variabile $sql? nel codice non la vedo, dovrebbe contenere una query
 
$sql = "SELECT titolo FROM articoli";

mi ero dimenticato di metterla questa è la query sql, allora facendo partire questo script con easy php mi visualizza la query è vuota, poi lo fatto partire dal mio spazio su altervista e la però mi dava errore sullo script che inseriva penso che stava male cmq tu lo hai testato questo script funziona così come è fatto ?
 
Si l'ho usato spesso, che errore ti dava in remoto?
 
Ultima modifica:
allora praticamente avevo usato uno script per l'inserimento trovato un altro forum su easy php me lo faceva andare poi su altervista mi dava problemi come se non avessi completato tutti i campi richiesti dell'inserimento e non mi faceva inserire niente, poi cmq sono tornato ad usare lo script dell'inserimento delle faq e tutto va bene; sono riuscito anche a far funzionare lo script cancella però ora sto avendo dei problemi con lo script di modifica mi esce una pagina bianca e basta mentre mi sarebbe dovuto uscire i campi della faq in modo da modificarli. Poi un altra domanda posso usare lo script dell'impaginazione a due colonne facendo visualizzare più campi e magari senza usare un array data ?

Comunque ora l'ho sto usando per visualizzare il titolo della faq ma mi appare sempre una pagina bianca ecco il codice:

PHP:
<?php

include 'config.php';
$colonne = 2;
$sql = "SELECT domanda FROM tb_faq";

$res = mysql_query($sql) or die (mysql_error());
$righe = mysql_num_rows($res) or die (mysql_error());
$rs = ceil($righe / $colonne) or die (mysql_error());

while($r = mysql_fetch_array($res) or die (mysql_error())) {
  $data[] = $r['domanda'];
  }
  
echo "<table>\n";
for($i = 0; $i < $rs; $i++) {
  echo "<tr>\n";
  for($j = 0; $j < $colonne; $j++) {

  if(isset($data[$i + ($j * $rs)])) {
  echo "<td>" . $data[$i + ($j * $rs)] . "</td>\n";
  }
 }
 echo "</tr>\n";
}
echo "</table>\n";
?>

questo è il file config:

PHP:
<?php 
class MySQL { 
 function MySQL() 
 { 
  $this->host_name = "localhost";
  $this->user_name = "root";
  $this->password = "";
  $this->data_name = "my_deprice";
  $this->link = mysql_connect($this->host_name, 
                              $this->user_name, 
                              $this->password)
                              or die (mysq_error()); 
  mysql_select_db($this->data_name) or die (mysq_error()); 
  } 
 } 
$data = new MySQL(); 
?>

non mi visualizza niente cosa sbaglio ?
 
Ultima modifica:
mysql_error() si usa per le query, perchè lo usi qui?
PHP:
$rs = ceil($righe / $colonne) or die (mysql_error());

Poi toglilo da

PHP:
while($r = mysql_fetch_array($res) or die (mysql_error()))
ti blocca il ciclo
 
PHP:
<?php

include 'config.php';
$colonne = 2;
$sql = "SELECT domanda FROM tb_faq";

$res = mysql_query($sql) or die (mysql_error());
$righe = mysql_num_rows($res) or die (mysql_error());
$rs = ceil($righe / $colonne);

while($r = mysql_fetch_array($res)) {
  $data[] = $r['domanda'];
  }
  
echo "<table>\n";
for($i = 0; $i < $rs; $i++) {
  echo "<tr>\n";
  for($j = 0; $j < $colonne; $j++) {

  if(isset($data[$i + ($j * $rs)])) {
  echo "<td>" . $data[$i + ($j * $rs)] . "</td>\n";
  }
 }
 echo "</tr>\n";
}

così va bene ? però continua sempre a darmi solo una pagina bianca
 
il fatto è questo a me $data[] rimane vuoto non senza nessun elemento. Poi ho un altra domanda

1- con questo script riesco a far incolonnare anche altri campi del mio aricolo, tipo edscrizione, la data l'immagine.
2- ho risolto adesso mi funziona prima del cilco while ho messo $data = array(); e me le visualizza
3- ora per far visualizzare questi articoli su un template diviso in due colonne è difficile ? O devo solo modificare oppurtunamente questo script per l'impaginazione ?
 
Ultima modifica:
Se l'array rimane vuoto e la query è corretta allora l'unica spiegazione e che non ci siano dati in tabella..

Per le altre domande ti consiglio di vedere anche questo script che è un pò più completo
 
ok provato funziona, senti e se volessi modificarlo in modo che passi alla visualizzazione a due colonne solo se il numero delle righe del db e maggiore di 4, basta mettere un if ( $num_rows > 4 ) allora passa al ciclo, mentre se $num_rows == 4 la visualizza normalmente cioè prendendo tutto lo spazio che c'è a disposizione per il testo, i questo caso basta che selezioni i campi che mi sevono e disporsi come meglio credo giusto ? Poi un altra cosa per lasciare un pò di spazio tra un dato e un altro visto che usa il tag table aggiungo un rigo vuoto in modo che mi distanzi tra loro gli articoli ?
 
Ultima modifica:
1) si un controllo su $num_rows dovrebbe bastare
2) hai provato?
 
Ora ci provo poi senti se io inserisco 20 articoli non voglio che tutti e 20 vengano visualizzati ma solo alcuni. Io questa cosa la vorrei fare in base l'ora di inserimento dell'articolo, cioè se un giorno metto 10 articoli solo 8 vengono visualizzati però ovviamente scegliendo quelli più recenti mentre gli altri vengono salvati su altri DB. Ma per adesso vorrei solo far limitare la visualizzazione sino ad un numero X di articoli. Imposto un ciclo predefinito ?
Vorrei anche fare in modo di far inserire gli articoli solo agli admin del sito e quindi far vedere solo a loro le opzioni di inserisci, modifica e cancella, mentre per i visitatori solo la possibilità di inserire commenti. Come si fa per fare questo ?
 
Ultima modifica:
1)
PHP:
$query="SELECT articoli FROM tabella ORDER BY data DESC LIMIT 8";
2)
Devi utilizzare le sessioni
 
1 -
PHP:
$query="SELECT articoli FROM tabella ORDER BY data DESC LIMIT 8";
con questo codice poi posso selezionare anche gli altri campi di un articolo giusto ?

2- con le sessioni posso anche gestire i permessi che hanno i miei collaboratori sul sito in base alla categoria utenti con cui li dividerò ?
 
Ultima modifica:
Un altra cosa poi, l'admin di questo sito prima di pubblicare un articolo, inserito dagli altri collaboratori, deve avere la possibilità eventulmente di modificarlo e poi un tasto pubblica lo mette in home, e così anche per gli altri ora come faccio a fare questo, metto un altro campo nella tabella articoli chiamandolo enable e lo imposto a 0 se non deve essere pubblicato e 1 se deve essere pubblicato e cmq poi l'ordine con cui devono essere pubblicati dipende da quali ha scelto l'admin. Come posso fare ?
 
Si potresti utilizzare un campo di tipo ENUM valorizzato '0','1', così sei sicuro che non possono essere inseriti altri valori.
 
e secondo te come è meglio impostarlo che ne pubblica uno alla volta oppure oppure metto un pulsante pubblica e ogni volta poi lo faccio pubblicare e magari l'ordine lo prendo ordinando sempre per id ma controllando il campo enum giusto ?
 

Discussioni simili