Pagina 1 di 2 12 UltimoUltimo
Visualizzazione risultati 1 fino 30 di 39
Like Tree4Likes

Discussione: [PHP/MySQL] Conteggio righe della tabella...

  1. #1
    Guest

    Post [PHP/MySQL] Conteggio righe della tabella...

    Ciao a tutti, vi spiego il mio problema:
    Vorrei contare le righe di una tabella in questo caso news..un esempio io ho provate a contarle per id (anche se gli id sono tutti sballati)...ma deve venire sempre lo stesso risultato sia per titolo, che per altro!
    Ossia:
    --5--TITOLO---TESTO---
    --8--CIAO---TESTO---
    Mi deve dare come risultato 2...anche se li conto per titolo o per testo..
    Se non avete capito chiedete pure anche perchè penso di non essermi spiegato bene...
    Cmq ecco il mio codice:
    Codice PHP:
    <html>
    <head>
    <title>Prova</title>
    </head>
    <body>
    <?php

    // parametri del database
    /* LI HO NASCOSTI SUL POST */

    $db = mysql_connect($db_host, $db_user, $db_password);
    if (
    $db == FALSE)
    die (
    "Errore nella connessione.");
    mysql_select_db($db_name, $db)
    or die (
    "Errore nella selezione del database.");


    $query = mysql_query("SELECT COUNT(id) FROM news");
    or die(
    "Query non valida: " . mysql_error());

    while(
    $row = mysql_fetch_array($query)){
    echo
    "Ci sono ". $row['COUNT(id)'] ." news nel database...";
    }
    ?>
    </body>
    </html>
    Grazie 1000...Ciao Davide! :)

  2. #2
    Guest

    Predefinito

    Forse non hai ben capito fome funziona count()...
    Esegui la query SELECT COUNT(id) FROM news su phpmyadmin per renderti conto di quello che fà...

    Ciao

  3. #3
    Guest

    Predefinito

    E' giusto...mi è spuntato il numero di news (47) ma perchè con il php non funziona???
    Grazie!...Ciao Davide! :)

  4. #4
    Guest

    Predefinito

    Stampa l'array $row per capire cosa contiene e se la query viene eseguita.

    Ciao

  5. #5
    Guest

    Predefinito

    Eh...??Ho provato così: ma sempre pagina bianka...! :(
    Codice PHP:
    <html>
    <head>
    <title>Prova</title>
    </head>
    <body>
    <?php

    // parametri del database


    $db = mysql_connect($db_host, $db_user, $db_password);
    if (
    $db == FALSE)
    die (
    "Errore nella connessione.");
    mysql_select_db($db_name, $db)
    or die (
    "Errore nella selezione del database.");


    $query = mysql_query("SELECT COUNT(id) FROM news");
    or die(
    "Query non valida: " . mysql_error());

    while(
    $row = mysql_fetch_array($query)){
    echo
    "Ci sono ". array($row['COUNT(id)']) ." news nel database...";
    }
    ?>
    </body>
    </html>

  6. #6
    L'avatar di miki92
    miki92 non è connesso AlterGuru 2500
    Data registrazione
    21-04-2007
    Residenza
    Procida (NA)
    Messaggi
    4,226

    Predefinito

    Se devi solo contare le righe in una tabella puoi fare cosi:
    Codice PHP:
    <?php
    mysql_connect
    ("localhost", "user", "password");
    mysql_select_db("database");

    $risultato = mysql_query("SELECT * FROM news");
    $num_righe = mysql_num_rows($risultato);

    echo
    "Ci Sono".$num_righe. "news nel database.";
    ?>
    Apprezzi l'aiuto? Offrimi un caffè!

  7. #7
    paolin non è connesso Utente
    Data registrazione
    13-02-2014
    Messaggi
    127

    Predefinito

    Salve a tutti,
    ho provato il codice di miki92 per contare le righe della mia tabella db, ma non mi visualizza nulla a video, a parte "Ci sono news nel database"

    Codice PHP:
    <?php
    mysql_connect
    ("localhost", "user", "my_xxxx");
    mysql_select_db("database");

    $risultato = mysql_query("SELECT * FROM Parola");
    $num_righe = mysql_num_rows($risultato);

    echo
    "Ci Sono ".$num_righe." Parola nel database.";
    ?>
    Parola è il 1° campo del db
    Dove sbaglio?
    Grazie.

  8. #8
    L'avatar di alemoppo
    alemoppo non è connesso Staff AV
    Data registrazione
    24-08-2008
    Residenza
    PU / BO
    Messaggi
    22,064

    Predefinito

    La discussione è di 11 anni fa. Ora non si utilizzano più queste funzioni. Prova a convertirle in mysqli (versione procedurale; è semplice, sono due librerie molto simili).

    Ciao!

  9. #9
    paolin non è connesso Utente
    Data registrazione
    13-02-2014
    Messaggi
    127

    Predefinito

    Ciao alemoppo, ho fatto così e mi sembra che funziona!
    Ho trovato un esempio e c'ho sostituito i miei dati... la mia conoscenza di PHP è poco più di zero!

    Codice PHP:
    <?php
    $con
    =mysqli_connect("localhost","xxxxxx","my_xxxxxx","my_xxxxxx");
    // Check connection
    if (mysqli_connect_errno())
    {
    echo
    "Failed to connect to MySQL: " . mysqli_connect_error();
    }

    $sql="SELECT Parola FROM database ORDER BY parola";

    if (
    $result=mysqli_query($con,$sql))
    {
    // Return the number of rows in result set
    $rowcount=mysqli_num_rows($result);
    printf("Il set di risultati ha %d righe.\n",$rowcount);
    // Free result set
    mysqli_free_result($result);
    }

    mysqli_close($con);
    ?>

  10. #10
    L'avatar di alemoppo
    alemoppo non è connesso Staff AV
    Data registrazione
    24-08-2008
    Residenza
    PU / BO
    Messaggi
    22,064

    Predefinito

    Citazione Originalmente inviato da paolin Visualizza messaggio
    Ciao alemoppo, ho fatto così e mi sembra che funziona!
    Molto bene!

    Citazione Originalmente inviato da paolin Visualizza messaggio
    la mia conoscenza di PHP è poco più di zero!
    Non è difficile capire quel codice, se hai qualche dubbio chiedi pure. Anche senza conoscere PHP, si capisce che $conn è la connessione al database, poi viene controllato se la connessione è stata eseguita correttamente, quindi esegue la query e se viene eseguita correttamente assegna il numero di righe a $rowcount.

    Nota che invece della printf() avresti anche potuto usare la echo come avevi fatto nel tuo vecchio codice:
    Codice PHP:
    $num_righe=mysqli_num_rows($result);
    echo
    "Ci Sono ".$num_righe." Parola nel database.";
    Ciao!
    paolin likes this.

  11. #11
    paolin non è connesso Utente
    Data registrazione
    13-02-2014
    Messaggi
    127

    Predefinito

    Ciao, scusa se approfitto della tua gentilezza, sto tentando di trasformare un "mysql" in "mysqli"
    Questo il vecchio:
    Codice PHP:
    <?php

    $aParola
    =$_POST["Parola"];

    IF (empty(
    $aParola))
    $aParola=$_GET["Parola"];

    $db_host = "localhost";
    $db_user = "xxxxxx";
    $db_name = "my_xxxxxx";

    $db = mysql_connect($db_host, $db_user);
    if (
    $db == FALSE)
    die (
    "Errore nella connessione.");

    $res = mysql_select_db($db_name);
    if (
    $res == FALSE)
    die (
    "Errore nella selezione del DB.");

    // query per vedere se c'è già un commento uguale
    $query="SELECT * FROM dizgeagri WHERE Parola='$aParola'";

    $result = mysql_query($query);
    $numero = mysql_num_rows($result);


    if (
    $numero>0)
    {

    $atraduz=mysql_result($result,0,"Traduz");
    $anote=mysql_result($result,0,"note");
    $acateg=mysql_result($result,0,"categ");
    $aimg=mysql_result($result,0,"img");
    $aimg2=mysql_result($result,0,"img2");

    }

    else
    {
    header("location: diz_ines.html");

    }

    mysql_close();

    ?>
    Ho provato a trasformare così:
    Codice PHP:
    <?php

    $aParola
    =$_POST["Parola"];

    IF (empty(
    $aParola))
    $aParola=$_GET["Parola"];

    $con=mysqli_connect("localhost","paolin","my_xxxxxx","my_xxxxxx");
    // Check connection
    if (mysqli_connect_errno())
    {
    echo
    "Failed to connect to MySQL: " . mysqli_connect_error();
    }

    $sql="SELECT * FROM dizgeagri WHERE Parola='$aParola'";

    if (
    $result=mysqli_query($con,$sql))
    {
    $result = mysqli_query($con,$sql);
    $numero = mysqli_num_rows($result);

    }

    if (
    $numero>0)
    {

    $atraduz=mysqli_result($result,0,"Traduz");
    $anote=mysqli_result($result,0,"note");
    $acateg=mysqli_result($result,0,"categ");
    $aimg=mysqli_result($result,0,"img");
    $aimg2=mysqli_result($result,0,"img2");

    }

    else
    {
    header("location: diz_ines.html");

    }

    mysqli_close($con);

    ?>
    ma mi dà questo errore:
    Fatal error: Call to undefined function mysqli_result() in /membri/paolin/dizge_rich-dati_new.php on line 53
    Cosa sbaglio?
    Grazie!

  12. #12
    L'avatar di alemoppo
    alemoppo non è connesso Staff AV
    Data registrazione
    24-08-2008
    Residenza
    PU / BO
    Messaggi
    22,064

    Predefinito

    Purtroppo mysqli_result non esiste, e dovresti utilizzare mysqli_fetch_assoc().

    Però volendo, nei commenti qui c'è l'implementazione della funzione, così da utilizzare anche il codice con quella funzione.

    Ciao!

  13. #13
    paolin non è connesso Utente
    Data registrazione
    13-02-2014
    Messaggi
    127

    Predefinito

    Grazie per la risposta. C'ho studiato un po', poi ho provato così:
    Codice PHP:
    <?php

    $aParola
    =$_POST["Parola"];

    IF (empty(
    $aParola))
    $aParola=$_GET["Parola"];

    $con=mysqli_connect("localhost","paolin","my_xxxxxx","my_xxxxxx");
    // Check connection
    if (mysqli_connect_errno())
    {
    echo
    "Failed to connect to MySQL: " . mysqli_connect_error();
    }

    $sql="SELECT * FROM dizgeagri WHERE Parola='$aParola'";

    $result = mysqli_query($con,$sql);
    $numero = mysqli_num_rows($result);

    if (
    $numero>0)
    {

    function
    mysqli_result($search, $row, $field){
    $i=0; while($results=mysqli_fetch_array($search)){
    if (
    $i==$row){$result=$results[$field];}
    $i++;}
    return
    $result;}

    Simply;

    $search=mysqli_query($connection, "select name from dizgeagri where id='Traduz'");
    $name=mysqli_result($search, 0, "id");

    }
    else
    {
    header("location: diz_ines.html");

    }
    mysqli_close($con);
    ?>

    <div style="font-family: book antiqua,times new roman; font-size:18px; color:#B00000">
    <B>
    <?php echo $aParola; ?> </B>
    <span style="font-family:book antiqua,times new roman; font-size:15px; color:#000000">
    <?php echo $acateg; ?></span>
    <span style="font-size:18px; color:#000040">=<B>
    <?php echo $name; ?></B></span></div>
    Mi dà "Parola" =
    ma non mi mostra il campo "Traduz" (name)
    Cosa sbaglio?
    Abbi pazienza. Grazie!

  14. #14
    mzanella non è connesso AlterGuru
    Data registrazione
    29-12-2015
    Messaggi
    1,954

    Predefinito

    Sistema l'indentazione, così sarà più semplice capire cosa succede.

    La funzione mysqli_result che hai definito non serve a nulla: se ti serve il primo record ti basta chiamare mysqli_fetch_array, se ti serve un record che non è il primo ti conviene usare LIMIT nella query.

    Nella chiamata alla funzione mysqli_result stai chiedendo di leggere il campo id, ma nella query hai estratto solo il campo name, è questo a causare il malfunzionamento.

    Dopo la definizione della funzione c'è un Simply; che non fa niente.

    Nella parte HTML c'è una stampa di $acateg, che non è definita.

    Nella seconda query stai usando una variabile $connection che non è definita.

    In generale dovresti controllare i valori di ritorno delle funzioni per capire se ci sono stati errori.

    Concettualmente la struttura del codice non ha senso: prima controlli che una certa parola sia presente nella tabella dizgeagri, se lo è la ignori e leggi la (prima) riga della tabella dizgeagri il cui id è Traduz. Probabilmente nella seconda interrogazione volevi fare qualcosa che dipendesse dalla parola letta, ma che cosa?

    I suggerimenti che do più spesso:


  15. #15
    paolin non è connesso Utente
    Data registrazione
    13-02-2014
    Messaggi
    127

    Predefinito

    Il documento originale (con mysql, deprecato) peraltro perfettamente funzionante, fa esattamente quello che voglio; lo posto così da rendere l'idea:
    Codice PHP:
    <?php

    $aParola
    =$_POST["Parola"];

    IF (empty(
    $aParola))
    $aParola=$_GET["Parola"];

    $db_host = "localhost";
    $db_user = "paolin";
    $db_name = "my_xxxxxx";

    $db = mysql_connect($db_host, $db_user);
    if (
    $db == FALSE)
    die (
    "Errore nella connessione.");

    $res = mysql_select_db($db_name);
    if (
    $res == FALSE)
    die (
    "Errore nella selezione del DB.");

    // query per vedere se c'è già un commento uguale
    $query="SELECT * FROM dizgeagri WHERE Parola='$aParola'";

    $result = mysql_query($query);
    $numero = mysql_num_rows($result);


    if (
    $numero>0)
    {

    $atraduz=mysql_result($result,0,"Traduz");
    $anote=mysql_result($result,0,"note");
    $acateg=mysql_result($result,0,"categ");
    $aimg=mysql_result($result,0,"img");
    $aimg2=mysql_result($result,0,"img2");

    }

    else
    {
    header("location: diz_ines.html");

    }

    mysql_close();

    ?>

    <div style="font-family: book antiqua,times new roman; font-size:18px; color:#B00000">
    <B>
    <?php echo $aParola; ?> </B>
    <span style="font-family:book antiqua,times new roman; font-size:15px; color:#000000">
    <?php echo $acateg; ?></span>
    <span style="font-size:18px; color:#000040">=<B>
    <?php echo $atraduz; ?> </B></span></div>

    <font face='arial,sans-serif' size='2' color='#000000'>
    &nbsp;

    <?php
    if (stristr($anote, 'vedi'))
    {
    $link = "dizge_rich-dati5.php?Parola=".substr($anote,-strlen($anote)+5);

    ?>
    <b><a href="<?php echo $link; ?>"> <?php echo $anote; ?> </a></b>
    <?php

    }
    else
    {
    echo
    $anote."</font><br>";
    }


    ?>
    <br>
    <?php
    if (!is_null($aimg)) {
    echo
    '<img src="http://paolin.altervista.org/immdiz/' . $aimg . '" class="img-responsive" >';
    }
    if (!
    is_null($aimg2)) {
    echo
    '&nbsp; <img src="http://paolin.altervista.org/immdiz/' . $aimg2 . '" class="img-responsive">';
    }
    ?>
    Io volevo SOLO aggiornare il codice con mysqli... ma ci sto uscendo di testa! Ho mooolto da studiare sto php. Nella redazione del "mysql" m'aveva aiutato un amico.
    Grazie comunque per l'aiuto che puoi darmi.

  16. #16
    mzanella non è connesso AlterGuru
    Data registrazione
    29-12-2015
    Messaggi
    1,954

    Predefinito

    Chiaro, in pratica non hai più bisogno di mysql_result, quella è roba vecchia che in mysqli non serve più. Basta usare mysql_fetch_array per leggere la prima riga della tabella.

    Riordinando il codice viene così:
    Codice PHP:
    <?php
    // Reads word from GET or POST
    $aParola = null;
    if (isset(
    $_REQUEST['Parola']) && !empty($_REQUEST['Parola'])) {
    $aParola = $_POST['Parola'];
    }
    else {
    die(
    "Manca la parola");
    }

    // Connects to database
    $connection = mysqli_connect("localhost", "paolin", "my_xxxxxx", "my_xxxxxx");
    if (!
    $connection) {
    die(
    "Impossibile connettersi alla base di dati: " . mysqli_connect_error());
    }

    // Reads word from database
    $query = "SELECT * FROM dizgeagri WHERE Parola = '$aParola'";
    $result = mysqli_query($connection, $query);
    if (!
    $result) {
    die(
    "Errore nella query: " . mysqli_error($connection));
    }
    $row = mysqli_fetch_array($result);

    // Redirects if word is not in the database
    if (!$row) {
    header("location: diz_ines.html");
    exit;
    }

    // Otherwise the word is available
    $traduzione = $row['Traduz'];
    $note = $row['note'];
    $categoria = $row['categ'];
    $immagine = $row['img'];
    $immagine_2 = $row['img2'];

    $link = stristr($anote, 'vedi')
    ?
    'dizge_rich-dati5.php?Parola=' . substr($anote, -strlen($anote) + 5)
    :
    null;

    // Closes connection to database
    mysqli_free_result($result);
    mysqli_close($connection);
    ?>

    <div style="font-family: book antiqua,times new roman; font-size:18px; color:#B00000">
    <b><?php echo $aParola; ?> </b>
    <span style="font-family:book antiqua,times new roman; font-size:15px; color:#000000"><?php echo $categoria; ?></span>
    <span style="font-size:18px; color:#000040">=<b><?php echo $traduzione; ?></b></span>
    </div>

    <font face='arial,sans-serif' size='2' color='#000000'>
    <?php echo ($link ? "<b><a href=\"$link\">$note</a></b>" : $note); ?>
    </font><br>

    <?php
    if (!is_null($immagine)) {
    echo
    '<img src="http://paolin.altervista.org/immdiz/' . $immagine . '" class="img-responsive" >';
    }
    if (!
    is_null($immagine_2)) {
    echo
    '&nbsp; <img src="http://paolin.altervista.org/immdiz/' . $immagine_2 . '" class="img-responsive">';
    }
    ?>
    Occhio a eventuali errori di sintassi che possono essermi sfuggiti.
    Ultima modifica di mzanella : 02-03-2019 alle ore 21.05.44 Motivo: Correzione sintassi
    paolin likes this.

    I suggerimenti che do più spesso:


  17. #17
    paolin non è connesso Utente
    Data registrazione
    13-02-2014
    Messaggi
    127

    Predefinito

    Perfetto! GRAZIE!!! Da solo non ci sarei riuscito.
    C'era solo una parentesi di troppo in $link = stristr($anote, 'vedi'))

    Se non abuso della tua gentilezza, posso solo chiederti un'ultima cosetta al volo?
    Se nel form della pagina inserisco la parola "nocciolo" me la trova regolarmente e va bene,
    ma se cerco "nòcciolo" mi dà sempre come risultato la traduzione di "nocciolo", cioè non distingue la parola accentata. Come posso risolvere?

    Grazie ancora per tutto!

  18. #18
    mzanella non è connesso AlterGuru
    Data registrazione
    29-12-2015
    Messaggi
    1,954

    Predefinito

    Dipende dal charset impostato nel database, guardando questa risposta su StackOverflow: How to conduct an Accent Sensitive search in MySql sembra che la soluzione sia usare un charset che supporti la ricerca sensibile agli accenti, ad esempio utf8_bin. Questo si può impostare tramite PHPMyAdmin.

    I suggerimenti che do più spesso:


  19. #19
    paolin non è connesso Utente
    Data registrazione
    13-02-2014
    Messaggi
    127

    Predefinito

    Hai ragione. Nel DB avevo impostato utf8_general_ci in ogni campo, mi è bastato cambiare utf8_bin nella parola da cercare e ora funziona.
    Grazie anche per questo!
    Avrei tanto ancora da chiedere, ma non voglio abusare e forse è meglio che apra un'altra discussione immagino.
    Vedrò prima di studiarci un attimo se riesco da solo...
    Ciao!

  20. #20
    mzanella non è connesso AlterGuru
    Data registrazione
    29-12-2015
    Messaggi
    1,954

    Predefinito

    Non farti problemi a chiedere .
    Comunque sì, meglio aprire discussioni separate se gli argomenti sono diversi.

    I suggerimenti che do più spesso:


  21. #21
    paolin non è connesso Utente
    Data registrazione
    13-02-2014
    Messaggi
    127

    Predefinito

    Sempre cercando di trasformare da mysql a mysqli, ho preso spunto dal post #16 cercando di adattarlo; il documento originale funzionante mysql ecco il codice
    Codice PHP:
    <?php
    // visualizza 20 righe per volta

    $numero=(int) $_POST['numero'];

    //$numero=$_POST["numero"];
    $numvis=20;
    ?>

    <!doctype html public "-//w3c//dtd html 4.0 Transitional//EN">
    <HTML>
    <head>
    ...
    </head>
    <BODY>
    <div align="center">
    <table width="700" border="0" cellspacing="0" cellpadding="2" style="font-family:arial, helvetica, sans-serif;">
    <tr bgcolor="#55AA84" valign="top">
    <td width="25%"><b><font face="Arial, Helvetica, sans-serif" color="#FFFFFF" size="2">Parola it:</font></b></td>
    <td width="65%">
    <b><font face="Arial, Helvetica, sans-serif" color="#FFFFFF" size="2">Traduzione:</font></b></td>
    <td width="10%">
    <b><font face="Arial, Helvetica, sans-serif" color="#FFFFFF" size="2">Categ:</font></b></td>

    </tr>
    <?php

    // connessione al database

    $db_host = "localhost";
    $db_user = "xxxxxx";
    $db_name = "my_xxxxxx";

    $db = mysql_connect($db_host, $db_user);
    if (
    $db == FALSE)
    die (
    "Errore nella connessione.");

    $res = mysql_select_db($db_name);
    if (
    $res == FALSE)
    die (
    "Errore nella selezione del DB.");


    // Query per selezionare gli ultimi 20 messaggi in ordine cronologico
    $acat = "(bot.)";
    $query="SELECT * FROM dizgeagri WHERE categ='$acat' ORDER BY Parola ASC";
    $risultati=mysql_query($query);

    $ultimo=mysql_numrows($risultati);
    mysql_close();


    $i=$numero;
    while (
    $i <=($numvis+$numero)) {
    $Parola=mysql_result($risultati,$i,"Parola");
    $Traduz=mysql_result($risultati,$i,"Traduz");
    $note=mysql_result($risultati,$i,"note");
    $categ=mysql_result($risultati,$i,"categ");

    ?>
    <tr height='15' valign='top'>
    <td width='25%'><font face='arial, helvetica, sans-serif' size='2' color='#B00000'>
    <?php Echo $Parola; ?>
    </font></td>
    <td width='65%'>
    <font size='2' color='#000090'><B>
    <?php echo $Traduz; ?>
    </B><br>
    <?Php echo $note; ?>
    </font></td>
    <td width='10%'>
    <font face='arial' size='2' color='#000090'>
    <?php echo $categ; ?>

    </font></td>
    </tr>
    <tr>
    <td colspan='3'>
    <hr style="height:1px; border-width:0; color:gray; background-color:#3366FF; width:100%">
    </td>
    </tr>

    <?php
    $i
    ++;
    }
    ?>

    </table>
    <?php
    $numero2
    =$numero+$numvis;
    if (
    $numero2>=$ultimo) $numero2=$ultimo-$numvis;
    ?>
    <form action="dizge-bot.php" method="post">
    prossimi 20 mess<input type="hidden" name="numero" value=<?php echo $numero2; ?>>
    <input type="submit" value="Avanti" style="width:64px; height:20px;" class="button b-form"> <font size=4>>
    </form>
    </TD><TD width="50%">

    <?php $numero3=$ultimo-$numvis;
    ?>

    <form action="dizge-bot.php" method="post">
    primi 20 mess &nbsp; <input type="hidden" name="numero" value=<?php echo $numero3; ?>>
    &nbsp;<input type="submit" value="Ultimo" style="width:64px; height:20px;" class="button b-form"> <font size=4>>>
    </form>
    Ho provato a modificare così (posto solo le modifiche)
    Codice PHP:
    <?php

    // Connects to database
    $connection = mysqli_connect("localhost", "xxxxxx", "my_xxxxxx", "my_xxxxxx");
    if (!
    $connection) {
    die(
    "Impossibile connettersi alla base di dati: " . mysqli_connect_error());
    }

    // Reads word from database
    $acat = "(bot.)";
    $query = "SELECT * FROM dizgeagri WHERE categ='$acat' ORDER BY Parola ASC";
    $result = mysqli_query($connection, $query);
    if (
    mysqli_num_rows($result) > 0) {
    // output data of each row
    while($row = mysqli_fetch_assoc($result))
    {
    echo
    "Parola: " . $row["Parola"]. " - Traduz: " . $row["Traduz"]. " " . $row["note"]. "<br>";
    }


    $i=$numero;
    while (
    $i <=($numvis+$numero)) {

    // Altrimenti se la parola è disponibile
    $Parola = $row['Parola'];
    $Traduz = $row['Traduz'];
    $note = $row['note'];
    $categ = $row['categ'];


    // Closes connection to database
    $ultimo=mysqli_free_result($result);
    mysqli_close($connection);
    ?>

    <tr height='15' valign='top'>
    <td width='25%'><font face='arial, helvetica, sans-serif' size='2' color='#B00000'>
    <?php echo $Parola; ?>
    </font></td>
    <td width='65%'>
    <font size='2' color='#000090'><B>
    <?php echo $Traduz; ?>
    </B><br>
    <?Php echo $note; ?>
    </font></td>
    <td width='10%'>
    <font face='arial' size='2' color='#000090'>
    <?php echo $categ; ?>

    </font></td>
    </tr>
    <tr>
    <td colspan='3'>
    <hr style="height:1px; border-width:0; color:gray; background-color:#3366FF; width:100%">
    </td>
    </tr>

    <?php
    $i
    ++;
    }
    }
    ?>

    </table>
    Dopo averci studiato 2 ore, risultato è qui http://paolin.altervista.org/dizge-bot_sqli.php mi ripete la stessa riga 20 volte.
    Ho provato anche altre soluzioni dove però non mi visualizza nulla.
    Per favore, mi puoi aiutare?
    Grazie

  22. #22
    mzanella non è connesso AlterGuru
    Data registrazione
    29-12-2015
    Messaggi
    1,954

    Predefinito

    Se ho capito bene vuoi visualizzare solo un sottoinsieme dei risultati, dalla riga $numero fino alla riga $numero + $numvis. Questo si chiama paginazione.

    Il modo più semplice ed efficiente per ottenerlo è indicare, nella query, quali righe estrarre:
    Codice PHP:
    <?php
    $query
    = "SELECT * FROM dizgeagri WHERE categ='(bot.)' ORDER BY Parola ASC LIMIT $numvis OFFSET $numero";
    $result = mysqli_query($connection, $query);
    if (!
    $result) {
    die(
    "Errore nella query: " . mysqli_error($connection));
    }

    while (
    $row = mysqli_fetch_assoc($result)) {
    $parola = $row['Parola'];
    $traduzione = $row['Traduz'];
    $note = $row['note'];
    $categoria = $row['categ'];
    ?>
    <tr height='15' valign='top'>
    ... // le altre stampe
    </tr>
    <?php
    }
    mysqli_free_result($result);
    mysqli_close($connection);
    ?>
    Occhio a eventuali errori di sintassi .
    Ultima modifica di mzanella : 06-03-2019 alle ore 11.40.53

    I suggerimenti che do più spesso:


  23. #23
    paolin non è connesso Utente
    Data registrazione
    13-02-2014
    Messaggi
    127

    Predefinito

    Grazie!! funziona!
    Ora però come faccio a visualizzare i successivi 20 risultati nella pagina seguente?
    Mi spiego meglio: a fondo pagina ho 2 pulsanti che mi aprivano una nuova pagina coi successivi 20 risultati, ora non funzionano più. Ho letto, oltre al link che m'hai consigliato, diversi articoli sulla Paginazione html, css, mysql, ho letto anche questo bello ma un po' difficile per le mie conoscenze...

    Il mio problema è linkare i pulsanti, che rimandano alla nuova pagina coi successivi 20 risultati, col giusto codice php (html e css me la cavo abbastanza bene).

    Ho provato a reinserire prima di "while"
    Codice PHP:
    $ultimo=mysqli_num_rows($result);
    mysql_close();

    $i=$numero;
    (
    $i <=($numvis+$numero))
    ma viene un paciugo...

    I pulsanti a fondo pagina ora non funzionano più: come risolvo?
    Grazie ancora per la tua pazienza.
    Ultima modifica di paolin : 06-03-2019 alle ore 22.29.35

  24. #24
    mzanella non è connesso AlterGuru
    Data registrazione
    29-12-2015
    Messaggi
    1,954

    Predefinito

    Per il pulsante che ti porta all'ultima pagina serve conoscere il numero totale di risultati, si può ottenere con una seconda interrogazione:
    Codice PHP:
    <?php
    $query
    = "SELECT COUNT(*) as n_rows FROM dizgeagri WHERE categ='(bot.)'";
    $result = mysqli_query($connection, $query) or die("Errore nella query: " . mysqli_error($connection);
    $row = mysqli_fetch_assoc($result)

    $n_rows = $row['n_rows'];
    $offset_next = $numero + $numerovis < n_rows ? $numero + $numerovis : $numero;
    $offset_last = floor(($n_rows - 1) / $numerovis) * $numerovis;
    mysqli_free_result($result);
    mysqli_close($connection);
    ?>
    <form action="dizge-bot.php" method="post">
    prossimi 20 mess
    <input type="hidden" name="numero" value=<?php echo $offset_next; ?>>
    <input type="submit" value="Avanti" style="width:64px; height:20px;" class="button b-form">
    <font size=4>></font>
    </form>
    </td>
    <td width="50%">
    <form action="dizge-bot.php" method="post">
    primi 20 mess
    <input type="hidden" name="numero" value=<?php echo $offset_last; ?>
    >
    <input type="submit" value="Ultimo" style="width:64px; height:20px;" class="button b-form">
    <font size=4>>></fotn>
    </form>
    Come sempre occhio a eventuali errori di battitura e ricorda che, per poter eseguire la seconda query, dovrai togliere il mysqli_close inserito precedentemente.

    I suggerimenti che do più spesso:


  25. #25
    paolin non è connesso Utente
    Data registrazione
    13-02-2014
    Messaggi
    127

    Predefinito

    Grazie per la risposta.
    Ho fatto come m'hai detto, ho inserito il codice qui
    Codice PHP:
    <?php
    // Connects to database
    $connection = mysqli_connect("localhost"....

    // Reads word from database
    $query = "SELECT * FROM dizgeagri WHERE categ='(bot.)' ORDER BY Parola ASC LIMIT $numvis OFFSET $numero";
    $result = mysqli_query($connection, $query);
    if (!
    $result) {
    die(
    "Errore nella query: " . mysqli_error($connection));
    }

    while (
    $row = mysqli_fetch_assoc($result)) {
    $parola = $row['Parola']; ...
    ?>

    <tr height='15' valign='top'>
    ... <?php echo $parola; ?> ...

    </tr>

    <?php
    }

    ?>

    </table>

    ...

    <?php
    // 2° interrogazione x pulsante all ultima pagina
    $query = "SELECT COUNT(*) as n_rows FROM dizgeagri WHERE categ='(bot.)'";
    $result = mysqli_query($connection, $query)
    or die(
    "Errore nella query: " . mysqli_error($connection));
    $row = mysqli_fetch_assoc($result)

    $n_rows = $row['n_rows'];
    $offset_next = $numero + $numerovis < n_rows ? $numero + $numerovis : $numero;
    $offset_last = floor(($n_rows - 1) / $numerovis) * $numerovis;
    mysqli_free_result($result);
    mysqli_close($connection);
    ?>
    <TABLE>...
    <form action="dizge-bot_sqli.php" method="post">
    prossimi 20 mess<input type="hidden" name="numero" value=<?php echo $offset_next; ?>>
    <input type="submit" value="Avanti" style="width:64px; height:20px;" class="button b-form">
    <font size=4>></font>
    </form>
    </TD>
    <TD width="50%">
    <form action="dizge-bot_sqli.php" method="post">
    primi 20 mess &nbsp; <input type="hidden" name="numero" value=<?php echo $offset_last; ?>>
    &nbsp;<input type="submit" value="Ultimo" style="width:64px; height:20px;" class="button b-form">
    <font size=4>>></font>
    </form>
    Mancava una parentesi ) qui or die("Errore nella query: " . mysqli_error($connection));
    Ora mi dà errore Parse error: syntax error, unexpected T_VARIABLE on line 133
    che corrisponde a
    Codice PHP:
    $n_rows = $row['n_rows'];
    ho provato diversi cambiamenti, ho cercato sul web ma, forse complice la mia ignoranza, non son riuscito a risolvere

  26. #26
    mzanella non è connesso AlterGuru
    Data registrazione
    29-12-2015
    Messaggi
    1,954

    Predefinito

    Manca un punto e virgola qui:
    Codice PHP:
    $row = mysqli_fetch_assoc($result)
    deve diventare
    Codice PHP:
    $row = mysqli_fetch_assoc($result);
    ho provato diversi cambiamenti, ho cercato sul web ma, forse complice la mia ignoranza, non son riuscito a risolvere
    È comprensibile, molte guide sulla paginazione danno per scontate diverse cose e non le spiegano.
    paolin likes this.

    I suggerimenti che do più spesso:


  27. #27
    paolin non è connesso Utente
    Data registrazione
    13-02-2014
    Messaggi
    127

    Predefinito

    Grazie!
    Ora non da più nessun errore, ma i pulsanti aprono un'altra pagina con gli stessi risultati
    Cosa avrò sbagliato ancora?
    http://paolin.altervista.org/dizge-b...i%202inter.php

  28. #28
    mzanella non è connesso AlterGuru
    Data registrazione
    29-12-2015
    Messaggi
    1,954

    Predefinito

    Hai ancora
    Codice PHP:
    $numero = (int) $_POST['numero'];
    $numvis = 20;
    nel codice? Nel mio non li ho messi dando per scontato che andassero mantenuti.

    I suggerimenti che do più spesso:


  29. #29
    paolin non è connesso Utente
    Data registrazione
    13-02-2014
    Messaggi
    127

    Predefinito

    Si, a inizio pagina prima del <!doctype>.

    Ho lasciato anche prima del primo pulsante
    Codice PHP:
    <?php
    $numero2
    =$numero+$numvis;
    if (
    $numero2>=$ultimo) $numero2=$ultimo-$numvis;

    ?>
    e prima del secondo
    Codice PHP:
    <?php $numero3=$ultimo-$numvis;

    ?>
    ma anche togliendoli non cambia nulla.

  30. #30
    mzanella non è connesso AlterGuru
    Data registrazione
    29-12-2015
    Messaggi
    1,954

    Predefinito

    Ok, credo di aver capito: nel mio codice ho scritto, in alcuni punti, $numerovis anziché $numvis. Trovandosi un nuovo nome di variabile PHP le ha assegnato valore 0, i calcoli sono risultati sbagliati di conseguenza. Sistemiamo subito:
    Codice PHP:
    $offset_next = $numero + $numvis < n_rows ? $numero + $numvis : $numero;
    $offset_last = floor(($n_rows - 1) / $numvis) * $numvis;

    I suggerimenti che do più spesso:


Pagina 1 di 2 12 UltimoUltimo

Regole di scrittura

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