Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 15

Discussione: Problema con tabella

  1. #1

    Problema con tabella

    Salve a tutti,

    Ho un problema che non riesco a risolvere. In questa pagina LINK potete vedere una pagina con dei dati che vengono presi da un database mysql.
    Il problema è che la tabella che compare ina alto, dovrebbe invece visualizzarsi nel riquadro con sfondo verde.

    Questo il codice:

    codice:
    <?php
    session_start();
    include("../functions.php");
    startdb();
    
    
    
    
    
    
    $page="
    <!DOCTYPE html>
    <head>
        <title></title>
    </head>
    <body>
    
    
    ";
    
    
    if($id_categoria){
      $query="SELECT id,nome,serie,modello,descrizione,pictureName,qualità,commento FROM articoli WHERE id_categoria=$_GET[id_categoria] ORDER BY nome";
    }
    if($id_sottocategoria){
        $query="SELECT id,nome,serie,modello,descrizione,pictureName,qualità,commento FROM articoli WHERE id_sottocategoria=$_GET[id_sottocategoria] ORDER BY nome";
    }
    
    
    $result=mysql_query($query);print mysql_error();
    while(list($id_articolo,$nome,$serie,$modello,$descrizione,$pictureName,$qualità,$commento)=mysql_fetch_row($result)){
      
    $page.="
    <table border='0' width='722' id='table1' style='border-collapse: collapse'>
        <tr>
            <td height='21' width='720' bgcolor='#808080' > <p>QUI CI VA IL TITOLO</p></td>
        </tr>
    
    
        <tr>
            <td height='188' width='718' bgcolor='#e1e1e1' style='border-style: solid; border-width: 1px' bordercolor='#000000' align='center'>QUI LA FOTO</td>
        </tr>
    
    
        <tr>
            <td style='width:720px;height:100px;border:1px solid red;background-color:green;text-align:center'><p>QUI DOVREBBERO VISUALIZZARSI LE TABELLE CON LE MISURE, che invece sono in alto</p>
    
    
    
    
    
    
    
    
    
    
    <!-- QUESTA PARTE QUI SOTTO INVECE DI STARE DENTRO LA TABELLA CON BORDO ROSSO, SI VISUALIZZA IN ALTO DELLA PAGINA -->
    ";
    $countRighe=0;
    echo tr($id_articolo,'misura','MISURA');
    echo tr($id_articolo,'setole','SETOLE');
    echo tr($id_articolo,'dimensioni','DIMENSIONI');
    echo tr($id_articolo,'miscela','MISCELA');
    echo tr($id_articolo,'mix','MIX');
    echo tr($id_articolo,'fibre','FIBRE');
    echo tr($id_articolo,'rasate','RASATE');
    echo tr($id_articolo,'sporgenza','SPORGENZA');
    echo tr($id_articolo,'diametro','DIAMETRO');
    echo tr($id_articolo,'tubo','TUBO');
    
    
    
    
    
    
    $page.="
        
    
    
            </td>
        </tr>
    </table> 
    
    
    
    
    <br><br><br>
    
    
    
    
    </body>
    </html>
    
    
    ";
    
    
    }
    
    
    
    
    
    
    function tr($id_articolo,$campoDb,$titolo){
      //print $campoDb;
      global $countRighe;
      if($campoDb=="misura")$campoDb="misura1,misura2";
      $query1="SELECT $campoDb FROM versioni WHERE id_pennello=$id_articolo ORDER BY misura1";
      $result1=mysql_query($query1);print mysql_error();
      $count=0;
      while(list($x,$y)=mysql_fetch_row($result1)){
        $count++;
        if(mysql_num_rows($result1)>0 && $count==1 && $x){
        $countRighe++;
        if($countRighe%2==0){ $bgcolor="#eaeaea"; }
        else{$bgcolor="#c0c0c0";}
        $page.="    <table><tr>
                           <td width='89' bgcolor='$bgcolor'>
                  <b><font face='Arial' size='1'>$titolo</font></b></td>
          ";
        }
        if(mysql_num_rows($result1)>0  && $x){
          if($y)$x=$x."x".$y;
          $page.="<td align='center' bgcolor='$bgcolor' width='53'><b><font face='Arial' size='1'>$x</font></b></td>";
        }
      }
      if(mysql_num_rows($result1)>0  && $x){
        $page.="</tr></table>";
      }
      return $page;
    }
    
    print $page;
    
    ?>

    Potete aiutarmi per risolvere il problema e far visualizzare la tabella nel posto giusto?

    Grazie
    Chi più sa, meno sa.

  2. #2
    Moderatore di PHP L'avatar di Alhazred
    Registrato dal
    Oct 2003
    Messaggi
    12,505
    Secondo me deiv rivedere un po' tutto il codice, prova a fare click sulla pagina col tasto destro e poi "Visualizza sorgente pagina", guarda che casino che crei.

    Ad ogni iterazione del ciclo while crei una nuova tabella, ma peggio, ad ogni iterazione chiudi i tag </body> e </html>

  3. #3
    Perchè la variabile $page contiene la tabella e la stampi in fondo. Mentre le misure le stampi prima con la echo...

  4. #4
    Quote Originariamente inviata da Alhazred Visualizza il messaggio
    Secondo me deiv rivedere un po' tutto il codice, prova a fare click sulla pagina col tasto destro e poi "Visualizza sorgente pagina", guarda che casino che crei.

    Ad ogni iterazione del ciclo while crei una nuova tabella, ma peggio, ad ogni iterazione chiudi i tag </body> e </html>
    E' vero ho corretto... ecco il codice:

    codice:
    <?phpsession_start();
    include("../functions.php");
    startdb();
    
    
    
    
    
    
    $page="
    <!DOCTYPE html>
    <head>
    	<title></title>
    </head>
    <body>
    
    
    ";
    
    
    if($id_categoria){
      $query="SELECT id,nome,serie,modello,descrizione,pictureName,qualità,commento FROM articoli WHERE id_categoria=$_GET[id_categoria] ORDER BY nome";
    }
    if($id_sottocategoria){
        $query="SELECT id,nome,serie,modello,descrizione,pictureName,qualità,commento FROM articoli WHERE id_sottocategoria=$_GET[id_sottocategoria] ORDER BY nome";
    }
    
    
    $result=mysql_query($query);print mysql_error();
    while(list($id_articolo,$nome,$serie,$modello,$descrizione,$pictureName,$qualità,$commento)=mysql_fetch_row($result)){
      
    $page.="
    <table border='0' width='722' id='table1' style='border-collapse: collapse'>
    	<tr>
    		<td height='21' width='720' bgcolor='#808080' > <p>QUI CI VA IL TITOLO</p></td>
    	</tr>
    
    
    	<tr>
    		<td height='188' width='718' bgcolor='#e1e1e1' style='border-style: solid; border-width: 1px' bordercolor='#000000' align='center'>QUI LA FOTO</td>
    	</tr>
    
    
    	<tr>
    		<td style='width:720px;height:100px;border:1px solid red;background-color:green;text-align:center'><p>QUI DOVREBBERO VISUALIZZARSI LE TABELLE CON LE MISURE, che invece sono in alto</p>
    
    
    	<table>
    
    
    
    
    
    
    <!-- QUESTA PARTE QUI SOTTO INVECE DI STARE DENTRO LA TABELLA CON BORDO ROSSO, SI VISUALIZZA IN ALTO DELLA PAGINA -->
    ";
    $countRighe=0;
    echo tr($id_articolo,'misura','MISURA');
    echo tr($id_articolo,'setole','SETOLE');
    echo tr($id_articolo,'dimensioni','DIMENSIONI');
    echo tr($id_articolo,'miscela','MISCELA');
    echo tr($id_articolo,'mix','MIX');
    echo tr($id_articolo,'fibre','FIBRE');
    echo tr($id_articolo,'rasate','RASATE');
    echo tr($id_articolo,'sporgenza','SPORGENZA');
    echo tr($id_articolo,'diametro','DIAMETRO');
    echo tr($id_articolo,'tubo','TUBO');
    
    
    
    
    
    
    $page.="
    	
    </table>
    		</td>
    	</tr>
    </table> 
    
    
    
    
    <br><br><br>
    
    
    
    
    
    
    ";
    
    
    }
    
    
    
    
    
    
    function tr($id_articolo,$campoDb,$titolo){
      //print $campoDb;
      global $countRighe;
      if($campoDb=="misura")$campoDb="misura1,misura2";
      $query1="SELECT $campoDb FROM versioni WHERE id_pennello=$id_articolo ORDER BY misura1";
      $result1=mysql_query($query1);print mysql_error();
      $count=0;
      while(list($x,$y)=mysql_fetch_row($result1)){
        $count++;
        if(mysql_num_rows($result1)>0 && $count==1 && $x){
        $countRighe++;
        if($countRighe%2==0){ $bgcolor="#eaeaea"; }
        else{$bgcolor="#c0c0c0";}
        $body.="<tr>
      					 <td width='89' bgcolor='$bgcolor'>
                  <b><font face='Arial' size='1'>$titolo</font></b></td>
          ";
        }
        if(mysql_num_rows($result1)>0  && $x){
          if($y)$x=$x."x".$y;
          $body.="<td align='center' bgcolor='$bgcolor' width='53'><b><font face='Arial' size='1'>$x</font></b></td>";
        }
      }
      if(mysql_num_rows($result1)>0  && $x){
        $body.="</tr>";
      }
      return $body;
    }
    
    
    
    
    $page.="
    </body>
    </html>
    ";
    
    
    print $page;
    
    
    ?>



    Quote Originariamente inviata da camionistaxcaso Visualizza il messaggio
    Perchè la variabile $page contiene la tabella e la stampi in fondo. Mentre le misure le stampi prima con la echo...
    Questo l'avevo capito, ma non capisco il perchè. Perchè l'echo non viene stampato il quel punto, ma in alto?
    Chi più sa, meno sa.

  5. #5
    Moderatore di PHP L'avatar di Alhazred
    Registrato dal
    Oct 2003
    Messaggi
    12,505
    Sì, ma anche l'apertuta e la chiusura del tag <table> va fuori dal ciclo while, altrimenti crei n tabelle da 1 riga.

  6. #6
    Utente di HTML.it L'avatar di badaze
    Registrato dal
    Jun 2002
    residenza
    Lyon
    Messaggi
    5,372
    @Ricky33.
    Se tu spostassi il codice della funzione all'inizio dello script quello diventerebbe più leggibile.
    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

  7. #7
    ho cambiato alcune cose nell'html, usando i div, ma il risultato non cambia (ovviamente) LINK

    codice:
    <?phpsession_start();
    include("../functions.php");
    startdb();
    
    
    function tr($id_articolo,$campoDb,$titolo){
      //print $campoDb;
      global $countRighe;
      if($campoDb=="misura")$campoDb="misura1,misura2";
      $query1="SELECT $campoDb FROM versioni WHERE id_pennello=$id_articolo ORDER BY misura1";
      $result1=mysql_query($query1);print mysql_error();
      $count=0;
      while(list($x,$y)=mysql_fetch_row($result1)){
        $count++;
        if(mysql_num_rows($result1)>0 && $count==1 && $x){
        $countRighe++;
        if($countRighe%2==0){ $bgcolor="#eaeaea"; }
        else{$bgcolor="#c0c0c0";}
        $body.="<div class='4' style=''><div class='5' style='width:89px;'>$titolo</div>
          ";
        }
        if(mysql_num_rows($result1)>0  && $x){
          if($y)$x=$x."x".$y;
          $body.="<div class='6' style='width:100px;float:left'>$x</div>";
        }
      }
      if(mysql_num_rows($result1)>0  && $x){
        $body.="</div><div style='clear:both'></div>";
      }
      return $body;
    }
    
    
    
    
    $page1="
    <!DOCTYPE html>
    <head>
        <title></title>
    </head>
    <body>
    <div style='width:800px;border:0px solid #000;padding:30px'>
    
    
    ";
    print $page1;
    
    
    if($id_categoria){
      $query="SELECT id,nome,serie,modello,descrizione,pictureName,qualità,commento FROM articoli WHERE id_categoria=$_GET[id_categoria] ORDER BY nome";
    }
    if($id_sottocategoria){
        $query="SELECT id,nome,serie,modello,descrizione,pictureName,qualità,commento FROM articoli WHERE id_sottocategoria=$_GET[id_sottocategoria] ORDER BY nome";
    }
    
    
    $result=mysql_query($query);print mysql_error();
    while(list($id_articolo,$nome,$serie,$modello,$descrizione,$pictureName,$qualità,$commento)=mysql_fetch_row($result)){
      
    $page.="
    
    
        <div class='1' style='width:800px;border:1px solid red;margin:5px'>$nome
        </div>
        
        <div class='2' style='width:800px;height:200px;border:1px solid green;margin:5px'>QUI LA FOTO
        </div>
    
    
        <div class='3' style='width:800px;height:100px;border:1px solid grey;margin:5px'>QUI DOVREBBERO VISUALIZZARSI LE TABELLE CON LE MISURE
    
    
    
    
    
    
    
    
    <!-- QUESTA PARTE QUI SOTTO INVECE DI STARE DENTRO LA TABELLA CON BORDO ROSSO, SI VISUALIZZA IN ALTO DELLA PAGINA -->
    ";
    
    
    
    
    $countRighe=0;
    echo tr($id_articolo,'misura','MISURA');
    echo tr($id_articolo,'setole','SETOLE');
    echo tr($id_articolo,'dimensioni','DIMENSIONI');
    echo tr($id_articolo,'miscela','MISCELA');
    echo tr($id_articolo,'mix','MIX');
    echo tr($id_articolo,'fibre','FIBRE');
    echo tr($id_articolo,'rasate','RASATE');
    echo tr($id_articolo,'sporgenza','SPORGENZA');
    echo tr($id_articolo,'diametro','DIAMETRO');
    echo tr($id_articolo,'tubo','TUBO');
    
    
    
    
    }
    
    
    $page.="
        
    
    
    </div>
    
    
    </body>
    </html>
    ";
    
    
    
    
    print $page;
    ?>
    Ma perchè viene stampato subito l'echo prima della pagina?
    Ultima modifica di Ricky33; 21-11-2014 a 02:38
    Chi più sa, meno sa.

  8. #8
    Quote Originariamente inviata da badaze Visualizza il messaggio
    @Ricky33.
    Se tu spostassi il codice della funzione all'inizio dello script quello diventerebbe più leggibile.
    Tra l' altro le funzioni non devono essere scritte prima di essere richiamate?

  9. #9

    Ma perchè viene stampato subito l'echo prima della pagina?
    Io vorrei vedere questo risultato: LINK
    Perchè non lo vedi che tu IN FONDO stampi la variabile $page? E' ovvio che l' echo viene stampata prima no?

  10. #10
    Quote Originariamente inviata da camionistaxcaso Visualizza il messaggio
    Perchè non lo vedi che tu IN FONDO stampi la variabile $page? E' ovvio che l' echo viene stampata prima no?
    adesso ho capito... e c'è modo di far entrare l'echo nel flusso della pagina? (non so se mi sono spiegato)
    Ultima modifica di Ricky33; 21-11-2014 a 02:13
    Chi più sa, meno sa.

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 © 2025 vBulletin Solutions, Inc. All rights reserved.