Visualizzazione dei risultati da 1 a 8 su 8
  1. #1

    Intabellare i risultati di una query

    Ciao a tutti, ho un problema, ho bisogno di estrarre dal db i nomi dei file .jpg relativi all'anno 2004 e di inserirli in una tabella.
    Con i vecchi comandi mysql funzionava perfettamente ma adesso, che sto cercando di trasformare il codice con mysqli non riesco a farlo funzionare.
    Mi visualizza 15 volte la stessa immagine, l'ultima della lista.
    Mi potete aiutare per favore ?

    Codice PHP:
    <?PHP
    include ("link_orizzontali.php");
    echo 
    "<br><br><br>";

    echo 
    "<Table Width=\"90%\" align=\"center\">";

    $mysqli = new mysqli("$dbhost""$dbuser""");
    $mysqli->select_db("verna");


    $result mysqli_query ($mysqli,'SELECT * FROM fotografie ORDER BY id'); 
    $num mysqli_num_rows ($result);
    echo 
    "\n\n\n<Tr>";
    for (
    $i=0$i<$num$i++){
    while(
    $row mysqli_fetch_assoc($result)) {   
    $file $row['nome_file'];  }        

            list(
    $width$height) = getimagesize("fotografie/miniature/$file");
            if ((
    $width) <= ($height))        {        
    $visualizza "<Img Src=\"fotografie/miniature/$file\" Height=\"80\" Border=\"0\">";        }        
    if ((
    $height) <= ($width))        {        
    $visualizza "<Img Src=\"fotografie/miniature/$file\" Width=\"110\" Border=\"0\">";        }                        
    echo 
    "<Td>";                
    echo 
    "<Table align=\"center\" Cellpadding=\"0\" Cellspacing=\"0\" style=\"border:3px solid black;\">";        
    echo 
    "<Tr>";        
    echo 
    "<Td>";        
    echo 
    "<a>$visualizza</a>";        
    echo 
    "</Td>";        
    echo 
    "</Tr>";        
    echo 
    "</Table>";                
    if((
    $i+1)%3==0) echo "</Tr>\n\n<Tr>"
            else echo 
    "</Td>";                            }
    echo 
    "<Td></Td></Tr></Table>";
    mysqli_close($mysqli);        

    ?>

  2. #2
    Utente di HTML.it L'avatar di badaze
    Registrato dal
    Jun 2002
    residenza
    Lyon
    Messaggi
    5,361
    Secondo me non funzionava neanche prima.
    Fai un cliclo for seguito da un while che percorre i dati della query. Quel while riempie la variabile $file. E alla fin fine contiene sempre l'ultimo record ricavato dalla query. Il ciclo for è inutile in quanto lo fech_assoc torna false quando si supera l'ultimo record.
    Ridatemi i miei 1000 posts persi !!!!
    Non serve a nulla ottimizzare qualcosa che non funziona.
    Cerco il manuale dell'Olivetti LOGOS 80B - www.emmella.fr

  3. #3
    Quote Originariamente inviata da badaze Visualizza il messaggio
    Secondo me non funzionava neanche prima.
    Fai un cliclo for seguito da un while che percorre i dati della query. Quel while riempie la variabile $file. E alla fin fine contiene sempre l'ultimo record ricavato dalla query. Il ciclo for è inutile in quanto lo fech_assoc torna false quando si supera l'ultimo record.
    Grazie per la dritta, ho modificato così il codice, adesso mostra tutte le foto ma si crea un nuovo problema, le dispone tutte affiancate su di un unica riga, prima ne metteva tre per riga e poi andava a capo (una tabella di 9 caselle 3x3).
    Non so come risolvere, per favore aiutatemi.
    Grazie.

    Codice PHP:
    <?PHP
    include ("link_orizzontali.php");
    echo 
    "<br><br><br>";

    echo 
    "<Table Width=\"70%\" align=\"center\">";

    $mysqli = new mysqli("$dbhost""$dbuser""");
    $mysqli->select_db("verna");


    $result mysqli_query ($mysqli,'SELECT * FROM fotografie ORDER BY id'); 
    $num mysqli_num_rows ($result);
    echo 
    "\n\n\n<Tr>";


    while(
    $row mysqli_fetch_assoc($result)) {   
    $file $row['nome_file'];          

            list(
    $width$height) = getimagesize("fotografie/miniature/$file");
            if ((
    $width) <= ($height))        {        
    $visualizza "<Img Src=\"fotografie/miniature/$file\" Height=\"80\" Border=\"0\">";        }        
    if ((
    $height) <= ($width))        {        
    $visualizza "<Img Src=\"fotografie/miniature/$file\" Width=\"110\" Border=\"0\">";        }                        
    echo 
    "<Td>";                
    echo 
    "<Table align=\"center\" Cellpadding=\"0\" Cellspacing=\"0\" style=\"border:3px solid black;\">";        
    echo 
    "<Tr>";        
    echo 
    "<Td>";        
    echo 
    "<a>$visualizza</a>";        
    echo 
    "</Td>";        
    echo 
    "</Tr>";        
    echo 
    "</Table>";                                            
    }
    echo 
    "<Td></Td></Tr></Table>";
    mysqli_close($mysqli);        

    ?>

  4. #4
    Nessun consiglio ?

  5. #5
    Utente di HTML.it L'avatar di boots
    Registrato dal
    Oct 2012
    Messaggi
    1,626
    Per crearti la tabella devi giocare un po' con i numeri. Ti faccio un esempio semplice che puoi applicare al tuo codice:

    Codice PHP:
    $data  = array(1,2,3,4);
    echo 
    "<table>".PHP_EOL;
    $i 0;
    foreach(
    $data as $d){
       
       if(
    $i == 0){
          
    // il primo elemento della riga, aggiungiamo un tr
          
    echo "<tr>".PHP_EOL;
       }
       echo 
    "    <td>$d</td>".PHP_EOL;
      
       if(
    $i == 2){
         
    // ultimo elemento della riga, chiudiamo il tr
          
    echo "</tr>".PHP_EOL;
       }
       
    $i++;      
    }
    if(
    $i != 0){
        
        while(
    $i != 0){
           echo 
    "   <td></td>".PHP_EOL;
           
    $i++;
       }
      
    // Puoi sostituire il while con questo se ti piace di più:  
      // echo '<td colspan="'.(3-($i % 3)).'"></td>';
       
    echo "</tr>";
    }echo 
    "</table>"
    Al posto del 3 puoi mettere il numero di elementi che vuoi per riga
    Ultima modifica di boots; 03-04-2017 a 12:37

  6. #6
    Quote Originariamente inviata da boots Visualizza il messaggio
    Per crearti la tabella devi giocare un po' con i numeri. Ti faccio un esempio semplice che puoi applicare al tuo codice:

    Codice PHP:
    $data  = array(1,2,3,4);
    echo 
    "<table>".PHP_EOL;
    $i 0;
    foreach(
    $data as $d){
       
       if(
    $i == 0){
          
    // il primo elemento della riga, aggiungiamo un tr
          
    echo "<tr>".PHP_EOL;
       }
       echo 
    "    <td>$d</td>".PHP_EOL;
      
       if(
    $i == 2){
         
    // ultimo elemento della riga, chiudiamo il tr
          
    echo "</tr>".PHP_EOL;
       }
       
    $i++;      
    }
    if(
    $i != 0){
        
        while(
    $i != 0){
           echo 
    "   <td></td>".PHP_EOL;
           
    $i++;
       }
      
    // Puoi sostituire il while con questo se ti piace di più:  
      // echo '<td colspan="'.(3-($i % 3)).'"></td>';
       
    echo "</tr>";
    }echo 
    "</table>"
    Al posto del 3 puoi mettere il numero di elementi che vuoi per riga
    Sarebbe perfetto se io spessi come passare al tuo codice i risultati della select ma,purtroppo non lo so fare.
    Con l'estensione mysql sapevo come far intabellare i risultati con un ciclo di for e mysql_result ma con l'estensione mysqli vado nel pallone. Se fosse possibile inserire un contatore nel codice che avevo postato in modo che ogni 3 incrementi venga inserito un </tr><tr>...... boh.
    Comunque grazie per il tuo codice, l'ho testato e funziona, se solo sapessi sostituire 1234 con i risulati della select......
    Ciao e grazie ancora.

  7. #7
    In pratica, prima utilizzavo questo codice:

    Codice PHP:
    if($numero_foto 0) {
    echo 
    "<Table Width=\"90%\" align=\"center\">";

    $res mysql_query ("select * FROM immagini WHERE categoria = 'feste_riso' AND  stato = 'on' ORDER BY id_immagini LIMIT $limite OFFSET $offset");

    $num mysql_num_rows ($res);  



    echo 
    "\n\n\n<Tr>";
    for (
    $i=0$i<$num$i++)    {        
    $nome_file mysql_result ($res$i'nome_file');        
    $visualizzato mysql_result ($res$i'numero_visite');        
    $scaricato mysql_result ($res$i'numero_download');        
    $categoria mysql_result ($res$i'categoria');        
    $alt mysql_result ($res$i'didascalia');                
    list(
    $width$height) = getimagesize("immagini/miniature/$nome_file");
    if ((
    $width) < ($height))        {        
    $visualizza "<Img Src=\"immagini/miniature/$nome_file\" Height=\"250\" border=\"0\" alt=\"$alt\" title=\"$alt\">";        }        
    if ((
    $height) < ($width))        {        $visualizza "<Img Src=\"immagini/miniature/$nome_file\" Width=\"250\" border=\"0\" alt=\"$alt\" title=\"$alt\">";        }                
    echo 
    "<Td>";                
    echo 
    "<Table align=\"center\" Cellpadding=\"4\" Cellspacing=\"1\">";        
    echo 
    "<Tr>";        
    echo 
    "<Td>";        
    echo 
    "<a href=\"foto.php?nome_file=$nome_file&amp;categoria=$categoria\" class=\"border\" target=\"_blanc\">$visualizza</a>";        
    echo 
    "</Td>";        
    echo 
    "</Tr>";        
    echo 
    "<Tr>";        
    echo 
    "<Td Valign=Top class=\"style_denominazione\">";        
    if (
    $visualizzato == 1) {        
    echo 
    "<b>$visualizzato</b>&nbsp;visualizzazione&nbsp;e&nbsp;<b>$scaricato</b>&nbsp;download"; }        
    if (
    $visualizzato != 1) {        
    echo 
    "<b>$visualizzato</b>&nbsp;visualizzazioni&nbsp;e&nbsp;<b>$scaricato</b>&nbsp;download"; }        
    echo 
    "</Td>";        
    echo 
    "</Tr>";        
    echo 
    "</Table>";                
    if((
    $i+1)%3==0) echo "</Tr>\n\n<Tr>"
        else echo 
    "</Td>";                            }
    echo 
    "<Td></Td></Tr>";



    echo 
    "</Table>";

    Adesso vorrei trasformarlo per funzionare con i comandi mysqli.

  8. #8
    Forse ho trovato una soluzione, ho inserito queste righe di codice ed ora inizia un nuovo <tr> ogni 4 foto.
    Codice PHP:
    $i=1;


    if (
    $i==1) {
       echo 
    "</tr><tr>";


    if(
    $i ==4) { echo "</tr>";   $i=1;   }
       else {   
    $i++;   } 

    Grazie per l'aiuto, a presto.

  9. #9
    Ho risolto alla perfezione (intendo nel funzionamento, non certo nel codice di programmazione) con il seguente codice.
    Se qualcuno volesse darmi un parere mi farebbe piacere.
    Grazie.

    Codice PHP:
    echo "<Table Width=\"90%\" align=\"center\">";

    $mysqli = new mysqli("$dbhost""$dbuser""$dbpass");
    $mysqli->select_db("$dbname");

    $result mysqli_query ($mysqli,"SELECT * FROM fotografie_rally GROUP BY anno ORDER BY orientamento ASC,anno DESC LIMIT $limite OFFSET $offset"); 
    $num mysqli_num_rows ($result);

    $end=1;
    $i=1;
    while(
    $row mysqli_fetch_assoc($result)) {   
    $file $row['nome_file'];   
    $anno $row['anno'];    
    $title $row['anno'];   
    $subtitle "ANNO $anno";   
    if (
    $anno == 2004) {   
    $title "PRIMA DEL 2005";   
    $subtitle "PRIMA DEL 2005";    }        

    list(
    $width$height) = getimagesize("fotografie_rally/miniature/$file");
    if ((
    $width) <= ($height))        {        
    $visualizza "<Img Src=\"fotografie_rally/miniature/$file\" Height=\"110\" Border=\"1\" alt=\"$title\" title=\"$title\">";        }        
    if ((
    $height) <= ($width))        {        
    $visualizza "<Img Src=\"fotografie_rally/miniature/$file\" Width=\"110\" Border=\"1\" alt=\"$title\" title=\"$title\">";        }                
    if (
    $i==1) {   
    echo 
    "<tr>";   }                
    echo 
    "<Td>";                
    echo 
    "<Table align=\"center\" Cellpadding=\"0\" Cellspacing=\"3\">";        
    echo 
    "<Tr>";        
    echo 
    "<Td>";        
    echo 
    "<center><a href=\"dettaglio_foto_rally.php?anno=$anno\" class=\"border\">"
    echo 
    "$visualizza</a></center>";        
    echo 
    "</Td>";        
    echo 
    "</Tr>";        
    echo 
    "<Tr>";        
    echo 
    "<Td Valign=Top class=\"style_denominazione\">";        
    echo 
    "<center><a href=\"dettaglio_foto_rally.php?anno=$anno\" class=\"border\">"; echo "<b>$subtitle</b></a></center>";        
    echo 
    "</Td>";        
    echo 
    "</Tr>";        
    echo 
    "</Table>";        
    echo 
    "</Td>";               
    if (
    $end == $num) break;
    else {        
    if(
    $i==4) { echo "</tr>";   $i=1$end++;  }   
    else {   
    $i++; $end++;  }}   
    }          
    echo 
    "</Tr>";             



    echo 
    "</Table>"

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.