comortamento anomalo dei DIV

MrClog

Nuovo Utente
23 Mag 2013
25
0
1
47
Napoli
Ciao a tutti, mi capita una cosa strana. Ho un div che riesco a visualizzarlo con le corrette impostazioni solo con Chrome, mentre con FireFox e i.e. nulla è come se quel div non esistesse. Ispezionando l'elemento sui vari browser vedo che mantiene le impostazioni solo con Chrome, con gli altri no.

Codice:
#mycontainer{    position: relative; 
    width: 900px;
    margin: auto;
    padding:0px 0px;
}
questo tag viene caricato in uno script a secondo della pagina che carico

PHP:
<?php
if(isset($_GET['req'])){      //home   
 if($_GET['req']== "home")       
  require ("inc/home.inc.php");


    //galleria immagini   
 if($_GET['req']== "prod"){        
      echo('<div id="mycontainer">');        
      require ("inc/galleria.inc.php");        
      echo('</div>');    }   

//chi siamo    
if($_GET['req']== "about"){        
      echo('<div id="mycontainer">');        
      require ("inc/chisiamo.inc.php"); 
      echo('</div>');    
}    

//dove siamo    
if($_GET['req']== "dove"){
        echo('<div id="mycontainer">');
        require ("inc/dove.inc.php");
        echo('</div>');    }    

//contact    
if($_GET['req']== "contact"){ 
       echo('<div id="mycontainer">'); 
       require ("inc/contact.inc.php");  
      echo('</div>');    }    

//qualità   
 if($_GET['req']== "qualita"){       
       echo('<div id="mycontainer">');
        require ("inc/qualita.inc.php");
        echo('</div>');    
}        
}else     
    require ("inc/home.inc.php");
 ?>
se volete dare un occhiata potete vedere la pagina sul mio ambiente di prova testwebmarco.altervista.org/framessara2

grazie

grazie a tutti
Ultima modifica di MrClog76; 21-05-13 alle 00:42
 

Fez Vrasta

Utente Attivo
11 Mag 2013
409
0
0
Intanto scriverei il codice PHP in maniera più logica...

PHP:
switch ($_GET['req']) {
    
case "prod":
    echo '<div id="mycontainer">';
    require("inc/galleria.inc.php");
    echo('</div>');
    break;
    
case "about":
    echo '<div id="mycontainer">';
    require("inc/chisiamo.inc.php");
    echo '</div>';
    break;
    
case "dove":
    echo '<div id="mycontainer">';
    require("inc/dove.inc.php");
    echo '</div>';
    break;
    
case "contact":
    echo '<div id="mycontainer">';
    require("inc/contact.inc.php");
    echo '</div>';
    break;
    
case "qualita":
    echo '<div id="mycontainer">';
    require("inc/qualita.inc.php");
    echo '</div>';
    break;
    
case "home":
default:
    require("inc/home.inc.php");
}


Prova ad aggiungere un...

PHP:
case "test":
      echo '<div id="mycontainer">'; 
      echo 'test';
      echo '</div>'; 
      break;

... prima di case "home": default:

E vedi se in questo modo il div ottiene i CSS corretti
 

Jonn

Utente Attivo
29 Dic 2012
352
3
18
Pistoia
Io penso che sia quel:
- position: relative;
Che ti scombina il tutto.
prova a toglierlo e riscrivere così:
Codice:
#mycontainer{
    width: 900px;
    margin: 00px auto 00px auto;
    padding:00px 00px 00px 00px;
}

Riguardando ho visto anche che hai usato il position relative anche su altri div, sinceramente mi sento di sconsigliarti l'uso di questo selettore se non necessario e di usare i margin, i padding, i float ed i clear per l'allineamento dei div (io ho sempre usato questi e non ho mai avuto alcun problema nei posizionamenti più disparati dei div).

Poi comunque ti voglio anche segnalare che guardando il sorgente con Firefox ho visto un errore alla riga 51:

[/HTML]<li> <a href="./index.php?req=home"">Home</a></li>
HTML:
Dopo home hai messo due volte i doppi apici.

Sempre nel menu ti consiglio di spaziare di più i <li> perchè io li vedo sovrapposti su Firefox (con Chrome no), e (sempre su Firefox) di specificare nel css del menu:
[CODE]list-style: none;[/CODE]
perchè si vede il classico pallino (che secondo me è anche schifoso da vedere XD).

Per il resto ti consiglio solo di ridare un'occhiata all'indenting (sarà che sono malato io ma è una cosa che considero quasi vitale anche se è solo una comodità in più in html).
 

Fez Vrasta

Utente Attivo
11 Mag 2013
409
0
0
position: realative non da assolutamente alcun problema in nessun caso, e non è quello che genera il problema in questione.
 

MrClog

Nuovo Utente
23 Mag 2013
25
0
1
47
Napoli
Grazie ragazzi,
ora controllo e cerco di utilizzare al meglio i vostri consigli e vi aggiorno sul tutto ;) :mavieni:
 

Jonn

Utente Attivo
29 Dic 2012
352
3
18
Pistoia
Comunque secondo me la situazione si risolve usando un div contenitore nel quale si inseriscono 2 div box, e dando a questo div contenitore margin: 00px auto 00px auto; ... ho comunque scritto un esempio perchè è una soluzione veramente semplicissima e crossbrowser:

HTML:
<div id="pagina" style="width:800px; min-height:500px; margin:00px auto 00px auto; background: #333333;"><!--Questo è il div che contiene tutte le pagine-->
	<div id="homepage" style="width: 400px; height: 210px; margin: 00px auto 00px auto;"><!-- Questo è il div centrato che contiene i 2 box-->
		<div id="box1" style="float: left; width: 180px; min-height: 180px; margin: 10px 00px 00px 00px; padding: 10px; background: #FF0000;">Ciao</div>
		<div id="box2" style="float: left; width: 180px; min-height: 180px; margin: 10px 00px 00px 00px; padding: 10px; background: #FF00FF;">Ciao</div>
	</div>
	<div id="footer" style="clear: both;"></div>
</div>
 

Fez Vrasta

Utente Attivo
11 Mag 2013
409
0
0
quei CSS devono applicarsi comunque, se non si applicano è probabilmente perché le pagine PHP che include hanno qualche errore (elementi non chiusi o roba del genere).
 

Jonn

Utente Attivo
29 Dic 2012
352
3
18
Pistoia
Diciamo che nel 90% dei casi è così se chi le progetta sà quello che scrive, altrimenti ci può essere anche una scarsa conoscenza dei tag, dei selettori, degli attributi dei tag e dei selettori e tutto il resto, come per esempio:

- Avere un div che fa da corpo pagina, inserirvici dentro un div con position absolute e poi domandarsi il perchè quest'ultimo non segue il flusso della pagina basandosi sul div genitore.

Come intendevo dire in uno dei post precedenti che ho scritto che potrebbe essere quel position absolute; forse ho scritto male, ma non intendevo dire che il selettore non è valido, intendevo dire che di certi selettori bisogna saper bene il loro funzionamento e quali conseguenze comportano al flusso della pagina, nel caso una persona non lo sappia allora si cerca sempre di usare le regole più semplici (come quelle che appunto ho indicato io) per cui se si dovesse presentare un problema, trovare la soluzione sarebbe molto più veloce e meno laborioso.

Una volta stilata una struttura molto semplice allora uno passa a rifinire tutte le varie positions (div contenenti moduli statici quali, header, footer..)
e si valuta l'utilizzo di altri selettori (come il tipo di position in questo argomento).

Questa come ho appena detto però è una strada che se pur più lunga consente a chi ha meno esperienza di capire meglio i funzionamenti dei vari selettori se non vuole leggersi le definizioni sui siti che li spiegano.

Sto solo dicendo: "Prima di correre bisogna imparare a camminare".

Poi non sapendo le conoscenze di chi scrive il codice è logico che i motivi per cui la struttura non funziona a modo possono essere molteplici, vai a sapere...
 

MrClog

Nuovo Utente
23 Mag 2013
25
0
1
47
Napoli
Finalmente ho risolto, mi sono messo piano piano è finalmente funziona. Non saprei esattamente cosa avevo sbagliato, ma ripulendo il codice il tutto funziona ora.

Jonn
Io penso che sia quel:
- position: relative;
Che ti scombina il tutto.

Quel div mi serviva relative, altrimenti non lo avrei inserito.

Fez Vrasta
Intanto scriverei il codice PHP in maniera più logica...

Grazie non avevo pensato al case. Ho seguito il tuo consiglio.



Grazie a tutti anche a Jonn. Purtroppo nei Forum c'è sempre un onnipotente che non riesce mai a dare un consiglio corretto, ma riesce nel contempo ad insultare gli altri dimostrando con la propria presunzione i suoi limiti.
 

Fez Vrasta

Utente Attivo
11 Mag 2013
409
0
0
Prova a vedere se facendo come ho detto il problema persiste, se tutto funziona correttamente il problema è da cercare nei file .inc.php
 

Fez Vrasta

Utente Attivo
11 Mag 2013
409
0
0
Diciamo che nel 90% dei casi è così se chi le progetta sà quello che scrive, altrimenti ci può essere anche una scarsa conoscenza dei tag, dei selettori, degli attributi dei tag e dei selettori e tutto il resto, come per esempio:

- Avere un div che fa da corpo pagina, inserirvici dentro un div con position absolute e poi domandarsi il perchè quest'ultimo non segue il flusso della pagina basandosi sul div genitore.

Come intendevo dire in uno dei post precedenti che ho scritto che potrebbe essere quel position absolute; forse ho scritto male, ma non intendevo dire che il selettore non è valido, intendevo dire che di certi selettori bisogna saper bene il loro funzionamento e quali conseguenze comportano al flusso della pagina, nel caso una persona non lo sappia allora si cerca sempre di usare le regole più semplici (come quelle che appunto ho indicato io) per cui se si dovesse presentare un problema, trovare la soluzione sarebbe molto più veloce e meno laborioso.

Una volta stilata una struttura molto semplice allora uno passa a rifinire tutte le varie positions (div contenenti moduli statici quali, header, footer..)
e si valuta l'utilizzo di altri selettori (come il tipo di position in questo argomento).

Questa come ho appena detto però è una strada che se pur più lunga consente a chi ha meno esperienza di capire meglio i funzionamenti dei vari selettori se non vuole leggersi le definizioni sui siti che li spiegano.

Sto solo dicendo: "Prima di correre bisogna imparare a camminare".

Poi non sapendo le conoscenze di chi scrive il codice è logico che i motivi per cui la struttura non funziona a modo possono essere molteplici, vai a sapere...

Il position relative non influisce sulla posizione nel flusso del documento. E comunque se io dico che #pinco deve avere tali CSS, quei CSS devono applicarsi, non è che visto che han "problemi" non si applicano.
Il problema li è che il codice è pieno di errori, tag non chiusi e cose del genere.

Chrome fa un dannato lavoro di auto correzione del codice (cosa a volta assurda e inconcepibile) che fa sì che anche la pagina scritta da uno scimpanzé abbia tutto il codice scritto correttamente.
Firefox ed Explorer se ne fregano, e si perdono nel codice.

http://validator.w3.org/check?uri=h...alidator/1.3+http://validator.w3.org/services
 

Jonn

Utente Attivo
29 Dic 2012
352
3
18
Pistoia
PHP:
<?php
		if (isset($_GET['req'])) 
				{
				switch($_GET['req'])
					{
						case "prod":
							echo '<div id="mycontainer">';
							require("inc/galleria.inc.php");
							echo('</div>');
							break;

						case "about":
							echo '<div id="mycontainer">';
							require("inc/chisiamo.inc.php");
							echo '</div>';
							break;

						case "dove":
							echo '<div id="mycontainer">';
							require("inc/dove.inc.php");
							echo '</div>';
							break;

						case "contact":
							echo '<div id="mycontainer">';
							require("inc/contact.inc.php");
							echo '</div>';
							break;

						case "qualita":
							echo '<div id="mycontainer">';
							require("inc/qualita.inc.php");
							echo '</div>';
							break;
					}
				}
				else{echo '<div id="mycontainer">';include('inc/home.inc.php');echo '</div>';}
?>
Appurato quindi che l'errore non è del CSS...
La soluzione di Fez Vrasta scritta in quel modo da un errore PHP, o non l'hai vista perchè il server lo nasconde all'output, oppure hai preso solo i case e lasciato IF ISSET come avevi inizialmente.
Te l'ho comunque riscritta correttamente
Quando la variabile non è settata (cioè nessun link cliccato) il server indica un errore rispondendo che non è definita la index.
In questo modo invece se la variabile è settata, esegue lo switch, altrimenti include home.inc.php.
Non omettere l'IF ISSET prima dello SWITCH.
 

Fez Vrasta

Utente Attivo
11 Mag 2013
409
0
0
Non è un errore, è un notice.

default è fatto apposta per gestire quel tipo di situazioni.
 

Fez Vrasta

Utente Attivo
11 Mag 2013
409
0
0
Se non vuoi il notice metti prima del mio codice:

if (!isset($_GET['req'])) { $_GET['req'] = ""; }

così non viene il notice ed usi comunque il default in modo da mantenere il codice pulito.
 

MrClog

Nuovo Utente
23 Mag 2013
25
0
1
47
Napoli
Grazie,
ma la variabile la avevo già settata. Inizialmente avevo postato solo la parte di interesse :byebye:

grazie a tutti
 

Jonn

Utente Attivo
29 Dic 2012
352
3
18
Pistoia
Non è un errore, è un notice.

default è fatto apposta per gestire quel tipo di situazioni.

Si vabene.... tsk

Un notice è un errore che non ha importanza vitale ma che in certi casi con strutture PHP molto complesse possono generare problematiche.

Default serve solo per definire l'istruzione iniziale nel caso la variabile non abbia alcun valore di quelli contenuti nello switch, non per "gestire quel tipo di situazioni" cioè vedere se è inizializzata o meno.
Per questo motivo è corretto scrivere IF ISSET per controllare prima se la variabile è settata ed agire di conseguenza.
Ma che siamo tornati a scuola?

Che sia un errore significativo o meno è un altro discorso, sempre un errore rimane, rileggiti questa pagina fonzie:...
http://php.net/manual/en/function.error-reporting.php
 

Fez Vrasta

Utente Attivo
11 Mag 2013
409
0
0
se fosse un errore si chiamerebbe ERROR, invece si chiama NOTICE.

E' una semplice notifica che indica che la variabile che stai utilizzando non è definita, niente di più. E può portare ad errori solo se la si usa per effettuare calcoli o se la si usa in funzioni specifiche.
Nel suo caso la variabile è usata solo nello switch e verrà utilizzata per cose più complesse solo nel caso sia definita. Nel caso non sia definita andrà soltanto a finire nel default dello switch.

Ho anche proposto una soluzione VALIDA per evitare il notice, la tua invece, che prevede di modificare completamente il mio script, non è valida e non è facilmente mantenibile, dato che se bisognasse aggiungere un IF per ogni variabile che si usa il codice diventerebbe un inferno.

Prima di fare il saccente con gente che con queste cose ci campa proverei a studiare un po' le buone prassi di scrittura del codice.
Ciao.
 

Jonn

Utente Attivo
29 Dic 2012
352
3
18
Pistoia
Nel suo caso la variabile è usata solo nello switch e verrà utilizzata per cose più complesse solo nel caso sia definita. Nel caso non sia definita andrà soltanto a finire nel default dello switch.
Su questo sono d'accordo, ma gestire già dal principio la situazione prendendo in considerazione se la variabile è inizializzata o meno non è meglio?
In questo modo se il progetto dovesse ingrandirsi notevolmente, il problema del quale abbiamo discusso è da non prendere in considerazione e quindi non ci si perde tempo dietro su questo.
Meglio prevenire che curare.

Ho anche proposto una soluzione VALIDA per evitare il notice, la tua invece, che prevede di modificare completamente il mio script, non è valida e non è facilmente mantenibile, dato che se bisognasse aggiungere un IF per ogni variabile che si usa il codice diventerebbe un inferno.
Ma se è la stessa che aveva usato MrClog inizialmente!!! O.O
Ma se è lo stesso consiglio che hai dato tu 2 messaggi dopo il mio che poi hai scritto la stessa cosa!!! XD
SVEGLIA!!!
ahah, che sagoma XD

Prima di fare il saccente con gente che con queste cose ci campa proverei a studiare un po' le buone prassi di scrittura del codice.
Ciao.
Non ho parole, anzi solo una ..... patetico!

Comunque sia, anche basta con questa buffonata. :)
 

Fez Vrasta

Utente Attivo
11 Mag 2013
409
0
0
fino a prova contraria io ho dato soluzioni valide alla risoluzione del problema, tu cosa hai fatto esattamente a parte dare la colpa al position:relative? No dai spiegamelo per favore.
 
Discussioni simili
Autore Titolo Forum Risposte Data
R Problemi anomalo insermento in db PHP 9
max1974 Comportamento Anomalo PHP PHP 3
C [PHP] Controllo <select> comportamento anomalo PHP 2
otto9due Error anomalo durante invio dati $.ajax Ajax 20
A comportamento anomalo con IE 9 e 10 Ajax 117
L Comportamento anomalo dei button type submit PHP 1
Y problema anomalo con window.location.href Javascript 2
carla146 comportamento anomalo winxp sp3 risorse del computer Windows e Software 0
A incremento anomalo di una variabile in un file .txt PHP 12
N un "if" anomalo... PHP 11
P Anomalo: non mi carica il player Flash 8
T come ordinare dei record recuperati da due tabelle MySQL 0
C Creare Tabella Dati Meteo prelevandoli da dei Tags in un altro foglio PHP 27
C prendere dei valori da Plugin e inserirli nel database joomla Joomla 0
otto9due Impedire esecuzione diretta dei file PHP 7
seranto Blocco preventivo e Registro dei Consensi per Cookie tecnici? Leggi, Normative e Fisco 2
F Scrivere dei dati in word con php PHP 0
M Problemi con la stampa dei valori in php PHP 1
L Ricezione dei dati su file php da modulo html PHP 6
G Somma dei Minuti PHP 3
W Elenco dei link del file presenti in una cartella PHP 2
C Esclusione dei giorni festivi Javascript 0
W Evitare ridondanza dei dati Classic ASP 3
I Passare dei parametri in javascript PHP 0
G Scelta dei Breakpoint HTML e CSS 1
D Javascript per il download dei dati Javascript 0
G MariaDB non restituisce dei valori PHP 7
J estrarre url dei file video da youtube "get_video_info" PHP 6
MarcoGrazia [PHP] Uso dei namespace PHP 5
B [PHP] recuperare IP dei server in load balancing [RISOLTO] PHP 3
W [WordPress] [WooCommerce] Non trovo più la Tab Visulizzazione dei Prodotti in questo nuovo Plugin WordPress 2
L Trasferimento dei file OLM Mac in formato PST sul sistema Mac Mac e Software 1
W [Javascript] Bootstrap Admin templates, mi dareste dei consigli? CMS (Content Management System) 0
maxnegri Sommare i prezzi dei prodotti aggiunti al carrello di diverse aziende con Select sum php mysqli PHP 10
spider81man [PHP] Pulsante SUBMIT per download diretto dei file PHP 9
C Creazione di una funzione per il filtraggio dei campi di un db Presentati al Forum 0
A [PHP] Generare nomi dei file con lettere minuscole e vocali senza accenti PHP 2
S Visibilità dei like dei propri amici su Facebook Social Media Marketing 2
G [HTML] Modificare ordine dei div in mobile responsive HTML e CSS 5
elpirata [PHP][RISOLTO] Effettuare la somma dei tempi di lavorazione PHP 3
MarcoGrazia [PHP] Percorso dei file PHP 3
M New entry nel mondo dei DB Presentati al Forum 1
M [PHP] Aggiornare i dati dei record selezionati PHP 3
F Autocompletamento dei campi di una pagina jQuery 4
cristoforo58 Stampare dei valori XML in PHP PHP 0
xone [PHP] Contare numero dei giorni tra data_in e data_out PHP 11
V Indicizzazione dei contenuti Google Search Console 0
felino [WordPress] Override dei files del theme attivo WordPress 3
E [PHP] [HTML] Codice che gestisce l'input e la trasmissione dei dati alla mia email PHP 1
KILLERIX Sicurezza dei database nei siti web Database 2

Discussioni simili