Jump to content
xsnake75

Jquery+PHP+MySQL incompatível com IE

Recommended Posts

xsnake75

[Ajuda] - JQuery+PHP+MySQL

Boas

Tenho um form com 5 selects que vão à bd buscar valores dependendo do valor da anterior select. acontece que o JQuery funciona no Chrome e no Fiferox mas nao funciona no IE (seja qual for a versão).

Tenho a certeza que a conexão e as querys estão correctamente feitas

Coloco aqui os códigos

main.php

Código:

<div style="position:static;">
<?php
if(isset($_SESSION['user'])){
require "./php/connect.php";	
$DataM=date('d-m-Y');
$hora=date('H:i:s');
?>
<link rel="stylesheet" type="text/css" href="./css/altpass.css"/>
<link type="text/css" href="./js/jquery/css/redmond/jquery-ui-1.8.18.custom.css" rel="stylesheet" />	
<script type="text/javascript" src="./js/jquery/js/jquery-1.7.1.min.js"></script>
<script type="text/javascript" src="./js/jquery/js/jquery-ui-1.8.18.custom.min.js"></script>
<script type="text/javascript" src="./js/jquery/js/jquery_pt.js"></script>
<script type="text/javascript" language="Javascript">
function form_check(){
   if( document.reg.nic.value!='' && document.reg.n1.value!='' && document.reg.n2.value!='' ) {
      //--------------------------------------------------------------------
      var numero = document.reg.nic.value;
      if(isNaN(numero)){
         alert('NIC so aceita digitos!');
         field.focus();
	 return false;
      }
      else{
         if(document.reg.nic.value.length<10){
            alert('O NIC necessita de 10 digitos!');
            return false;
         }
      }
      //--------------------------------------------------------------------
      if(document.reg.n1.value=='0'){
         alert('É necessário indicar uma classificação!');
         return false;
      }
      //--------------------------------------------------------------------
      if(document.reg.n2.value==''){
         alert('É necessário indicar uma classificação! ');
         return false;
      }
      //--------------------------------------------------------------------
      var x = confirm('Pretende registar a chamada?');
      if(x == true){
	document.reg.submit();
        return true;
      }
      else{
         return false;
      }
   }
   else{
      alert('É necessário preencher todos os campos!');
      return false;
}
}
</script>

<h2>Registo de Chamadas</h2>
<br>
<span>Versão 3</span>

<?php require "./regcallv3/select.class.php"; ?>
<form method="post" id="reg" name="reg" onsubmit="return form_check();" action="./php/insertcall.php">
<table width="50%" border="0">
<hr>
	<tr>

		<script type="text/javascript" src="./regcallv3/script.js"></script>
		<th>Tipificação:</th>
		<td>
			<select id="n1" name="n1">
				<?php echo $opt->n1();?>
			</select>
		</td>
		<th>CallCenter:</th>
		<td>
			<select id="cc" name="cc">
			<?php
				if($_SESSION['team']!="Recursos Técnicos"){
					$achacc=mysql_query("SELECT callcenter.id,callcenter.callcenter FROM callcenter INNER JOIN team ON callcenter.id=team.callcenter_id WHERE team.nometeam='".$_SESSION['team']."'");
					while($row=mysql_fetch_row($achacc)){
						echo "<option value='".$row[0]."' selected disabled='disabled'>".$row[1]."</option>";
					}
				}else{
					echo "<option></option>";
					$listacc=mysql_query("SELECT * FROM callcenter order by callcenter");
					while($row=mysql_fetch_assoc($listacc)){
						echo "<option value='".$row['id']."'>".$row['callcenter']."</option>";
					}
				}
			?>
			</select>
		</td>
	</tr>
	<tr>
		<td> </td>
		<td><select id="n2" name="n2"></select></td>
		<th>NIC:</th>
		<td><input type="text" id="nic" name="nic" maxlength="10"/></td>
	</tr>
	<tr>
		<td> </td>
		<td><select id="n3" name="n3"></select></td>
		<th>Username:</th>
		<td><?php echo $_SESSION['nome'];?></td>
	</tr>
	<tr>
		<td> </td>
		<td><select id="n4" name="n4"></select></td>
		<th>Data:</th>
		<td><?php echo "$DataM";?></td>
	</tr>
	<tr>
		<td> </td>
		<td><select id="n5" name="n5"></select></td>
		<th>Hora:</th>
		<td><?php echo "$hora";?></td>
	</tr>
	<tr>
		<td colspan="4"><div onclick="ntc=false;return form_check();" class="btn1"> Registar Chamada </div></td>
	</tr>
</table>
</form>
<?php
}else{
header("Location: ./php/logout.php");
}
?>
</div>
[/code=javascript]
script.js [JQUERY]
Código:
[code]
$(document).ready(function(){
    $("select#n2").attr("disabled","disabled");
    $("select#n3").attr("disabled","disabled");
    $("select#n4").attr("disabled","disabled");
    $("select#n5").attr("disabled","disabled");
    
    $("select#n1").change(function(){
        $("select#n2").attr("disabled","disabled");
        $("select#n3").attr("disabled","disabled");
        $("select#n4").attr("disabled","disabled");
        $("select#n5").attr("disabled","disabled");
        
        $("select#n2").html("<option>wait...</option>");
        $("select#n3").html("<option></option>");
        $("select#n4").html("<option></option>");
        $("select#n5").html("<option></option>");
        
        var id = $("select#n1 option:selected").attr('value');
        $.post("./regcallv3/n2.php", {id:id}, function(data){
            $("select#n2").removeAttr("disabled");
            $("select#n2").html(data);
        });
    });
    $("select#n2").change(function(){
        $("select#n3").attr("disabled","disabled");
        $("select#n4").attr("disabled","disabled");
        $("select#n5").attr("disabled","disabled");
        
        $("select#n3").html("<option>wait...</option>");
        $("select#n4").html("<option></option>");
        $("select#n5").html("<option></option>");
        
        var id = $("select#n2 option:selected").attr('value');
        $.post("./regcallv3/n3.php", {id:id}, function(data){
            $("select#n3").removeAttr("disabled");
            $("select#n3").html(data);
        });
    });
    $("select#n3").change(function(){
        $("select#n4").attr("disabled","disabled");
        $("select#n5").attr("disabled","disabled");
        
        $("select#n4").html("<option>wait...</option>");
        $("select#n5").html("<option></option>");
        
        var id = $("select#n3 option:selected").attr('value');
        $.post("./regcallv3/n4.php", {id:id}, function(data){
            $("select#n4").removeAttr("disabled");
            $("select#n4").html(data);
        });
    });
    $("select#n4").change(function(){
        $("select#n5").attr("disabled","disabled");
        $("select#n5").html("<option>wait...</option>");
        var id = $("select#n4 option:selected").attr('value');
        $.post("./regcallv3/n5.php", {id:id}, function(data){
            $("select#n5").removeAttr("disabled");
            $("select#n5").html(data);
        });
    });
});

select.class.php

PHP Code:

<?php class MakeTipificacao{
    protected $conn;
         public function __construct(){
            $this->DbConnect();
        }
         protected function DbConnect(){
            $host="localhost";
            $user="root";
            $password=null;
            $db="sisap";
            $this->conn = mysql_connect($host,$user,$password) OR die("Unable to connect to the database");
            mysql_select_db($db,$this->conn) OR die("can not select the database $db");
            return TRUE;
        }
         public function callcenter(){
            $sql = "SELECT * FROM callcenter order by callcenter";
            $res = mysql_query($sql,$this->conn);
            $cc = '<option></option>';
            while($row = mysql_fetch_array($res)){
                $cc .= '<option value="' . $row['id'] . '">' . $row['callcenter'] . '</option>';
            }
            return $cc;
        } 
               public function n1(){
            $sql = "SELECT * FROM regcall_nivel1 order by class";
            $res = mysql_query($sql,$this->conn);
            $n1 = '<option></option>';
            while($row = mysql_fetch_array($res)){
                $n1 .= '<option value="' . $row['id'] . '">' . $row['class'] . '</option>';
            }
            return $n1;
        }
         public function n2(){
            $sql = "SELECT * FROM regcall_nivel2 WHERE id_reg1=".$_POST['id'];
            $res = mysql_query($sql,$this->conn);
            $n2 = '<option></option>';
            $n2.=$sql;
            while($row = mysql_fetch_array($res)){
                $n2 .= '<option value="' . $row[0] . '">' . $row['class'] . '</option>';
            }
            return $n2;
        }
                public function n3(){
            $sql = "SELECT * FROM regcall_nivel3 WHERE id_reg2=$_POST[id]";
            $res = mysql_query($sql,$this->conn) or die (mysql_error);
            $n3 = '<option></option>';
            while($row = mysql_fetch_array($res)){
                $n3 .= '<option value="' . $row['id'] . '">' . $row['class'] . '</option>';
            }
            return $n3; 
       } 
               public function n4(){
            $sql = "SELECT * FROM regcall_nivel4 WHERE id_reg3=".$_POST['id'];
            $res = mysql_query($sql,$this->conn);
            $n4 = '<option></option>';
            while($row = mysql_fetch_array($res)){
                $n4 .= '<option value="' . $row['id'] . '">' . $row['class'] . '</option>';
            }
            return $n4;
        }
        public function n5(){
            $sql = "SELECT * FROM regcall_nivel5 WHERE id_reg4=".$_POST['id'];
            $res = mysql_query($sql,$this->conn);
            $n5 = '<option></option>';
            while($row = mysql_fetch_array($res)){
                $n5 .= '<option value="' . $row['id'] . '">' . $row['class'] . '</option>';
            }
            return $n5;
        }
}
$opt = new MakeTipificacao();?>

Tenho ainda outro php para cada select... Eis um exemplo:

n2.php

PHP Code:

<?php require "./select.class.php";echo $opt->n2(); ?>

Podem ajudar?


-----------------------------------Obrigado,xSnake75

Share this post


Link to post
Share on other sites
mjamado

<table width="50%" border="0">
        <hr>
                <tr>

                        <script type="text/javascript" src="./regcallv3/script.js"></script>
                        <th>Tipificação:</th>
                        <td>

Vi até aqui, e nem vi mais. Esta estrutura não é válida e a DOM vai depender muito do que é que o browser tentar resolver dessa salganhada. Já tens sorte que o JS funcione nalguns...

Corrige a estrutura para estrutura válida e, se continuar sem funcionar, então volta cá.


"Para desenhar um website, não tenho que saber distinguir server-side de client-side" - um membro do fórum que se auto-intitula webdesigner. Temo pelo futuro da web.

Share this post


Link to post
Share on other sites
xsnake75

obrigado desde já pelo alerta !:(

Já corrigi mas mesmo assim continua a dar o erro  :wallbash:

descobri no PHP que o valor do jquery que vai para post desaparece sem razão, e como consequência, o php nao vizualiza a variável :((

Mais alguma sugestão que me possam ajudar? :D


-----------------------------------Obrigado,xSnake75

Share this post


Link to post
Share on other sites
mjamado
descobri no PHP que o valor do jquery que vai para post desaparece sem razão

Mais alguma sugestão que me possam ajudar? :D

A estrutura continua inválida. É a única razão para essas coisas acontecerem num browser e não noutro.


"Para desenhar um website, não tenho que saber distinguir server-side de client-side" - um membro do fórum que se auto-intitula webdesigner. Temo pelo futuro da web.

Share this post


Link to post
Share on other sites
xsnake75

A estrutura continua inválida. É a única razão para essas coisas acontecerem num browser e não noutro.

Dizes então que é apenas uma questão de html?

Estranho porque nao há muito tempo isto funcionava... e há que realçar que não alterei uma linha de código  :D


-----------------------------------Obrigado,xSnake75

Share this post


Link to post
Share on other sites
brunoais

Eu tentei não só fazer o q o mjamado

Eu tb tentei perceber o próprio código js. Se bem q te diga... Sem cores n vou a lado algum, isso está perto (ou é) spagetti code e código repetitivo, mesmo muito (demasiado) repetitivo..


"[Os jovens da actual geração]não lêem porque não envolve um telecomando que dê para mirar e atirar, não falam porque a trapalhice é rainha e o calão é rei" autor: thoga31

Life is a genetically transmitted disease, induced by sex, with death rate of 100%.

Share this post


Link to post
Share on other sites
xsnake75

Ok... coloco aqui o codigo de novo mas com cores desta vez :(

<div style="position:static;">
<?php
if(isset($_SESSION['user'])){
        require "./php/connect.php";        
        $DataM=date('d-m-Y');
        $hora=date('H:i:s');
?>
<link rel="stylesheet" type="text/css" href="./css/altpass.css"/>
<link type="text/css" href="./js/jquery/css/redmond/jquery-ui-1.8.18.custom.css" rel="stylesheet" />        
<script type="text/javascript" src="./js/jquery/js/jquery-1.7.1.min.js"></script>
<script type="text/javascript" src="./js/jquery/js/jquery-ui-1.8.18.custom.min.js"></script>
<script type="text/javascript" src="./js/jquery/js/jquery_pt.js"></script>
<script type="text/javascript" language="Javascript">
function form_check(){
   if( document.reg.nic.value!='' && document.reg.n1.value!='' && document.reg.n2.value!='' ) {
      //--------------------------------------------------------------------
      var numero = document.reg.nic.value;
      if(isNaN(numero)){
         alert('NIC so aceita digitos!');
         field.focus();
                 return false;
      }
      else{
         if(document.reg.nic.value.length<10){
            alert('O NIC necessita de 10 digitos!');
            return false;
         }
      }
      //--------------------------------------------------------------------
      if(document.reg.n1.value=='0'){
         alert('É necessário indicar uma classificação!');
         return false;
      }
      //--------------------------------------------------------------------
      if(document.reg.n2.value==''){
         alert('É necessário indicar uma classificação! ');
         return false;
      }
      //--------------------------------------------------------------------
      var x = confirm('Pretende registar a chamada?');
      if(x == true){
                document.reg.submit();
        return true;
      }
      else{
         return false;
      }
   }
   else{
      alert('É necessário preencher todos os campos!');
      return false;
        }
}
</script>

<h2>Registo de Chamadas</h2>
<br>
<span>Versão 3</span>

<?php require "./regcallv3/select.class.php"; ?>
<form method="post" id="reg" name="reg" onsubmit="return form_check();" action="./php/insertcall.php">
        <table width="50%" border="0">
        <hr>
                <tr>

                        <script type="text/javascript" src="./regcallv3/script.js"></script>
                        <th>Tipificação:</th>
                        <td>
                                <select id="n1" name="n1">
                                        <?php echo $opt->n1();?>
                                </select>
                        </td>
                        <th>CallCenter:</th>
                        <td>
                                <select id="cc" name="cc">
                                <?php
                                        if($_SESSION['team']!="Recursos Técnicos"){
                                                $achacc=mysql_query("SELECT callcenter.id,callcenter.callcenter FROM callcenter INNER JOIN team ON callcenter.id=team.callcenter_id WHERE team.nometeam='".$_SESSION['team']."'");
                                                while($row=mysql_fetch_row($achacc)){
                                                        echo "<option value='".$row[0]."' selected disabled='disabled'>".$row[1]."</option>";
                                                }
                                        }else{
                                                echo "<option></option>";
                                                $listacc=mysql_query("SELECT * FROM callcenter order by callcenter");
                                                while($row=mysql_fetch_assoc($listacc)){
                                                        echo "<option value='".$row['id']."'>".$row['callcenter']."</option>";
                                                }
                                        }
                                ?>
                                </select>
                        </td>
                </tr>
                <tr>
                        <td> </td>
                        <td><select id="n2" name="n2"></select></td>
                        <th>NIC:</th>
                        <td><input type="text" id="nic" name="nic" maxlength="10"/></td>
                </tr>
                <tr>
                        <td> </td>
                        <td><select id="n3" name="n3"></select></td>
                        <th>Username:</th>
                        <td><?php echo $_SESSION['nome'];?></td>
                </tr>
                <tr>
                        <td> </td>
                        <td><select id="n4" name="n4"></select></td>
                        <th>Data:</th>
                        <td><?php echo "$DataM";?></td>
                </tr>
                <tr>
                        <td> </td>
                        <td><select id="n5" name="n5"></select></td>
                        <th>Hora:</th>
                        <td><?php echo "$hora";?></td>
                </tr>
                <tr>
                        <td colspan="4"><div onclick="ntc=false;return form_check();" class="btn1"> Registar Chamada </div></td>
                </tr>
        </table>
</form>
<?php
}else{
        header("Location: ./php/logout.php");
}
?>
</div>

PHP class:

<?php class MakeTipificacao{
    protected $conn;
         public function __construct(){
            $this->DbConnect();
        }
         protected function DbConnect(){
            $host="localhost";
            $user="root";
            $password=null;
            $db="sisap";
            $this->conn = mysql_connect($host,$user,$password) OR die("Unable to connect to the database");
            mysql_select_db($db,$this->conn) OR die("can not select the database $db");
            return TRUE;
        }
         public function callcenter(){
            $sql = "SELECT * FROM callcenter order by callcenter";
            $res = mysql_query($sql,$this->conn);
            $cc = '<option></option>';
            while($row = mysql_fetch_array($res)){
                $cc .= '<option value="' . $row['id'] . '">' . $row['callcenter'] . '</option>';
            }
            return $cc;
        } 
               public function n1(){
            $sql = "SELECT * FROM regcall_nivel1 order by class";
            $res = mysql_query($sql,$this->conn);
            $n1 = '<option></option>';
            while($row = mysql_fetch_array($res)){
                $n1 .= '<option value="' . $row['id'] . '">' . $row['class'] . '</option>';
            }
            return $n1;
        }
         public function n2(){
            $sql = "SELECT * FROM regcall_nivel2 WHERE id_reg1=".$_POST['id'];
            $res = mysql_query($sql,$this->conn);
            $n2 = '<option></option>';
            $n2.=$sql;
            while($row = mysql_fetch_array($res)){
                $n2 .= '<option value="' . $row[0] . '">' . $row['class'] . '</option>';
            }
            return $n2;
        }
                public function n3(){
            $sql = "SELECT * FROM regcall_nivel3 WHERE id_reg2=$_POST[id]";
            $res = mysql_query($sql,$this->conn) or die (mysql_error);
            $n3 = '<option></option>';
            while($row = mysql_fetch_array($res)){
                $n3 .= '<option value="' . $row['id'] . '">' . $row['class'] . '</option>';
            }
            return $n3; 
       } 
               public function n4(){
            $sql = "SELECT * FROM regcall_nivel4 WHERE id_reg3=".$_POST['id'];
            $res = mysql_query($sql,$this->conn);
            $n4 = '<option></option>';
            while($row = mysql_fetch_array($res)){
                $n4 .= '<option value="' . $row['id'] . '">' . $row['class'] . '</option>';
            }
            return $n4;
        }
        public function n5(){
            $sql = "SELECT * FROM regcall_nivel5 WHERE id_reg4=".$_POST['id'];
            $res = mysql_query($sql,$this->conn);
            $n5 = '<option></option>';
            while($row = mysql_fetch_array($res)){
                $n5 .= '<option value="' . $row['id'] . '">' . $row['class'] . '</option>';
            }
            return $n5;
        }
}
$opt = new MakeTipificacao();?>

JS

$(document).ready(function(){
    $("select#n2").attr("disabled","disabled");
    $("select#n3").attr("disabled","disabled");
    $("select#n4").attr("disabled","disabled");
    $("select#n5").attr("disabled","disabled");
    
    $("select#n1").change(function(){
        $("select#n2").attr("disabled","disabled");
        $("select#n3").attr("disabled","disabled");
        $("select#n4").attr("disabled","disabled");
        $("select#n5").attr("disabled","disabled");
        
        $("select#n2").html("<option>wait...</option>");
        $("select#n3").html("<option></option>");
        $("select#n4").html("<option></option>");
        $("select#n5").html("<option></option>");
        
        var id = $("select#n1 option:selected").attr('value');
        $.post("./regcallv3/n2.php", {id:id}, function(data){
            $("select#n2").removeAttr("disabled");
            $("select#n2").html(data);
        });
    });
    $("select#n2").change(function(){
        $("select#n3").attr("disabled","disabled");
        $("select#n4").attr("disabled","disabled");
        $("select#n5").attr("disabled","disabled");
        
        $("select#n3").html("<option>wait...</option>");
        $("select#n4").html("<option></option>");
        $("select#n5").html("<option></option>");
        
        var id = $("select#n2 option:selected").attr('value');
        $.post("./regcallv3/n3.php", {id:id}, function(data){
            $("select#n3").removeAttr("disabled");
            $("select#n3").html(data);
        });
    });
    $("select#n3").change(function(){
        $("select#n4").attr("disabled","disabled");
        $("select#n5").attr("disabled","disabled");
        
        $("select#n4").html("<option>wait...</option>");
        $("select#n5").html("<option></option>");
        
        var id = $("select#n3 option:selected").attr('value');
        $.post("./regcallv3/n4.php", {id:id}, function(data){
            $("select#n4").removeAttr("disabled");
            $("select#n4").html(data);
        });
    });
    $("select#n4").change(function(){
        $("select#n5").attr("disabled","disabled");
        $("select#n5").html("<option>wait...</option>");
        var id = $("select#n4 option:selected").attr('value');
        $.post("./regcallv3/n5.php", {id:id}, function(data){
            $("select#n5").removeAttr("disabled");
            $("select#n5").html(data);
        });
    });
});

Obrigado desde já para a disponibilidade :D


-----------------------------------Obrigado,xSnake75

Share this post


Link to post
Share on other sites
mjamado

E continuas com a estrutura errada...  :smoke: Vais longe, vais...


"Para desenhar um website, não tenho que saber distinguir server-side de client-side" - um membro do fórum que se auto-intitula webdesigner. Temo pelo futuro da web.

Share this post


Link to post
Share on other sites
xsnake75

o erro de estrutura do hr e do script dentro da tabela está removido... o que pretendia saber, se possivel, é se existe mais algum erro para alem desses :S

gostava tambem de ter alguma ajuda visto que nao sou grande frequentador deste tipo de scripts... alem de que estou pela primeira vez a trabalhar com jquery :S

ando ja a bater com a cabeça nas paredes e já ando pelos caminhos dos headers e tudo

:wallbash:


-----------------------------------Obrigado,xSnake75

Share this post


Link to post
Share on other sites
rumbafum

tens erro em que IE? No IE9?

consegues identificar algum erro de JS usando o DeveloperTools do IE?

Share this post


Link to post
Share on other sites
xsnake75

estou a trabalhar com o IE7... mas seja qual a versao os valores que entram no post nao sao assumidos na pagina 'select.class.php' ... e nao me aparece qualquer erro sugestivo... apenas o indicativo do php que o post x nao está definido


-----------------------------------Obrigado,xSnake75

Share this post


Link to post
Share on other sites
rumbafum

Bem então o que está a acontecer é que não está a preencher o select com as opções devolvidas no $.post.

podes sempre tentar usar o método append() em vez do html():

em vez de :

$("select#n2").html(data);

usar:

$("select#n2").append(data);

Se isto não funcionar diria que pode ter a ver com caracteres estranhos nas opções que vais buscar, como tabs, enters etc...

ps: uma dica extra... Se os teus controlos têm um id, usa isso no selector apenas em vez de colocares tag e id como estás a fazer que ganhas em tempo de execução

ficaria assim: $("#n2").append(data);

Share this post


Link to post
Share on other sites
xsnake75

Bem então o que está a acontecer é que não está a preencher o select com as opções devolvidas no $.post.

podes sempre tentar usar o método append() em vez do html():

em vez de :

$("select#n2").html(data);

usar:

$("select#n2").append(data);

Se isto não funcionar diria que pode ter a ver com caracteres estranhos nas opções que vais buscar, como tabs, enters etc...

ps: uma dica extra... Se os teus controlos têm um id, usa isso no selector apenas em vez de colocares tag e id como estás a fazer que ganhas em tempo de execução

ficaria assim: $("#n2").append(data);

tambem nao é do append... a função html está lá para limpar o que o select tiver e inserir o que vem da BD...

Obrigado pela disponibilidade :cheesygrin:


-----------------------------------Obrigado,xSnake75

Share this post


Link to post
Share on other sites
rumbafum

Isso não é bem assim a função .html() de jquery usa a propriedade innerHTML que pode não ser mapeada no DOM da mesma forma para todos os browsers.

Para ter a certeza que está a funcionar podes sempre usar javascript puro também:

document.getElementById('n2').innerHTML = data;

de qualquer forma... eu verificava a questão dos caracteres... De certeza que não vem um \t ou \n do servidor? É que aí o IE também se passa :cheesygrin:

Share this post


Link to post
Share on other sites
xsnake75

Isso não é bem assim a função .html() de jquery usa a propriedade innerHTML que pode não ser mapeada no DOM da mesma forma para todos os browsers.

Para ter a certeza que está a funcionar podes sempre usar javascript puro também:

document.getElementById('n2').innerHTML = data;

de qualquer forma... eu verificava a questão dos caracteres... De certeza que não vem um \t ou \n do servidor? É que aí o IE também se passa :cheesygrin:

Mas um \t ou \n na BD ou no php?


-----------------------------------Obrigado,xSnake75

Share this post


Link to post
Share on other sites
rumbafum

BD, porque é aí que vais buscar dados para construir as opções da combo

e php também se andas a colocar caracteres manhosos pelo meio do html que queres passar para a combo - mas isso não me parece pelo código que mostraste

e entretanto experimenta com o document.getElementById.

Share this post


Link to post
Share on other sites
xsnake75

BD, porque é aí que vais buscar dados para construir as opções da combo

e php também se andas a colocar caracteres manhosos pelo meio do html que queres passar para a combo - mas isso não me parece pelo código que mostraste

e entretanto experimenta com o document.getElementById.

Mudei o collation na bd para o latin1_general_cs por causa dos acentos e das cedilhas mas o erro continua... entretanto eu posso colocar java script puro assim misturado com o jquery 'à papo seco'? (desculpem mas nao arranjei expressão melhor xD)


-----------------------------------Obrigado,xSnake75

Share this post


Link to post
Share on other sites
xsnake75

yep, na verdade é tudo javascript :)

Continua a nao resultar... experimentei ainda colocar argumentos e passar o post para lá mas sem sucesso tambem :thumbsup:


-----------------------------------Obrigado,xSnake75

Share this post


Link to post
Share on other sites
xsnake75

como assim? mostra lá o que fizeste

aqui vai:

Pagina html

<div style="position:static;">
<?php
if(isset($_SESSION['user'])){

$DataM=date('d-m-Y');
$hora=date('H:i:s');
?>
<link rel="stylesheet" type="text/css" href="./css/altpass.css"/>
<script type="text/javascript" language="Javascript" src="./regcallv3/jquery-1.4.1.js"></script>	
<script type="text/javascript" language="Javascript" src="./regcallv3/script.js"></script>
<script type="text/javascript" language="Javascript">
function form_check(){
   if( document.reg.nic.value!='' && document.reg.n1.value!='' && document.reg.n2.value!='' ) {
      //--------------------------------------------------------------------
      var numero = document.reg.nic.value;
      if(isNaN(numero)){
         alert('NIC so aceita digitos!');
         field.focus();
	 return false;
      }
      else{
         if(document.reg.nic.value.length<10){
            alert('O NIC necessita de 10 digitos!');
            return false;
         }
      }
      //--------------------------------------------------------------------
      if(document.reg.n1.value=='0'){
         alert('É necessário indicar uma classificação!');
         return false;
      }
      //--------------------------------------------------------------------
      if(document.reg.n2.value==''){
         alert('É necessário indicar uma classificação! ');
         return false;
      }
      //--------------------------------------------------------------------
      var x = confirm('Pretende registar a chamada?');
      if(x == true){
	document.reg.submit();
        return true;
      }
      else{
         return false;
      }
   }
   else{
      alert('É necessário preencher todos os campos!');
      return false;
}
}
</script>

<h2>Registo de Chamadas</h2>
<br>
<span>Versão 3</span>

<?php require "./regcallv3/select.class.php"; ?>
<form method="post" id="reg" name="reg" onsubmit="return form_check();" action="./php/insertcall.php">
<table width="50%" border="0">
	<tbody>
		<tr><hr></tr>
		<tr>
			<th>Tipificação:</th>
			<td>
				<select id="n1" name="n1">
					<?php echo $opt->n1();?>
				</select>
			</td>
			<th>CallCenter:</th>
			<td>
				<select id="cc" name="cc">
				<?php
					if($_SESSION['team']!="Recursos Técnicos"){
						$achacc=mysql_query("SELECT callcenter.id,callcenter.callcenter FROM callcenter INNER JOIN team ON callcenter.id=team.callcenter_id WHERE team.nometeam='".$_SESSION['team']."'");
						while($row=mysql_fetch_row($achacc)){
							echo "<option value='".$row[0]."' selected disabled='disabled'>".$row[1]."</option>";
						}
					}else{
						echo "<option></option>";
						$listacc=mysql_query("SELECT * FROM callcenter order by callcenter");
						while($row=mysql_fetch_assoc($listacc)){
							echo "<option value='".$row['id']."'>".$row['callcenter']."</option>";
						}
					}
				?>
				</select>
			</td>
		</tr>
		<tr>
			<td> </td>
			<td><select id="n2" name="n2"></select></td>
			<th>NIC:</th>
			<td><input type="text" id="nic" name="nic" maxlength="10"/></td>
		</tr>
		<tr>
			<td> </td>
			<td><select id="n3" name="n3"></select></td>
			<th>Username:</th>
			<td><?php echo $_SESSION['nome'];?></td>
		</tr>
		<tr>
			<td> </td>
			<td><select id="n4" name="n4"></select></td>
			<th>Data:</th>
			<td><?php echo "$DataM";?></td>
		</tr>
		<tr>
			<td> </td>
			<td><select id="n5" name="n5"></select></td>
			<th>Hora:</th>
			<td><?php echo "$hora";?></td>
		</tr>
		<tr>
			<td colspan="4"><div onclick="ntc=false;return form_check();" class="btn1"> Registar Chamada </div></td>
		</tr>
	</tbody>
</table>
</form>
<?php
}else{
header("Location: ./php/logout.php");
}
?>
</div>

PHP class

<?php
class MakeTipificacao{
    protected $conn;

        public function __construct(){
            $this->DbConnect();
        }

        protected function DbConnect(){
            $host="localhost";
		$user="root";
		$password=null;
		$db="sisap";
            $this->conn = mysql_connect($host,$user,$password) OR die("Unable to connect to the database");
            mysql_select_db($db,$this->conn) OR die("can not select the database $db");
            return TRUE;
        }

	public function callcenter(){
            $sql = "SELECT * FROM callcenter order by callcenter";
            $res = mysql_query($sql,$this->conn);
            $cc = '<option></option>';
            while($row = mysql_fetch_array($res)){
                $cc .= '<option value="' . $row['id'] . '">' . $row['callcenter'] . '</option>';
            }
            return $cc;
        }

        public function n1(){
            $sql = "SELECT * FROM regcall_nivel1 order by class";
            $res = mysql_query($sql,$this->conn);
            $n1 = '<option></option>';
            while($row = mysql_fetch_array($res)){
                $n1 .= '<option value="' . $row['id'] . '">' . $row['class'] . '</option>';
            }
            return $n1;
        }

        public function n2(){
            $sql = 'SELECT * FROM regcall_nivel2 WHERE id_reg1="'.$_POST['id'].'"';
            $res = mysql_query($sql,$this->conn);
            $n2 = '<option>'.$d.'</option>';
            while($row = mysql_fetch_array($res)){
                $n2 .= '<option value="' . $row[0] . '">' . $row['class'] . '</option>';
            }
            return $n2;
        }

	public function n3(){
            $sql = "SELECT * FROM regcall_nivel3 WHERE id_reg2=$_POST[id]";
            $res = mysql_query($sql,$this->conn) or die (mysql_error);
            $n3 = '<option></option>';
            while($row = mysql_fetch_array($res)){
                $n3 .= '<option value="' . $row['id'] . '">' . $row['class'] . '</option>';
            }
            return $n3;
        }

	public function n4(){
            $sql = "SELECT * FROM regcall_nivel4 WHERE id_reg3=".$_POST['id'];
            $res = mysql_query($sql,$this->conn);
            $n4 = '<option></option>';
            while($row = mysql_fetch_array($res)){
                $n4 .= '<option value="' . $row['id'] . '">' . $row['class'] . '</option>';
            }
            return $n4;
        }
	public function n5(){
            $sql = "SELECT * FROM regcall_nivel5 WHERE id_reg4=".$_POST['id'];
            $res = mysql_query($sql,$this->conn);
            $n5 = '<option></option>';
            while($row = mysql_fetch_array($res)){
                $n5 .= '<option value="' . $row['id'] . '">' . $row['class'] . '</option>';
            }
            return $n5;
        }
}

$opt = new MakeTipificacao();
?>

PHP 'recursivo':

<?php
require "./select.class.php";
echo $opt->n2();
?>

jquery:

$(document).ready(function(){
$("#n2").attr("disabled","disabled");
$("#n3").attr("disabled","disabled");
$("#n4").attr("disabled","disabled");
$("#n5").attr("disabled","disabled");

$("#n1").change(function(){
	$("#n2").attr("disabled","disabled");
	$("#n3").attr("disabled","disabled");
	$("#n4").attr("disabled","disabled");
	$("#n5").attr("disabled","disabled");

	$("#n2").html("<option>wait...</option>");
	$("#n3").html("<option></option>");
	$("#n4").html("<option></option>");
	$("#n5").html("<option></option>");

	var id =$("#n1 option:selected").attr('value');
	$.post("./regcallv3/n2.php", {id:id}, function(data){
		$("#n2").removeAttr("disabled");
		$("#n2").append(data);
	});
});
$("#n2").change(function(){
	$("#n3").attr("disabled","disabled");
	$("#n4").attr("disabled","disabled");
	$("#n5").attr("disabled","disabled");

	$("#n3").html("<option>wait...</option>");
	$("#n4").html("<option></option>");
	$("#n5").html("<option></option>");

	var id = $("#n2 option:selected").attr('value');
	$.post("./regcallv3/n3.php", {id:id}, function(data){
		$("#n3").removeAttr("disabled");
		$("#n3").html(data);
	});
});
$("#n3").change(function(){
	$("#n4").attr("disabled","disabled");
	$("#n5").attr("disabled","disabled");

	$("#n4").html("<option>wait...</option>");
	$("#n5").html("<option></option>");

	var id = $("#n3 option:selected").attr('value');
	$.post("./regcallv3/n4.php", {id:id}, function(data){
		$("#n4").removeAttr("disabled");
		$("#n4").html(data);
	});
});
$("#n4").change(function(){
	$("#n5").attr("disabled","disabled");
	$("#n5").html("<option>wait...</option>");
	var id = $("#n4 option:selected").attr('value');
	$.post("./regcallv3/n5.php", {id:id}, function(data){
		$("#n5").removeAttr("disabled");
		$("#n5").html(data);
	});
});
});


-----------------------------------Obrigado,xSnake75

Share this post


Link to post
Share on other sites
xsnake75

e como mando o post? mantenho isto certo?

$.post("./regcallv3/n2.php", {id:id}, function(data){
                        $("#n2").removeAttr("disabled");
                        $("#n2").append(data);
                });


-----------------------------------Obrigado,xSnake75

Share this post


Link to post
Share on other sites
rumbafum

manténs o post da mesma forma como tinhas mas substituis o que tinhas dentro da chamada e tens que concatenar o resto da criação do select.

Não olhaste para o link que te enviei?

onde coloquei isto:

var data = '<select id="n2"><option value="'+ id +'">'+ id +'</option></select>';
                $("#n2").removeAttr("disabled");
                $("#span1").html(data);

tu substituis pelo post.

E usas dentro do post, neste caso para o código de preenchimento do n2 para os outros será igual mudando os ids claro:

                $("#n2").removeAttr("disabled");
                $("#span1").html( '<select id="n2">' + data + '</select>');

O que fiz no que te enviei foi colocar o select encapsulado por um span pois aí o IE já usa correctamente a propriedade innerHTML do span ao contrário do que acontece com o select. Este problema é conhecido no IE7/IE6 etc.

Portanto se queres que funcione em IE's mais antigos vais ter que usar um esquema deste tipo.

Share this post


Link to post
Share on other sites
xsnake75

manténs o post da mesma forma como tinhas mas substituis o que tinhas dentro da chamada e tens que concatenar o resto da criação do select.

Não olhaste para o link que te enviei?

onde coloquei isto:

var data = '<select id="n2"><option value="'+ id +'">'+ id +'</option></select>';
                $("#n2").removeAttr("disabled");
                $("#span1").html(data);

tu substituis pelo post.

E usas dentro do post, neste caso para o código de preenchimento do n2 para os outros será igual mudando os ids claro:

                $("#n2").removeAttr("disabled");
                $("#span1").html( '<select id="n2">' + data + '</select>');

O que fiz no que te enviei foi colocar o select encapsulado por um span pois aí o IE já usa correctamente a propriedade innerHTML do span ao contrário do que acontece com o select. Este problema é conhecido no IE7/IE6 etc.

Portanto se queres que funcione em IE's mais antigos vais ter que usar um esquema deste tipo.

Tentei realizar isto e tambem nao deu em nada... o problema continua a vir do php que nao assume o post


-----------------------------------Obrigado,xSnake75

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.