IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

[PHP-JS] Résolution d'ecran OK mais code pas parfaite


Sujet :

Langage PHP

  1. #1
    Inscrit
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    302
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 302
    Points : 151
    Points
    151
    Par défaut [PHP-JS] Résolution d'ecran OK mais code pas parfaite
    Bonjour,

    Avec le bout de code plus bas j'arrive a appliquer une résolution = a l'ecran du visiteur.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    <script type="text/javascript">
    <!-- debut
    function resolution() {
    document.location="<?php echo $_SERVER['PHP_SELF']; ?>?<?php echo $_SERVER['QUERY_STRING']; ?>&width="+screen.width+"&height="+screen.height;
    }
    // fin -->
    </script>
    </head>
    <?php
     
    if(!isset($_GET['width']) and !isset($_GET['height'])){
    echo '<body onload="resolution();">';
    }else{
    echo '<body>';
    }
     
    $height = $_GET['height'];
    $width = $_GET['width'];
    $resolution = "$width$height";
     
    // appliquer au template
    //$templatewidth ="1024";
    $templatewidth =$width;
    ......
    ..
    ?>

    Tous fonctionne bien mais, quand je veut éditer un article sur joomla je me retrouve rediriger a la page d'accueil.

    Ma question est est-il possible de récupérer tout simplement la résolution width du visiteur sans pour autant rediriger le navigateur a chaque fois.

    Merci d'avance

  2. #2
    Modérateur

    Avatar de MaitrePylos
    Homme Profil pro
    DBA
    Inscrit en
    Juin 2005
    Messages
    5 497
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : Belgique

    Informations professionnelles :
    Activité : DBA
    Secteur : Service public

    Informations forums :
    Inscription : Juin 2005
    Messages : 5 497
    Points : 12 600
    Points
    12 600
    Par défaut
    Bonjour,

    tu demande toi même de rediriger

    Code javascript : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    document.location="<?php echo $_SERVER['PHP_SELF']; ?>

  3. #3
    Inscrit
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    302
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 302
    Points : 151
    Points
    151
    Par défaut
    Bonjour,

    je sais, mais y a t-il une solution pour récupérer le width sans rediriger ?

    Merci

  4. #4
    Modérateur

    Avatar de MaitrePylos
    Homme Profil pro
    DBA
    Inscrit en
    Juin 2005
    Messages
    5 497
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : Belgique

    Informations professionnelles :
    Activité : DBA
    Secteur : Service public

    Informations forums :
    Inscription : Juin 2005
    Messages : 5 497
    Points : 12 600
    Points
    12 600
    Par défaut
    et ceci cela fonctionne ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    <script type="text/javascript">
    <!-- debut
    function resolution() {
    <?php $width =  ?>+screen.width,
    <?php $height = ?>+screen.height
    }
    // fin -->
    </script>

  5. #5
    Inscrit
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    302
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 302
    Points : 151
    Points
    151
    Par défaut
    Bonjour,

    Voila j'ai essayer votre méthode elle est pas mal mais ne fonctionne pas donc j'ai légèrement modifier le code de cette façon

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    <script>
    var width_a = screen.width;
    </script>
    <?
    $width_a = "<script>document.write(width_a);</script>";
    $templatewidth = $width_a;
    Donc pour vérifier avec un echo $width_a; il m'affiche le resultat exact "1280" de mon ecran mais le $templatewidth ne réagi pas, donc j'ai essayer un echo $templatewidth; pour voir s'il accepte $width_a donc il m'affiche le resultat exact "1280" de mon ecran mais, ce la ne fonctionne toujours pas

    donc j'ai essayer $width_a = "1280"; est cela fonctionne tres bien.

    Voila c'est bizarre je suis perdu

    Merci

  6. #6
    Modérateur

    Avatar de MaitrePylos
    Homme Profil pro
    DBA
    Inscrit en
    Juin 2005
    Messages
    5 497
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : Belgique

    Informations professionnelles :
    Activité : DBA
    Secteur : Service public

    Informations forums :
    Inscription : Juin 2005
    Messages : 5 497
    Points : 12 600
    Points
    12 600
    Par défaut
    et simplement

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
     
    $templatewidth =  "<script>screen.widht</script>";

  7. #7
    Inscrit
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    302
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 302
    Points : 151
    Points
    151
    Par défaut
    Bonjour,

    toujours pareil

  8. #8
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    495
    Détails du profil
    Informations personnelles :
    Âge : 52
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Janvier 2004
    Messages : 495
    Points : 396
    Points
    396
    Par défaut
    En clair, tu veux que ton site occupe toute la taille de l'ecran du visiteur .. ?

    Il me semble que c'est plutot un probleme de css.. "design elastic".. ou alors je ne comprends pas bien ton souci..

    http://www.alistapart.com/articles/elastic/

  9. #9
    Inscrit
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    302
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 302
    Points : 151
    Points
    151
    Par défaut
    Bonjour,

    j'utilise joomla, mon template est natura plazza
    Le fichier CSS gère que le design mais pas la largeur etc..
    dans mon fichier templates/natura_plazza/index.php j'ai

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    <script>
    var width_a = screen.width;
    </script>
    <?
    $width_a = "<script>document.write(width_a);</script>";
     
     
    if ($width_a == 1280) {
    $templatewidth =  '1280';
    echo 'resolution 1280';
    }else{
    echo 'inconnu';
    }
    Pour la largeur de mon site c'est $templatewidth
    Essayer ce code vous allez voir (par exemple ma résolution est de 1280 en larg, mais avec j'ai toujours inconnu)

    Merci d'avance

  10. #10
    Inscrit
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    302
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 302
    Points : 151
    Points
    151
    Par défaut
    Bonjour,

    Voila ma page index.php

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    <?php
    defined( '_VALID_MOS' ) or die( 'Restricted access' );
    // needed to seperate the ISO number from the language file constant _ISO
    $iso = explode( '=', _ISO );
    // xml prolog
    echo '<?xml version="1.0" encoding="'. $iso[1] .'"?' .'>';
    ?>
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml"><head>
    <?php mosShowHead(); ?>
    <!-- ici -->
    <script>
    var width_a = screen.width;
    </script>
    <?
    $width_a = "<script>document.write(width_a);</script>";
     
    if ($width_a == 1280) {
    $templatewidth =  '1280';
    echo 'resolution 1280';
    }else{
    echo 'inconnu';
    }
     
     
     
    if ( $my->id ) { initEditor(); } 
    // calculation for midsectright
    if ( mosCountModules('left')) {
    	$midsect_mid = $templatewidth - 420
    }
    if ( mosCountModules('right')) {
    	$midsect_mid = $templatewidth - 420;
    }
    if ( mosCountModules('left') && mosCountModules('right')) {
    	$midsect_mid = $templatewidth - 620;
    }
    if ( mosCountModules('left') + mosCountModules('right')==0) {
    	$midsect_mid = $templatewidth - 210;
    }
    // 4 top mod width calculation 
    if (mosCountModules('user11') || mosCountModules('user12') || mosCountModules('user13') || mosCountModules('user14')) {
    	$topsecmodwidth = "100%";
     }
    if (mosCountModules('user11') && mosCountModules('user12') && mosCountModules('user13') && mosCountModules('user14')) {
    	$topsecmodwidth = "25%";
      }
    if (mosCountModules('user11') + mosCountModules('user12') + mosCountModules('user13') + mosCountModules('user14')==3) { 
    	$topsecmodwidth = "33%";
     }
    if (mosCountModules('user11') + mosCountModules('user12') + mosCountModules('user13') + mosCountModules('user14')==2) { 
    	$topsecmodwidth = "50%";
    }
     ?>
    <link rel="stylesheet" href="templates/natura_plazza/css/template_css.css" type="text/css" />
    <link rel="stylesheet" href="templates/natura_plazza/css/sfish.css" type="text/css" />
    </head>
    <body class="bodies">
    <div id="wrapper" align="center" >
    	<div id="pagewrapper" style="width:<?php echo $templatewidth; ?>px;">
    		<div id="pagewrapper_inner_left">
    			<div id="pagewrapper_inner_right">
    				<div id="bodywrapper">
    					<div id="bodywrapper_inner">
    						<div id="logo">
    						<a href="<?php echo $mosConfig_live_site;?>">
    						<img src="templates/natura_plazza/images/spacer.gif" border="0" width="350" height="56" alt="Logo" />
    						</a>
    						</div>
    						<div id="xtd_menu"><?php mosLoadModules ( 'user8',-2 ); ?></div>
    						<div style="clear:both; line-height:1px;"> &nbsp;</div>
    						<?php if (mosCountModules('user5')) { ?>
    						<div id="slideshow" align="center">
    							<?php mosLoadModules( 'user5', -2 ); ?>
    						</div> <!-- end slideshow -->
    						<div style="clear:both; line-height:1px;"> &nbsp;</div>
    						<?php } ?>
    						<!-- start 4 top module -->
    						<?php if(mosCountModules('user11') || mosCountModules('user12') || mosCountModules('user13') || mosCountModules('user14')) { ?>
    						<div>
    							<div id="topmodsection">
    								<div id="topmodsection_inner">
    									<div class="topmodsection_inner_c">
    										<?php if (mosCountModules('user11')) { ?>
    										<div id="topmodsection_1" style="width:<?php echo $topsecmodwidth; ?>">
    										<?php mosLoadModules ( 'user11',-2 ); ?></div>
    										<?php } ?>
    										<?php if (mosCountModules('user12')) { ?>
    										<div id="topmodsection_2" style="width:<?php echo $topsecmodwidth; ?>">
    										<?php mosLoadModules ( 'user12',-2 ); ?></div>
    										<?php } ?>
    <?php if (mosCountModules('user13')) { ?>
    <div id="topmodsection_3" style="width:<?php echo $topsecmodwidth; ?>">
    <?php mosLoadModules ( 'user13',-2 ); ?></div>
    <?php } ?>
    <?php if (mosCountModules('user14')) { ?>
    <div id="topmodsection_4" style="width:<?php echo $topsecmodwidth; ?>">
    <?php mosLoadModules ( 'user14',-2 ); ?></div>
    <?php } ?>
    <div style="clear:both; line-height:1px;">&nbsp;</div>
    </div>
    </div>
    </div>
    </div>		
    <?php } ?>
    <!-- start body section -->
    <div id="midsect" align="center">
    <?php if (mosCountModules('left')) { ?>
    							<div id="midsect_left">
    								<?php mosLoadModules ( 'left',-2 ); ?>
    							</div>
    							<?php } ?>
    							<div id="midsect_mid" style="width:<?php echo $midsect_mid; ?>px;">
    								<?php mosMainBody(); ?>
    							</div>
    							<?php if (mosCountModules('right')) { ?>
    							<div id="midsect_right">
    								<?php mosLoadModules ( 'right',-2 ); ?>	
    							</div>
    						<?php } ?>
    					<div style="clear:both;"></div>
       </div><!-- end midsect -->
    						<div style="clear:both; line-height:1px;"> &nbsp;</div>
    					</div><!-- end bodywrapper_inner -->
    					<div id="footer_wrapper">
    							<div id="footer_left"><?php include_once('includes/footer.php'); ?></div>
    							<?php if (mosCountModules('user3')) { ?>
    							<div id="footer_right"><?php mosLoadModules ( 'user3',-2 ); ?></div>
    							<?php } ?>
    							<div style="clear:both;"></div>		
    					</div>
    				</div><!-- end bodywrapper -->
    			</div><!-- end pagewrapper_inner_right -->
    		</div><!-- end pagewrapper_inner_left -->
    	</div> <!-- end pagewrapper -->
    </div> <!-- end wrapper -->
    <br />
    <script type="text/javascript">
    if(typeof sIFR == "function"){
       sIFR.replaceElement("#midsect_left div.moduletable h3, #midsect_right div.moduletable h3", named(
        {sFlashSrc: "mambots/system/goodfoot.swf", sColor: "#000000", sWmode: "transparent"}
      ));
    }
    </script>
    </body>
    </html>

  11. #11
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    495
    Détails du profil
    Informations personnelles :
    Âge : 52
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Janvier 2004
    Messages : 495
    Points : 396
    Points
    396
    Par défaut
    Pour ce bout de code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    <script>
    var width_a = screen.width;
    </script>
    <?
    $width_a = "<script>document.write(width_a);</script>";
     
     
    if ($width_a == 1280) {
    $templatewidth =  '1280';
    echo 'resolution 1280';
    }else{
    echo 'inconnu';
    }
    Je ne vois pas trop comment ca peut marcher.. le php s'execute (sur le serveur) AVANT le javascript (sur le client).. Et la tu essaye d'affecter ta variable $width_a (php) a partir d'un script javascript..

    en clair, tu ne pourras pas recuperer dans ton php une donnée provenant d'un script js..

  12. #12
    Inscrit
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    302
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 302
    Points : 151
    Points
    151
    Par défaut
    Bonjour,

    bien sur que je peut

    la preuve ici

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    <script>
    var width_a = screen.width;
    </script>
    <?
    $width_a = "<script>document.write(width_a);</script>";
    echo $width_a;
    ?>
    Merci

  13. #13
    Inscrit
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    302
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 302
    Points : 151
    Points
    151
    Par défaut
    Bonjour,

    sinon comment le faire a partir du fichier CSS car je ne sais pas le faire ?

    Merci

  14. #14
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    495
    Détails du profil
    Informations personnelles :
    Âge : 52
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Janvier 2004
    Messages : 495
    Points : 396
    Points
    396
    Par défaut
    oui, ce bout de code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    <script>
    var width_a = screen.width;
    </script>
    <?
    $width_a = "<script>document.write(width_a);</script>";
    echo $width_a;
    ?>
    ca t'affiche bien 1280 ou 1024 ou ce que tu as comme resolution d'ecran..

    mais c'est cette ligne, qui te l'ecrit :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <script>document.write(width_a);</script>
    le php est executé avant !

    en gros tu demande a php d'ecrire du javascript dans ta page html et javascript ecrit le screen.width !

    mais php n'a pas acces a la variable javascript meme !
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    <script>
    var width_a = screen.width;
    </script>
    <?php
    $width_a = "<script>document.write(width_a);</script>";
    echo htmlentities($width_a);
    ?>
     
    <script>document.write(width_a);</script>
    si ton $width_a contient bien "1280", le htmlentities que j'ai rajouté ne devrait avoir aucun effet.. fait le test !!

  15. #15
    Inscrit
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    302
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 302
    Points : 151
    Points
    151
    Par défaut
    Bonjour,

    Oui vous avez raison, mais alors comment appliquer un "100%" a $templatewidth ?

    Je ne sais plus quoi faire.

  16. #16
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    495
    Détails du profil
    Informations personnelles :
    Âge : 52
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Janvier 2004
    Messages : 495
    Points : 396
    Points
    396
    Par défaut
    bah la il te faudrait un specialiste de joomla, ou alors faire un template et un css elastique.. cherche sur google.. elastic css.. tu devrais avoir plein de reponses

  17. #17
    Inscrit
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    302
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 302
    Points : 151
    Points
    151
    Par défaut
    Bonjour,

    Voila j'ai trouver la solution avec la méthode cookie et voici le code pour ce qui ont le même problème que moi.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    <script language="javascript">
    <!--
    function writeCookie()
    {
     var today = new Date();
     var the_date = new Date("December 31, 2023");
     var the_cookie_date = the_date.toGMTString();
     var the_cookie = "users_res="+ screen.width +"x"+ screen.height;
     var the_cookie = the_cookie + ";expires=" + the_cookie_date;
     document.cookie=the_cookie
     if (document.cookie){ 
            location = '<?=$GLOBALS[callget_res_page_name]?>';
     }
    }
    function checkRes(width, height) {
            if(width != screen.width || height != screen.height) {
                    writeCookie();
            } else {
                    return true;
            }
    }
    //-->
    </script>
    <?
    if(isset($HTTP_COOKIE_VARS["users_res"])) {
            $screen_res = $HTTP_COOKIE_VARS["users_res"];
            $screen_res_tmp = explode("x", $screen_res);
            $screen_width = $screen_res_tmp[0];
            $screen_height = $screen_res_tmp[1];
            ?>
            <script language="javascript">
            <!--
            checkRes(<?=$screen_width?>, <?=$screen_height?>);
            //-->
            </script>
            <?
    }
    else
    {
    ?>
    <script language="javascript">
    <!--
    writeCookie();
    //-->
    </script>
    <?
    }
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $templatewidth =$screen_width;
    Compatible IE6, IE7,IE8 FF.

    1000 Merci a toutes les personnes qui mon aider.

    Encore merci

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [AJAX] PHP pas éxécuté mais code affiché
    Par devroot dans le forum AJAX
    Réponses: 2
    Dernier message: 08/06/2015, 16h55
  2. Réponses: 4
    Dernier message: 27/01/2006, 16h28
  3. [PHP-JS] Probleme de javascript dans un code php
    Par stomerfull dans le forum Langage
    Réponses: 3
    Dernier message: 23/01/2006, 10h33
  4. [PHP-JS] Probleme de javascript dans un code php
    Par stomerfull dans le forum Langage
    Réponses: 20
    Dernier message: 12/01/2006, 14h41
  5. [PHP et PostgreSQL] erreur de pg_exec mais requete valide
    Par guipom dans le forum PostgreSQL
    Réponses: 6
    Dernier message: 25/03/2005, 20h03

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo