Ir para conteúdo
Fórum Script Brasil

moisesf

Membros
  • Total de itens

    45
  • Registro em

  • Última visita

Posts postados por moisesf

  1. function converte_convenios($outros_convenios)
    {    
    $rray_conv=(trim($outros_convenios));
    
    $lista=array($rray_conv);
    
    foreach($lista as $selecionados)
    {
    $separa = explode(',', $selecionados);
    for ($i=0;$i<count($separa);$i++)
      {
      $convenio = $separa[$i];
      //echo "$convenio <br />";        
                
      $sql = "insert into lista_convenios (convenio) values('$convenio')";
      $sql = mysql_query($sql) or die ("Erro na Gravação na Lista dos Convênios");
      }
    }
    
    }

    Perfeito!

    Muito obrigado.

    Imaginei que seria necessário saber quantos convênios haveriam na lista separada por vírgula, mas não sabia como fazer.

    Já testei e está tudo ok.

    Abraços

    Obrigado novamente

  2. Olá amigos, estou com um pequeno problema.

    Tenho num formulário um campo texto (outros_convenios) que virá com valores separados por vírgula Exemplo: Nome do convenio 1, nome do convenio 2, nome do convenio3, assim por diante.

    Fiz o segunte:

    function converte_convenios($outros_convenios){    
    
    
    $rray_conv=(trim($outros_convenios));
    
    $lista=array($rray_conv);
    
    
    foreach($lista as $selecionados) {
        
        
    $separa = explode(',', $selecionados);
    $convenio = $separa[0];
        echo "$convenio <br />";        
                
    $sql = "insert into lista_convenios (convenio) values('$convenio')";
    $sql = mysql_query($sql) or die ("Erro na Gravação na Lista dos Convênios");
    }
    
    }

    Este loop está registrando apenas o primeiro valor, como faço para registrar todos os valores?

    Entendo que 0 "$convenio = $separa[0]" que faz a separação, mas poderá haver apenas um convênio ou muitos convênios separados por vírgula.

    Talvez seja necessário saber quantos convênios haverá na lista separados por vírgula para calcular o loop?

    Obrigado;

  3. Fiz o seguinte para funcionar:

    Dei o loop em todos os dados para achar o cep e somente depois converti a string nome_clinica para sem acento e sem cedilha.

    Mas o problema agora é que acha somente com o nome da clínica idêntico.

    Como fazer este tipo de comparação no if, para listar também as que iniciam com clínicas?

    Por exemplo, se na busca colocar apenas clínica, listaria todas as clínicas daquele cep que encontrei no select.

    $sql = "select * from medicos_end_atend  where cep_clinica='$cep_clinica'";
    $pesquisa_endereco=mysql_query($sql) or die ("Não foi possível realizar a consulta nos  endereços de Atendimento");
    $contareg = mysql_num_rows($pesquisa_endereco);
      
     if ( $contareg >= 1 ) {
          
    while($linha=mysql_fetch_array($pesquisa_endereco)){
    $nomeencontrado=$linha["nome_clinica"];
    $comparanome=stringRetiraAcento($nomeencontrado);
    
    }
    
    
    
    if ($comparanome == $nomeclinica) {
    echo '<span style="color:red;">Registro Encontrado</span>';
      } else {
    echo '<span style="color:green;">Registro não Encontrado</span>';
    
    }
    }

  4. você não deve colocar nenhum tipo de sintaxe na string da query ...

    fassa o select normalmente depois na hora de dar o print / echo ou passar o valor a uma variavel você chama a function.

    Mas eu preciso de comparar o que há no banco de dados sem acentos e cedilhas.

    Ou seja, deixar tanto a palavra de busca e o que há no banco de dados no mesmo formato para se fazer a comparação, desta forma acharia tanto com acento e sem acento na busca.

    Ou estou usando o método errado?

    Tem alguma ideia?

    Se eu der um select em tudo para depois comparar, acho que ficaria muito pesado quando o banco tiver muitos registros.

  5. Fiz uma função que retira todos os acentos da string e a chamo duas vezes.

    A primeira que vem do form com o nome $nome_clinica

    $nomeclinica=stringRetiraAcento($nome_clinica);

    A segunda chamo dentro do select.

    $sql = "select * from medicos_end_atend where ".stringRetiraAcento('nome_clinica')." REGEXP '$nomeclinica' and cep_clinica='$cep_clinica'";

    A string que vem do form está sendo convertida, mas a que está vindo do banco de dados não.

    Será que minha chamada no select está errada?

    $sql = "select * from medicos_end_atend  where ".stringRetiraAcento('nome_clinica')." REGEXP '$nomeclinica' and cep_clinica='$cep_clinica'";

    Obrigado;

  6. Olá amigos. Acabou que achei uma forma de dar certo, se houver uma forma melhor podem postar.

    [cod]

    foreach($_POST['especialidade'] as $valor) {

    $opcoes [] = $valor;

    }

    foreach($opcoes as $selecionados) {

    $lista = explode("/", $selecionados);

    $cod_especialidade = $lista[0];

    $medico_especialidade = $lista[1];

    $sql = "insert into medicos_especialidades (cod_especialidade,medico_especialidade)values('$cod_especialidade','$medico_especialidade')";

    $sql = mysql_query($sql) or die ("Erro na Gravação dos Dados da Especialidade Médica!!!");

    }

    [/cod]

    }

  7. Uai, Primeiro joga num array os valores, independente se o cara selecionou 1 ou 1000 opções, depois você faz um loop nesse mesmo array

    simplificando:

    foreach($_POST['checkbox'] as $valor) {
     $opcoes [] = $valor;
    }
    depois é executar o mysql dentro do loop das opções
    foreach($opcoes as $selecionados) {
      mysql_query("insert into table (espec) values ($selecionados)");
    }

    Não seria isso?

    Não dá certo, pois o campo checkbox está passando dois valores em cada escolha que é cod_especialidade e medico_especialidade

    O value está sendo passado assim: value='$cod_especialidade,$especialidade'

    $sql = "insert into medicos_especialidades (cod_especialidade,medico_especialidade)values('$cod_especialidade','$medico_especialidade')";

  8. Tenho um foreach que funciona perfeitamente com um único valor que vem do formulário de campos checkbox.

    Se seleciono várias opções o foreach grava de um a um no banco de dados.

    O problema é que no campo value preciso de passar dois valores.

    Esse imput é preenchido no cadastro para o cliente fazer múltiplas escolhas, tenho que passar dois valores, código e nome da especialidade.

    echo "<input type='checkbox' name='especialidade[]' value=$cod_especialidade,$especialidade' id='cod_especialidade'/>";

    echo "<label for='checkbox' id='checkbox'> $especialidade</label><br />";

    Quando o cliente clica em Registrar chama a função registra especialidades, como abaixo.

    registra_especialidades($especialidade);

    Se eu passar apenas um valor na propriedade value do checkbox, gravo cada escolha do cliente sem problemas, mas preciso de gravar dois valores como coloquei no value acima.

    Só estou conseguindo pegar o primeiro valor, o segundo valor(cod_especialidade) não estou pegando($especialidade)

    Ou seja acho que não está entendendo o separador.

    Como posso arrumar isso?

    Função Registra Especialidades

    function registra_especialidadeS($especialidade){

    foreach($_POST["especialidade] as $espec)

    {

    echo "$espec <br />";//APENAS PARA VERIFICAR OS DADOS SE ESTÃO SENDO ENVIADOS

    $lista=array($espec);

    $cod_especialidade = $lista[0];

    $medico_especialidade = $lista[0][1];

    $sql = "insert into medicos_especialidades (cod_especialidade,medico_especialidade)values('$cod_especialidade','$medico_especialidade')";

    $sql = mysql_query($sql) or die ("Erro na Gravação dos Dados da Especialidade Médica!!!");

    }

    }

    Este abaixo funciona perfeitamente, mas pega somente um valor de cada vez.

    foreach($_POST["especialidade"] as $espec)

    {

    echo "$espec <br />";//APENAS PARA VERIFICAR OS DADOS SE ESTÃO SENDO ENVIADOS

    $sql = "insert into medicos_especialidades (espec)values('$espec')";

    $sql = mysql_query($sql) or die ("Erro na Gravação dos Dados da Especialidade Médica!!!");

    }

    }

  9. Tenho um formulário com checkbox, que me retornarão valores separados por vírgula com o uso do implode.

    A contagem do retorno já descobri como faz, usando count();

    $espec = $_POST["especialidade"];

    $cod_especialidades= implode(",",$espec);

    echo $cod_especialidades;

    $cod_cliente = $_POST["cod_cliente"];

    Exemplo do retorno que receberei do form:

    cod_cliente=21";

    cod_especialidade= "12, 14, 55, 102";

    Minha tabela contem os seguntes campos:

    cod_cliente e cod_especialidade.

    $total_especialidades=count($cod_especialidades);

    for ($i = 1; $i <= $total_especialidades; $i++) {

    echo $i;

    $sql = "insert into especialidade (cod_cliente,cod_especialidade)values('$cod_cliente','$cod_especialidade')";

    $sql = mysql_query($sql) or die ("Erro na Gravação!!!");

    }

    Preciso que conte os cod_especialidade que retornaram do form e sejam gravados de um a um.

    No caso acima foram 4 cod_especialidades.

    Então gravaria 4X cada cod_especialidade para o mesmo cod_cliente, mas claro que linhas diferentes.

    Podem me ajudar?

    Grato;

    MoisésF

    Vou tentar FOREACH, no exemplo abaixo eu consegui mostrar os códigos separados, vou ver se faz o mesmo com o banco de dados.

    foreach($_POST["especialidade] as $espec)

    {

    echo $espec;

    echo "<script language=\"javascript\" type=\"text/javascript\"> alert(\"Ola mundo ;p $espec \"); </script>";

    }

    ?>

  10. Fiz isso mesmo, e continua retornando strig vasia.

    O valor passasenha está indo corretamente

    Mas o retorno desse valor não está vindo.

    Ao menos que eu coloque o comando dentro da function para joar o resultfinal num campo texto e apanhar o resultado de lá.

    var
      Form1: TForm1;
      resultfinal : string;
    
    implementation
    
    {$R *.dfm}
    function TForm1.criptpass(passasenha:string):string;
     var
    x,y : Integer;
    NovaSenha : String;
    aSenha: string;
    chave: string;
    onde: string;
    resultfinal:string;
    begin
                            //////////
    Chave := 'Kalos';
    aSenha:=passasenha;
    for x := 1 to Length( Chave ) do begin
    NovaSenha := '';
    for y := 1 to Length( aSenha ) do
    NovaSenha := NovaSenha + chr( (Ord(Chave[x]) xor Ord(aSenha[y])));
    aSenha := NovaSenha;
    end;
    resultfinal := aSenha;
    //showmessage(resultfinal);
    
                //////////////
    
    
      end;
    
    
    procedure TForm1.DBGrid1Click(Sender: TObject);
    var passasenha: string;
    
    begin
      //ShowMessage('Clicou no DBGrid!');
    
    
    pertencetxt.text:=ClientDataset1.FieldByName('pertence').AsString;
    nometxt.text:=ClientDataSet1.FieldByName('nome').AsString;
    
    passasenha:=ClientDataSet1.FieldByName('senha').AsString;
    
    criptpass(passasenha);
    
    showmessage(resultfinal);
    
    //senhatxt.text:=ClientDataSet1.FieldByName('senha').AsString;
    senhatxt.text:=criptpass(passasenha);
    emailtxt.text:=ClientDataSet1.FieldByName('email').AsString;
    descricaotxt.text:=ClientDataSet1.FieldByName('descricao').AsString;
    pertencetxt.SetFocus;
    
    if ClientDataSet1.state in [dsedit, dsinsert] = false then
    begin
    ClientDataSet1.Edit;{A TABELA ENTRA EM MODO DE EDIÇÃO}
    
          end;
    
    end;

  11. Tenho a função abaixo que retorna um valor resultado final, preciso desse resultado final numa procedure, como fazer isso?

    procedure DBGrid1Click(Sender: TObject);
    function criptpass(passasenha:string):string;
    public
        { Public declarations }
    
    end;
    
    var
      Form1: TForm1;
    
    implementation
    
    
    
    function TForm1.criptpass(passasenha:string):string;
     var
    x,y : Integer;
    NovaSenha : String;
    aSenha: string;
    chave: string;
    onde: string;
    resultfinal:string;
    begin
                            //////////
    Chave := 'Kalos';
    aSenha:=passasenha;
    for x := 1 to Length( Chave ) do begin
    NovaSenha := '';
    for y := 1 to Length( aSenha ) do
    NovaSenha := NovaSenha + chr( (Ord(Chave[x]) xor Ord(aSenha[y])));
    aSenha := NovaSenha;
    end;
    resultfinal := aSenha;
    //showmessage(resultfinal);
    
                //////////////
    
    
      end;
    Abaixo a procedure que passa o valor: PASSASENHA para a função CRIPTPASS e deveria pegar o result final da função criptpass e devolver para essa procedure, é possível?
    procedure TForm1.DBGrid1Click(Sender: TObject);
    var passasenha,resultfinal,ani: string;
    
    begin
    
    pertencetxt.text:=ClientDataset1.FieldByName('pertence').AsString;
    nometxt.text:=ClientDataSet1.FieldByName('nome').AsString;
    passasenha:=ClientDataSet1.FieldByName('senha').AsString;
    
    criptpass(passasenha);//CHAMA A FUNÇÃO CRIPT PASS
    
    showmessage(resultfinal);
    
    //senhatxt.text:=ClientDataSet1.FieldByName('senha').AsString;
    
    senhatxt.text:=resultfinal;//AQUI DEVERIA ENTRAR RESULTFINAL
    
    emailtxt.text:=ClientDataSet1.FieldByName('email').AsString;
    descricaotxt.text:=ClientDataSet1.FieldByName('descricao').AsString;
    pertencetxt.SetFocus;
    
    if ClientDataSet1.state in [dsedit, dsinsert] = false then
    begin
    ClientDataSet1.Edit;{A TABELA ENTRA EM MODO DE EDIÇÃO}
    
          end;
    
    end;

    Grato;

    Moisés

  12. DA FORMA QUE FIZ AGORA, DEU CERTO, AGUÉM TEM ALGUMA IDÉIA MAIS LIMPA QUE ESTA?

    var
    
    SOMA0,SOMA1,SOMA2,i: Integer;
    
    
    TOTAL: STRING;
    begin
    SOMA1:=0;
    SOMA0:=0;
    
     for I := 0 to ComponentCount -1 do
        begin
    if Components[I] is TDBEdit then
    if TDBEdit(Components[I]).Text = '' then  BEGIN
     SOMA1:=SOMA1+1;
    END;
    SOMA0:=SOMA1;
    
    end;
            TOTAL:= INTTOSTR(SOMA0);
    
      
    
    IF TOTAL = '4' THEN  begin
     MessageBox (Application.Handle, 'Preencha ao menos um campo!', 'Ops...', MB_OK );
     end
     else begin
    
    if ADOQuery1.state in [dsedit, dsinsert]  then  begin
    ADOQuery1.Post;
    ADOQuery1.Refresh;
    end;
    end;

  13. ESTOU USANDO O CÓDIGO ABAIXO PARA SABER SE EXISTE AO MENOS UM CAMPO PREENCHIDO.

    O FORMULÁRIO DEVE HAVER AO MENOS UM CAMPO, PODE SER QUALQUER CAMPO PREENCHIDO.

    var soma: integer; sm: integer;
          TOTAL,SM1,SM2,SM3,SM4: Integer;
    begin
    
    IF DBEdit1.text='' THEN BEGIN
    SM1:= 0;
    END;
    if DBEdit2.text='' THEN BEGIN
    SM2:= 0;
    END;
    IF DBEdit3.text='' THEN BEGIN
    SM3:= 0;
    END;
    IF DBEdit4.text='' THEN BEGIN
    SM4:= 0;
    END;
    TOTAL:= SM1+SM2+SM3+SM4;
    
      IF TOTAL <> 0 THEN BEGIN
    
    if ADOQuery1.state in [dsedit, dsinsert]  then
    ADOQuery1.Post;
    ADOQuery1.Refresh
    end
    else begin
    MessageBox (Application.Handle, 'Preencha ao menos um campo!', 'Ops...', MB_OK );
       END;
    MAS ACHEI QUE ESTE CÓDIGO QUE ESCREVI DARIA PARA MELHORAR EM MUITO. EU HAVIA PENSADO EM CRIAR UM LOOP E A CADA CAMPO EM BRANCO, SOMARIA (1) NUMA VARIÁVEL. SE A VARIÁVEL FOR IGUAL A (4), POIS SÃO QUATRO CAMPOS, TODOS OS CAMPOS ESTARIAM EM BRANCO E RETORNARIA UMA MENSAGEM PARA PREENCHER AO MENOS UM CAMPO. MAS O CÓDIGO ABAIXO ESTÁ TOTALMENTE ERRADO, PODERIAM ME DAR UM DIREÇÃO? oBRIGADO
    for I := 0 to ComponentCount -1 do
        begin
           if Components[I] is TDBEdit then
              if TDBEdit(Components[I]).Text = '' then
             
                 SM1:= I;
                 SM2:= (SM1 + I)
    
        end;
               TOTAL:=intTostr(SM2);
            showmessage(SM2);  
    
    IF SM2 := '4' THEN BEGIN
    SHOWMESAGE('PREENCHA AO MENOS UM CAMPO!');
    
    END;
    
    ELSE BEGIN
    
    AQUI EU EXECUTARIA O CADASTRO, POI HÁ AO MENOS UM CAMPO PREENCHIDO
    
    END;
    
    
    END;

  14. Criei o arquivo pass.dat via delphi com os campos abaixo:

    Name : string[50];

    Pass: string[50];

    eMail : string[30];

    Description : LongInt;

    Como coloco os dados no DBGRID1, Cliquei 2x no dbgrid e adicionei os campos, mas não sei com colocar os registros nele.

    E estou chamando o arquivo desta forma:

    var

    Member: Tregistro ;

    F : file of Tregistro;

    begin

    AssignFile(F,'pass.dat') ;

    Reset(F) ;

    try

    while not Eof(F) do begin

    Read (F, Member) ;

    Como coloco os dados ono DBGRID1?

    end;

    finally

    CloseFile(F) ;

    end;

    end;

    Desde já Muito obrigado pela ajuda.

  15. Olá, poderiam dar uma olhada no código abaixo.

    Sempre usei este form, mas do nada parou de funcionar.

    if (isset($_POST['acao']) && $_POST['acao']== 'send_mail'){
    $ip2 = getenv("REMOTE_ADDR"); 
    $data=date("d/m/y");
    $horario=date("H:i:s");
    
    $nome = $_POST["nome"]; 
    $email = $_POST["email"]; 
    $msg = $_POST["mensagem"];
                        
    $remetente = "mail@myserver.com";             
    $para="prmoisesferreira@gmail.com";// manda o e-mail para minha conta
    $assunto= "Contato";
    $corpo="$assunto de: $nome";
    $msg .="\r\n\r\n";
    
    $msg ="<b>NOME:</b> <a href='mailto:$nome<$email>'>$nome</a> \r\n<br><b>Mensagem:</b> <br>$msg\r\n\r\n";
    $msg .="Email: $email \r\n";
    $msg .="IP: $ip2 \r\n";
    $msg .="Data de Envio: $data \r\n";
    $msg .="Horário de Envio: $horario \r\n";
    
    $headers = "MIME-Version: 1.0\r\n";
    $headers = "From: Contate-nos <$remetente>\r\n";
    $headers .= "Content-type: text/html; charset=iso-8859-1\r\n";
    $headers .= "Reply-To: $name <$email>\r\n";
    
    mail($para, $corpo, nl2br($msg), $headers);
    
    header("Location:index.php?pagina=mailenviado&titulo=Email Enviado");

  16. Preciso de passar um parâmetro em especial:var Slide =loopfor.split(","), antes da outra função,

    Onde está marcado /*colocados aqui*/.

    Colo levar o valor para lá?

    &lt;script>
    function MostraSlide_time(direcao){
    var direcao=direcao;
    window.rsp = rsp;               
     var s = "";
    
     var tmp=[];
     for (var x = 0; x < rsp.photoset.photo.length; x++) {
     photo = rsp.photoset.photo[x];
       
    tmp.push("http://farm"+photo.farm+ ".static.flickr.com/" +photo.server+ "/" +photo.id+ "_" +photo.secret+ "_b"+ ".jpg");
    
    
    }
    loopfor = tmp.join(",");
    
    
    
    var Slide =loopfor.split(","); [b]/*Preciso destes dados inserdos logo abaixo*/[/b]
    
    MostraSlidetime(direcao);
    
    }
    
    
    
    var Slide = ??? [b]/*colocados aqui*/[/b]
    var indSlide = 0;
    var ultSlide = Slide.length -1;
    
    
    function MostraSlidetime(direcao){
    this.direcao = direcao;
       indSlide = indSlide + direcao;
       if(indSlide > ultSlide){indSlide = 0};
       if(indSlide < 0) {indSlide = ultSlide};
       /*document.FigSlide.src = Slide[indSlide];*/
       foto = Slide[indSlide];
       alert(foto);
    document.getElementById("mostrafoto").style.background="url('" + foto  + "') no-repeat";   
    
    }
    
    </script>

  17. Ok, já arrumei, mas agora deu outro bode...

    Está pegando sempre a mesma imagem, não está incrementando mais "1" na tag "direcao".

    Fiz algumas modificações para uma função chamar outra, mas continua chamando apenas uma imagem sem incrementar a "direcao"

    Poderia dar uma olhada?

    &lt;script>
    function MostraSlide_time(direcao){
    var direcao=direcao;
    window.rsp = rsp;               
     var s = "";
     var tmp=[];
     for (var x = 0; x < rsp.photoset.photo.length; x++) {
     photo = rsp.photoset.photo[x];
       
    tmp.push("http://farm"+photo.farm+ ".static.flickr.com/" +photo.server+ "/" +photo.id+ "_" +photo.secret+ ".jpg");
    }
    
    
    loopfor = tmp.join(",");
    
    var Slide = loopfor.split(",");
    /*alert(Slide);*/
    var indSlide = 0;
    var ultSlide = Slide.length -1;
    MostraSlidetime(indSlide,ultSlide,direcao,Slide);
    }
    
    
    
    function MostraSlidetime(indSlide,ultSlide,direcao,Slide){
    // Função controla a seqüência de slides.
      this.indSlide = indSlide;
     this.ultSlide = ultSlide;
     this.loopfor = loopfor;
    this.direcao = direcao;
    
    
       indSlide = indSlide + direcao;
       if(indSlide > ultSlide){indSlide = 0};
       if(indSlide < 0) {indSlide = ultSlide};
       /*document.FigSlide.src = Slide[indSlide];*/
       foto = Slide[indSlide];
     alert(foto);
    document.getElementById("mostrafoto").style.background="url('" + foto  + "') no-repeat";   
    
    }
    
    
    
    
    </script>
    
    
    
    
    
    
     <style>
     #mostrafoto{
     width:960px;height:600px;
     }
    
     </style>
     </head>
      <body onload="MostraSlide_time(1);">
     <div id="mostrafoto"></div>
    
    
     &lt;script>
    
    function jsonFlickrApi(rsp){
    
     window.rsp = rsp;
      intervalo = window.setInterval("MostraSlide_time(1)", 5000);
     }
     </script>

×
×
  • Criar Novo...