Visualizzazione risultati 1 fino 13 di 13

Discussione: errore query mysql

  1. #1
    Guest

    Predefinito errore query mysql

    l'errore è il seguente:
    Errore nella query: You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near '-5,5' at line 1

    il codice incriminato è lui:
    $max=5;
    $connessione = mysql_connect($server,$user,$psw) or die("Connessione al database MySql nn riuscita. Errore: " . mysql_error());
    mysql_select_db($db,$connessione) or die("Selezione del database nn riuscita. Errore: " . mysql_error());
    $query=mysql_query('SELECT count( * ) AS tot FROM news');
    $num=mysql_fetch_array($query);
    $pag=intval($num['tot']/$max);
    for($i=0; $i <= $pag; $i++) {
    $pagina.='<a href="HomePage.php?pag='.($i+1).'">'.($i+1).'</a>'; }
    $query='SELECT id,data,testo,autore FROM News ORDER BY id DESC LIMIT '.$max*$pagina-$max.',5';

  2. #2
    Guest

    Predefinito

    Uhm... ora per quanto io possa non capirne troppo di linguaggio MYSQL... il problema mi sembra abbastanza evidente:

    Dal tuo calcolo $max*$pagina-$max viene un numero negativo... ed io credo che il comando LIMIT non accetti valori negativi, siccome non puoi avere -X righe interessate da una query.

    Spero di non aver detto una castroneria... ma ti consiglio di ricontrollare il modo con cui ottieni quella variabile... il perchè... il come mai... insomma... il problema mi sa che sta li... ^__^

  3. #3
    Guest

    Predefinito

    ho provato a modificare così:
    Codice:
    $max=5;
    $connessione = mysql_connect($server,$user,$psw) or die("Connessione al database MySql nn riuscita. Errore: " . mysql_error());
    mysql_select_db($db,$connessione) or die("Selezione del database nn riuscita. Errore: " . mysql_error());
    $query=mysql_query('SELECT count( * ) AS tot FROM news');
    $num=mysql_fetch_array($query);
    $pag=intval($num['tot']/$max);
    if($pag <= 0) { $pag = 1; }
    for($i=0; $i <= $pag; $i++) {
    $pagina.='<a href="HomePage.php?pag='.($i+1).'">'.($i+1).'</a>';
    $paginetta=$i+1;
    }
    $query='SELECT id,data,testo,autore FROM News ORDER BY id DESC LIMIT '.$max*$paginetta-$max.',5;
    pensavo potesse essere sbagliato il fatto che in realtà a pagina nn viene assegnato un valore numerico..
    ora mi dà un altro errore:
    Parse error: parse error, unexpected T_LNUMBER in /membri2/drako1989/HomePage.php on line 27

    la linea 27 è questa:
    Codice:
    echo "<table width='350' height='140' align='center'>
    l'echo completo invece è lui:
    Codice:
    echo "<table width='350' height='140' align='center'>
    <tr><td bgcolor='#6699FF'><font color='white'>Inviata il: <b> ".date("d-m-Y \\a\l\l\e H:i:s" ,$res['data'])." </b></font></td></tr>
    <tr><td bgcolor='#0099FF'><font color='white'> ".$res['testo']." </font></td></tr>
    <tr><td bgcolor='#6699FF' align='right'><font color='white' size='-1'>Da: <b> ".$res['autore']." </b></font></td></tr>
    </table><br />";
    cos'ha di male?

  4. #4
    Guest

    Predefinito

    Beh inanzi tutto il fatto che ti dia un altro errore dovrebbe voler dire che quello della query l'hai risolto... ^__^

    E si... in effetti se non assegni un valore numerico ad una variabile... quando la vai a moltiplicare lei vale 0 mi sa... quindi dopo toglieva 5 che era il valore di $max ed ecco che il numero ti andava in negativo.

    Per quanto riguarda l'errore che ti da adesso... gli unespected insorgono spesso quando ti dimentichi un ; (che può essere anche nella riga prima a quella in cui ti da un errore), oppure quando utilizzi variabili di tipo sbagliato in delle funzioni o roba simile...

    date("d-m-Y \\a\l\l\e H:i:s" ,$res['data'])

    Cosa dovrebbe fare esattamente questa chiamata? °__°
    Non uso troppo la funzione date, non ricordavo accettasse anche due parametri, potrebbe essere quello che non gli piace...

  5. #5
    Guest

    Predefinito

    il date è corretto. stampa na cosa del tipo "19-01-2038 alle 04:14:07"
    se posti il codice di tutta la pagina vediamo sta linea che da errore (dovrebbe essere la 26) ^_^

    x i limit fai prima a mettere un'altra variabile, imho, ad es
    Codice:
    if(is_null($_GET[pag]) || $_GET[pag] <= 0) $start = 0;
    else $start = ($_GET[pag]-1)*$max; //se pag = 1 il tutto va a 0 e hai la prima pagina delle news e lo stesso avviene se pag è <=0
    $query='SELECT id,data,testo,autore FROM News ORDER BY id DESC LIMIT '.$start.',5;

  6. #6
    Guest

    Predefinito

    grazie a tutti per le risposte..
    oggi parlando con vash ho risolto il problema, però mi se ne è creato un altro..
    praticamente nn si vedono le news, il codice intero della pagina è:
    Codice:
    <?
    $max=5;
    $connessione = mysql_connect($server,$user,$psw) or die("Connessione al database MySql nn riuscita. Errore: " . mysql_error());
    mysql_select_db($db,$connessione) or die("Selezione del database nn riuscita. Errore: " . mysql_error());
    $query=mysql_query('SELECT count( * ) AS tot FROM news');
    $num=mysql_fetch_array($query);
    $pag=intval($num['tot']/$max);
    if($pag <= 0) { $pag = 1; }
    for($i=0; $i <= $pag; $i++) {
    $pagina.='<a href="HomePage.php?pag='.($i+1).'">'.($i+1).'</a>';
    $paginetta=$i+1;
    }
    $inizio=$max*$paginetta-$max;
    $query='SELECT id,data,testo,autore FROM News ORDER BY id DESC LIMIT '.$inizio.',5';
    $risultato = mysql_query($query) or die("Errore nella query: " . mysql_error());
    while($res = mysql_fetch_array($risultato)) {
    echo "<table width='350' height='140' align='center'>
    <tr><td bgcolor='#6699FF'><font color='white'>Inviata il: <b> ".date("d-m-Y \\a\l\l\e H:i:s" ,$res['data'])." </b></font></td></tr>
    <tr><td bgcolor='#0099FF'><font color='white'> ".$res['testo']." </font></td></tr>
    <tr><td bgcolor='#6699FF' align='right'><font color='white' size='-1'>Da: <b> ".$res['autore']." </b></font></td></tr>
    </table><br />";
    }
    ?>
    dove può essere il problema?? nn mi dà alcun errore solamente nn mi visualizza le news!

  7. #7
    Guest

    Predefinito

    sono riuscito a risolvere il problema del msg precedente.. era una cavolata immane, bastava ragionarci un po' e farmi tutti i conti!!
    scusate se ho postato un nuovo msg ma nn riesco ad editare!

  8. #8
    Guest

    Predefinito

    Citazione Originalmente inviato da drako1989
    sono riuscito a risolvere il problema del msg precedente.. era una cavolata immane, bastava ragionarci un po' e farmi tutti i conti!!
    scusate se ho postato un nuovo msg ma nn riesco ad editare!
    Molto spesso i problemi di questo genere sono cavolate immani... piccoli errori di distrazione che non ci sogneremmo mai di avere fatto e che quindi non notiamo... ^___^

    Mi fa piacere che tu abbia risolto i tuoi problemi... ^__^

  9. #9
    Guest

    Predefinito

    a dir la verità nn tutti sono stati risolti :D
    ora lo script funziona perfettamente.. o quasi :D
    in pratica mi visualizza le news ecc.. ma la pagina rimane solamente una (nonostante ci siano 7 news ed essendo massimo 5 news per pagina dovrebbero esserci 2 pagine).. ho tentato di risolvere il problema pensando che potesse provenire da intval (dato che arrotonda sempre per difetto quindi avrei 1 sola pagina invece che 2) e inserendo ceil() al suo posto (arrotonda sempre per eccesso) però il problema c'è ancora.. con un echo ho tentato di visualizzare il risultato di num['tot'] e mi sono accorto che nn stampa nulla (quindi è vuoto).. la query che gli assegna il valore è questa:
    Codice:
    $query=mysql_query('SELECT count( * ) AS tot FROM news');
    $num=mysql_fetch_array($query);
    $pag=ceil($num['tot']/$max);

  10. #10
    Guest

    Predefinito

    uhm... la query è giusta, ma ora mi sorge un dubbio: il nome della tabella nn era "News"?
    x il resto è meglio intval altrimenti ti stampa un link di troppo (provato in locale:P)

  11. #11
    Guest

    Predefinito

    infatti il nome è News, qui per sbaglio ho postato news semplicemente perchè su uno script avevo news, ma il file su av ha News come nome.
    intval da quello che ho potuto notare e testare arrotonda sempre per difetto.

  12. #12
    Guest

    Predefinito

    si, infatti, se vuoi arrotondare x eccesso devi cambiare un po il resto dello script ^_^

    cmq prima bisogna capire xkè nn prende nada con il count(*)...
    provato a mettere dopo mysql_query e a mysql_fetch_array un or die('errore '.mysql_error()); ?

  13. #13
    Guest

    Predefinito

    fatto ma nn dà nessun errore.. io avevo pensato al fatto che il count ritornasse un bigint, ma nn c'entra assolutamente nulla dato che ho provato a stamparlo appena dopo la query e nn mi stampa il risultato!

Regole di scrittura

  • Non puoi creare nuove discussioni
  • Non puoi rispondere ai messaggi
  • Non puoi inserire allegati.
  • Non puoi modificare i tuoi messaggi
  •