Visualizzazione dei risultati da 1 a 10 su 10

Discussione: While loop e fking ie

  1. #1
    Utente di HTML.it
    Registrato dal
    Sep 2006
    Messaggi
    115

    While loop e fking ie

    Salve a tutti,

    ho problema con ie: il link: http://osc.altervista.org/index.php?...php&Itemid=123

    il prog si interfaccia con le tabelle del db di joomla + plugin e quello che si vede in output è il risultato di una query.

    L'obiettivo sarebbe quello che di generare una lista membri con diverse tabelle per team dove il team di appartenenza e il nick sono storati in una tabella del db. Tutto va alla grande con tutti i browser tranne, nemmeno a dirlo, ie.

    Ecco lo snippet di codice incriminato:


    codice:
    echo "<table>";
    
    while ($row = @mysql_fetch_array($query)) {
    
    /*
    *
    *
    * varie istruzioni per la generazione delle variabili printate in tabella
    *
    *
    *
    */
            echo "
    		<caption>". $capt ."</caption>	
    		 <tr>
    			<td width = '70' align = 'center'>". $flag ."</td>
    			<td width = '70' align = 'center'>". $racelogo ."</td>
    			<td width = '400' align = 'center'><p id='nickP'>". $row[nick] ."</p></td>
    			<td><p id = 'rolezCell'>". $row[rolez] ."</p></td>
    	  	</tr>";
    		}
    		echo "</table>
    
    ";
    	}
    Il fatto è che ie, al contrario di tutti gli altri browser, lancia il comando html <caption> tante volte quante cicla il while loop

    non so proprio come fixare, l'idea sarebbe quella di avere solo una volta il titolo della tabella!!

    Al link tutto il codice della pagina, abbiate pietà per la blasfemia di html/css php e mysql ma non è cosi facile lavorare sotto un CMS per me -,-


    http://pastie.org/1965976

  2. #2
    Ciao,
    non capisco... nel tuo codice inserisci ripetutamente il tag CAPTION attraverso il ciclo while e non capisci perchè questo venga visualizzato più volte?

    Secondo lo standard, il tag CAPTION può esser presente al massimo una sola volta per tabella ed inserito subito dopo il tag <table>.

    L'unica soluzione che hai per rendere il tuo codice conforme è di togliere il CAPTION dal ciclo e metterlo dove dovrebbe stare: dopo il TABLE.
    Full Stack Developer presso Advice Lab
    Bonus Bitcoin
    Moon Bitcoin

  3. #3
    Utente di HTML.it
    Registrato dal
    Sep 2006
    Messaggi
    115
    ci ho pensato, ma la variabile $capt viene generata dalla query come tutti gli altri <td> ed è infatti dinamica a seconda del risultato della query, ovvero un'immagine di capt per ogni team che viene generato dallo script

  4. #4
    Se $capt viene generata dalla query, non e' il quel pezzo di codice. In quello che hai postato la variabile $capt non e' definita.

  5. #5
    Utente di HTML.it
    Registrato dal
    Sep 2006
    Messaggi
    115
    nel pastie che ho linkato si vede meglio righe 58-60 sono la definizione di $capt

    codice:
    <style>
    #nicks{
    color: #3366FF !important;
    }
    
    #rolezCell {
    	color: #3366FF !important;
    	font-weight: bolder !important;
    	font-size: 10px !important;
    }
    
    #nickP {
    	font-size: 25px !important;
    	font-weight: bolder !important;
    }
    
    .module-dark .mainbody-tl, .module-dark .mainbody-tr, .module-dark .mainbody-bl, .module-dark .mainbody-br {
       background-image :url('/osc/images/maintenancebg.jpg') !important; 
    }
    .mainbody-surround {
        background-image:url('/osc/images/maintenancebg.jpg') !important; 
    }
    </style>
    
    
    <?php
    // no direct access
    defined( '_JEXEC' ) or die( 'Restricted access' );
    
    $db =& JFactory::getDBO();
    
    class Tabs {
    	public function teamsViewer($sql) {
    				
    		echo "<table width='800' border='0' align ='center'>";		
    		//executing table
    		$query = mysql_query($sql) or die ('Errore nella Query: ' . mysql_errno(). ': '.mysql_error());
    		while ($row = @mysql_fetch_array($query)) {
    			
    			// flags snippet
    			if ($row[nation] == "")
    				$flag = "N/D";
    			else $flag = "[img]/osc/images/stories/flags/".strtolower($row[nation])."64.png[/img]";
    			
    			//called to raceLogos($race) function.
    			$switchrace = $row[race];
    			$racelogo = $this->raceLogos($switchrace);
    			
    			//nick side
    			if ($row[nick] == "")
    			$row[nick] = "Data Missing";
    			
    			if ($row[nickid] == "")
    				$bnetid = "Data Missing";
    			else $bnetid = $row[nickid];
    			
    			// pics caption for tables from following path so it is choosable from "icon" option of ClanTools
    			if ($row[captimage] == "") 
    				$capt = "No caption image provided for the Team " . $row[name] . "
    
    
    "; 
    			else $capt = "[img]/osc/images/clantools/logos/".$row[captimage]."[/img]". $capt ."</caption>	
    		 <tr>
    			<td width = '70' align = 'center'>". $flag ."</td>
    			<td width = '70' align = 'center'>". $racelogo ."</td>
    			<td width = '400' align = 'center'><p id='nickP'>". $row[nick] ."</p></td>
    			<td><p id = 'rolezCell'>". $row[rolez] ."</p></td>
    	  	</tr>";
    		}
    		echo "</table>
    
    ";
    	}
    	
    
    	// Race images function
    	private function raceLogos($race) {
    		switch ($race) {
    			case "Terran":
    				return "[img]/osc/images/stories/th_terran.png[/img]";
    				break;
    			case "Zerg":
    				return "[img]/osc/images/stories/th_zerg.png[/img]";
    				break;
    			case "Protoss":
    				return "[img]/osc/images/stories/th_protoss.png[/img]";
    				break;
    			case "Random":
    				return "[img]/osc/images/stories/th_random.png[/img]";
    				break;
    			default:
    				return "N/D";
    		}
    	}
    }
    
    // instantiating object
    $tb = new Tabs();
    
    //Query to get the ordering option of ClanTools joomla plugin 
    $sqlTeamsOrdering = "SELECT ordering, id FROM jos_ct_clan_squad ORDER BY ordering";
    $queryTeamsOrdering = mysql_query($sqlTeamsOrdering) or die ('Errore nella Query: ' . mysql_errno(). ': '.mysql_error());
    while ($ordering = @mysql_fetch_array($queryTeamsOrdering)) {
    	// called to teamsViewer($sql) function
    	$tb->teamsViewer("SELECT jos_comprofiler.cb_battlenetprofile as bnetprofile, jos_ct_clan_squad.name as name, jos_ct_clan_squad.picture as captimage, jos_ct_clan_squadmember.sid, jos_users.username as nick, cb_sc2race as race, cb_nation as nation, funktion as rolez, jos_ct_clan_squadmember.sid as capt, jos_comprofiler.user_id as id, jos_comprofiler.cb_sc2battlenetid as nickid FROM jos_users, jos_comprofiler, jos_ct_clan_squadmember, jos_ct_clan_squad WHERE jos_comprofiler.id = jos_ct_clan_squadmember.uid AND jos_ct_clan_squad.id = jos_ct_clan_squadmember.sid AND jos_users.id = jos_comprofiler.id AND published = 1 AND jos_ct_clan_squadmember.sid = ".$ordering[id]."");
    }
    ?>

  6. #6
    Ripeto:
    il tag CAPTION può essere presente AL MASSIMO una sola volta all'interno della tabella.

    Il codice html che generi è sbagliato, indipendentemente da cosa il tag contenga e da dove ne ne generi il contenuto.

    Se vuoi un impaginato di un certo tipo, trova la soluzione HTML che te lo fornisce, che non c'entra nulla col codice php.

    Nel tuo caso, scusa se lo ripeto per la terza volta, è il codice HTML ad esser sbagliato.

    Se vuoi più "titoli" cerca una soluzione differente... ad esempio,metti il titolo in un riga della tabella... oppure crea più tabelle
    Full Stack Developer presso Advice Lab
    Bonus Bitcoin
    Moon Bitcoin

  7. #7
    Il problema e' molto piu' radicato e deriva dalla pessima abitudine di inviare stringhe HTML direttamente nel codice in cui i dati vengono elaborati. E' proprio il processo logico che e' errato, per quanto applicato dal 90% dei programmatori PHP autodidatti/non professionisti.

    PRIMA si estraggono elaborano i dati registrandoli in apposite variabili (tipicamente una struttura a base di array e oggetti a seconda della necessita'), DOPO si genera l'output. Sono due parti che devono rimanere separate.

    http://forum.html.it/forum/showthrea...2#post13258792

  8. #8
    Utente di HTML.it
    Registrato dal
    Sep 2006
    Messaggi
    115
    Originariamente inviato da k.b
    Il problema e' molto piu' radicato e deriva dalla pessima abitudine di inviare stringhe HTML direttamente nel codice in cui i dati vengono elaborati. E' proprio il processo logico che e' errato, per quanto applicato dal 90% dei programmatori PHP autodidatti/non professionisti.

    PRIMA si estraggono elaborano i dati registrandoli in apposite variabili (tipicamente una struttura a base di array e oggetti a seconda della necessita'), DOPO si genera l'output. Sono due parti che devono rimanere separate.

    http://forum.html.it/forum/showthrea...2#post13258792
    Quello che dici è molto interessante, ho letto il topic che hai linkato e googlato per una guida esauriente per fare quello che hai detto ma non ho trovato niente, nemmeno su html.it. Qualche link da consigliare?

  9. #9
    Originariamente inviato da Virtuoid
    Quello che dici è molto interessante, ho letto il topic che hai linkato e googlato per una guida esauriente per fare quello che hai detto ma non ho trovato niente, nemmeno su html.it. Qualche link da consigliare?
    E' che non c'e' molto da dire, il concetto e' abbastanza basilare: invece di fare echo direttamente dentro il while con cui scorri i risultati della query, registri i dati in un array. In seguito quando stampi l'ouput, stamperai il contenuto di questo array.

    Vedi anche questo messaggio: http://forum.html.it/forum/showthrea...6#post13284836 (leggi anche tutto il thread che tratta un altro errore estremamente comune).

  10. #10
    Utente di HTML.it
    Registrato dal
    Sep 2006
    Messaggi
    115
    Originariamente inviato da k.b
    E' che non c'e' molto da dire, il concetto e' abbastanza basilare: invece di fare echo direttamente dentro il while con cui scorri i risultati della query, registri i dati in un array. In seguito quando stampi l'ouput, stamperai il contenuto di questo array.

    Vedi anche questo messaggio: http://forum.html.it/forum/showthrea...6#post13284836 (leggi anche tutto il thread che tratta un altro errore estremamente comune).
    Good! Per il momento ho fixato con un trick che non posto xché è meglio che non lo faccia nessuno

    mi cimento in codice piu corretto come mi hai consigliato grazie mille!!

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.