Jump to content

cristianomg

Members
  • Content count

    139
  • Joined

  • Last visited

Community Reputation

0 Comum

About cristianomg

Informações Pessoais

  • Sexo
    Masculino

Recent Profile Visitors

953 profile views
  1. Preciso de uma orientação estou iniciando com programação para android, e tenho o seguinte caso. Possuo dois models Usuario e Anuncio, Quando eu crio um novo usuario e cadastro ele eu adiciono os seguintes dados: Quando eu salvo um anuncio do usuario acima por exemplo, eu quero implementar um contador e adicionar +1 no campo qtdAnuncio, ai vem minha pergunta Como eu posso fazer ao exemplo clicar no botão de cadastrar anuncio e colocar dentro de uma variavel o valor do campo qtdAnuncio que esta salvo o dado no nó de usuario? Ex: int valorAnuncios = qtdAnuncio que seria 1 Eu preciso primeiramente resgatar este campo qtdAnuncio do usuario logado Eu tentei nomear private Usuario usuarioLogado; e xecutar a chamada de um metodo usuarioLogado = UsuarioFirebase.getDadosUsuarioLogado() Método chamado public static Usuario getDadosUsuarioLogado(){ FirebaseUser firebaseUser = getUsuarioAtual(); Usuario usuario = new Usuario(); usuario.setEmail( firebaseUser.getEmail() ); usuario.setNome( firebaseUser.getDisplayName().toUpperCase() ); usuario.setId( firebaseUser.getUid() ); return usuario; } E depois em uma dado momento dentro do meu código no @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_editar_perfil); //validar permissoes Permissao.validarPermissoes(permissoesNecessarias, this, 1); //configuracoes iniciais usuarioLogado = UsuarioFirebase.getDadosUsuarioLogado(); //Tentei aqui buscar o valor do qtdAnuncio desta forma int valor = String.valueof(usuariologado.getQtdAnuncio()); Só que ao depurar o valor é sempre zero , sendo que tenho qtdAnuncio = 1 no banco do firebase, cfe imagem no inicio Alguém pode me orientar como pegar este valor ??
  2. E ae pessoal, gostaria de uma orientação sobre um erro que estou tomando e não consegui contornar corretamente, meu conhecimento com android é de basico autodidata. Bom o cenário é eu ger uma lista vinda de uma api que traz dados do banco de dados , imagem, nome de cidade e descrição. Quero que ao clicar seja aberta uma activity onde a mesma exiba os dados da cidade selecionada exibindo a imagem maior, nome cidade, descrição e data de saida do turismo. Pois bem quando eu clico num item da lista tomo o erro: java.lang.NullPointerException: Attempt to invoke virtual method 'java.lang.String android.content.Context.getPackageName()' on a null object reference at android.content.ComponentName.<init>(ComponentName.java:77) at android.content.Intent.<init>(Intent.java:4280) at garagetalke.com.laftturismo.adaptador.GramadoAdapter$GramadoHolder.onClick(GramadoAdapter.java:97) Eu uso fragmento para gerar a lista no recyclerView e criei um activity DetalhesLugares com o seu xml certinho para exibir os dados da cidade que eu cliquei, o meu fragmento que gera a lista de itens esta abaixo: fragment_lista_lugares_gramado.java public class fragment_lista_lugares_gramado extends Fragment implements Response.Listener<JSONObject>, Response.ErrorListener{ private static final String ARG_PARAM1 = "param1"; private static final String ARG_PARAM2 = "param2"; private String mParam1; private String mParam2; RecyclerView recyclerAnuncio; ArrayList<Lugares> listaLugares; ProgressDialog progresso; RequestQueue request; JsonObjectRequest jsonObjectReq; private fragment_lista_lugares_gramado.OnFragmentInteractionListener mListener; public fragment_lista_lugares_gramado() { // Required empty public constructor } public static fragment_lista_lugares_gramado newInstance(String param1, String param2) { fragment_lista_lugares_gramado fragment = new fragment_lista_lugares_gramado(); Bundle args = new Bundle(); args.putString(ARG_PARAM1, param1); args.putString(ARG_PARAM2, param2); fragment.setArguments(args); return fragment; } @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); if (getArguments() != null) { mParam1 = getArguments().getString(ARG_PARAM1); mParam2 = getArguments().getString(ARG_PARAM2); } } @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { View vista = inflater.inflate(R.layout.places_recycler_list, container, false); listaLugares=new ArrayList<>(); recyclerAnuncio= (RecyclerView) vista.findViewById(R.id.listRecycler); recyclerAnuncio.setLayoutManager(new LinearLayoutManager(this.getContext())); recyclerAnuncio.setHasFixedSize(true); request= Volley.newRequestQueue(getContext()); carregarWEBService(); //aqui chamo minha API que me traz os dados do banco corretamente e exibe no App return vista; } private void carregarWEBService() { ....minha API que faz a busca } // TODO: Rename method, update argument and hook method into UI event public void onButtonPressed(Uri uri) { if (mListener != null) { mListener.onFragmentInteraction(uri); } } @Override public void onDetach() { super.onDetach(); mListener = null; } @Override public void onErrorResponse(VolleyError error) { progresso.hide(); Toast.makeText(getContext(), "Não foi possível listar os lugares " +error.toString() , Toast.LENGTH_SHORT).show(); Log.i("ERROR", error.toString()); } @Override public void onResponse(JSONObject response) { progresso.hide(); Lugares lugares = null; Retorno do meu json da API - OK try { for(int i=0; i<json.length();i++){ lugares = new Lugares(); JSONObject jsonObject = null; jsonObject = json.getJSONObject(i); lugares.setId(jsonObject.optString("id")); //seto todos os dados de retorno - OK listaLugares.add(lugares); } progresso.hide(); GramadoAdapter adapter = new GramadoAdapter(listaLugares, fragment_lista_lugares_gramado.this); recyclerAnuncio.setAdapter(adapter); }catch (JSONException e){ e.printStackTrace(); progresso.hide(); Toast.makeText(getContext(), "Não foi possível listar os lugares " +response , Toast.LENGTH_SHORT).show(); } } public interface OnFragmentInteractionListener { // TODO: Update argument type and name void onFragmentInteraction(Uri uri); } } Aqui esta meu Adapter : GramadoAdapter.java public class GramadoAdapter extends RecyclerView.Adapter<GramadoAdapter.GramadoHolder> { ArrayList<Lugares> listaLugares = new ArrayList<>(); fragment_lista_lugares_gramado ctx; Context fragment_lista_lugares_gramado; public GramadoAdapter(ArrayList<Lugares> listaLugares, fragment_lista_lugares_gramado ctx ){ this.listaLugares = listaLugares; this.ctx = ctx; } @NonNull @Override public GramadoHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) { View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.item_lugares,parent,false); GramadoHolder gramadoViewHolder = new GramadoHolder(view, fragment_lista_lugares_gramado,listaLugares); return gramadoViewHolder; } @Override public void onBindViewHolder(@NonNull GramadoHolder holder, int position) { Lugares LUG = listaLugares.get(position); holder.id.setText(LUG.getId().toString()); holder.cidade.setText(LUG.getCidade()); holder.descricao.setText(LUG.getDescricao()); holder.dataSaida.setText("Quando? "+(LUG.getDataSaida())); if(listaLugares.get(position).getImagem() != null){ holder.idImagem.setImageBitmap(LUG.getImagem()); }else{ holder.idImagem.setImageResource(R.drawable.publicacao_sem_foto); } } @Override public int getItemCount() { return listaLugares.size(); } public class GramadoHolder extends RecyclerView.ViewHolder implements View.OnClickListener { TextView id, cidade, descricao, dataSaida, lugaresOnibus, valor, rating; ImageView idImagem; ArrayList<Lugares> listaLugares = new ArrayList<Lugares>(); Context ctx; Context fragment_lista_lugares_gramado; public GramadoHolder(View view, Context fragment_lista_lugares_gramado, ArrayList<Lugares> listaLugares) { super(view); this.listaLugares = listaLugares; view.setOnClickListener(this); id = (TextView) view.findViewById(R.id.id_place); cidade = (TextView) view.findViewById(R.id.cidade_place); descricao = (TextView) view.findViewById(R.id.descricao_place); dataSaida = (TextView) view.findViewById(R.id.datasaida_place); idImagem = view.findViewById(R.id.place_image); } @Override public void onClick(View v) { int position = getAdapterPosition(); Lugares lugares = this.listaLugares.get(position); //Eu acho que aqui esta meu problema mas nao sei o que pode ser...tipo nao abre a activity detalhes //ja tentei getActivity(), getApplication() e outras coisas tb, como é o fragmento que gera a lista //então nao o que fazer pra instanciar Intent intent = new Intent(fragment_lista_lugares_gramado, DetalhesLugares.class); intent.putExtra("tvImagem",lugares.getImagem()); intent.putExtra("tvCidade",lugares.getCidade()); intent.putExtra("tvdescricao",lugares.getDescricao()); this.fragment_lista_lugares_gramado.startActivity(intent); } } } DetalhesActivity.java ImageView imageView; TextView text_Cidade, text_Descricao; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_detalhes_lugares); imageView = (ImageView) findViewById(R.id.tvImagem); text_Cidade = (TextView) findViewById(R.id.tvCidade); text_Descricao = (TextView) findViewById(R.id.tvDesricao); imageView.setImageResource(getIntent().getIntExtra("tvImagem",00)); text_Cidade.setText("Cidade: "+getIntent().getStringExtra("tvCidade")); text_Descricao.setText("Descrição: "+getIntent().getStringExtra("tvdescricao")); } Alguém sabe me orientar do que fazer pra conseguir?
  3. cristianomg

    Ajuda com click FloatingActionButton

    Bom estou iniciando em android, e cheguei até o ponto onde quero implementar um FloatingActionButton , que ao clicar neste botão eu seja direcionado a uma nova activity de cadastro por exemplo. Eu tenho estudado e desenvolvido com fragmentos que possuem seu adapter e gero a lista de dados com recyclerView, ok o contexto é este. Agora eu queria saber onde coloco e como implemento que este meu FloatingActionButton ao clicar nele eu seja direcionado a outra activity Vou deixar aqui meu codigo das intereções e em maiusculo o que foz pro botão floating, não sei se é o local certo para fazer esta chamado, pois fiquei confuso com o que li e estudei sobre o assunto. Meu ADAPTER public class TimelineAdapterImagens extends RecyclerView.Adapter<TimelineAdapterImagens.TimelinesHolder> { List<Timeline> listaTimelineImg; private View.OnClickListener listener; Button btnDetails, btnEditar; //AQUI ESTOU CRIANDO O BOTAO private android.support.design.widget.FloatingActionButton fab; public TimelineAdapterImagens(List<Timeline> listaTimelineImg) { this.listaTimelineImg = listaTimelineImg; } @NonNull @Override public TimelineAdapterImagens.TimelinesHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) { View vista = LayoutInflater.from(parent.getContext()).inflate(R.layout.fragment_timeline_item_timeline,parent,false); return new TimelineAdapterImagens.TimelinesHolder(vista); //AQUI EU ENTENDI QUE TERIA A INSTANCIA DO BOTAO PARA O CLICK LOGO ABAIXO fab = (android.support.design.widget.FloatingActionButton) getActivity().findViewById(R.id.pink_icon); } @Override public void onBindViewHolder(@NonNull TimelineAdapterImagens.TimelinesHolder holder, int position) { holder.nomeUsuario.setText(listaTimelineImg.get(position).getNomeUsuario().toString()); holder.textoPostagem.setText(listaTimelineImg.get(position).getTextoPostagem().toString()); holder.idQuantLikes.setText(listaTimelineImg.get(position).getQuantLikes().toString()+" curtiram"); holder.dataPostagem.setText(listaTimelineImg.get(position).getDataPostagem().toString()); if(listaTimelineImg.get(position).getImagem() != null){ holder.idImagem.setImageBitmap(listaTimelineImg.get(position).getImagem()); }else{ holder.idImagem.setImageResource(R.drawable.sem_foto); } holder.setOnClickListeners(); } @Override public int getItemCount() { return listaTimelineImg.size(); } public class TimelinesHolder extends RecyclerView.ViewHolder implements View.OnClickListener { TextView codigoPostagem,nomeUsuario,textoPostagem,idQuantLikes,dataPostagem ; ImageView idImagem; Button btnDetails,btnEditar; Context context; public TimelinesHolder(View itemView) { super(itemView); context = itemView.getContext(); nomeUsuario = (TextView) itemView.findViewById(R.id.nomeUsuario); textoPostagem = (TextView) itemView.findViewById(R.id.textoPostagem); idQuantLikes = (TextView) itemView.findViewById(R.id.idQuantLikes); dataPostagem = (TextView) itemView.findViewById(R.id.dataPostagem); idImagem = itemView.findViewById(R.id.idImagem); } // AQUI FIZ UM TESTE PARA VER SE AO CLICAR RECEBIA UMA MENSAGEM UE FOI CLICADO PARA SABER SE JA PODERIA IMPLEMENTAR A CHAMADA DE UMA OUTRA ACTIVITY @Override public void onClick(View v) { Toast.makeText(context,"oioiio",Toast.LENGTH_SHORT).show(); } public void setOnClickListeners() { } } } MINHA ACTIVITY FRAG public static fragmentoGeraListaTimeline newInstance(String param1, String param2) { fragmentoGeraListaTimeline fragment = new fragmentoGeraListaTimeline(); Bundle args = new Bundle(); args.putString(ARG_PARAM1, param1); args.putString(ARG_PARAM2, param2); fragment.setArguments(args); return fragment; } @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); if (getArguments() != null) { mParam1 = getArguments().getString(ARG_PARAM1); mParam2 = getArguments().getString(ARG_PARAM2); } } @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { View vista = inflater.inflate(R.layout.activity_main_time, container, false); listaTimeline=new ArrayList<>(); recyclerTimeline= (RecyclerView) vista.findViewById(R.id.recyclerviewtime); recyclerTimeline.setLayoutManager(new LinearLayoutManager(this.getContext())); recyclerTimeline.setHasFixedSize(true); request= Volley.newRequestQueue(getContext()); carregarWEBService(); return vista; } private void carregarWEBService() { // FAÇO A BUSCA DOS MEUS DADOS PARA LISTAR NO RECYCLER - TUDO OK ATE AQUI jsonObjectReq = new JsonObjectRequest(Request.Method.GET, url, null, this, this); request.add(jsonObjectReq); } // TODO: Rename method, update argument and hook method into UI event public void onButtonPressed(Uri uri) { if (mListener != null) { mListener.onFragmentInteraction(uri); } } @Override public void onAttach(Context context) { super.onAttach(context); if (context instanceof fragmentoGeraListaTimeline.OnFragmentInteractionListener) { mListener = (fragmentoGeraListaTimeline.OnFragmentInteractionListener) context; } else { throw new RuntimeException(context.toString() + " must implement OnFragmentInteractionListener"); } } @Override public void onDetach() { super.onDetach(); mListener = null; } @Override public void onErrorResponse(VolleyError error) { progresso.hide(); Toast.makeText(getContext(), "Não foi possível listar " +error.toString() , Toast.LENGTH_SHORT).show(); Log.i("ERROR", error.toString()); } @Override public void onResponse(JSONObject response) { progresso.hide(); Timeline timeline = null; JSONArray json = response.optJSONArray("timelineImg"); try { for(int i=0; i<json.length();i++){ timeline = new Timeline(); JSONObject jsonObject = null; jsonObject = json.getJSONObject(i); // AQUI O RETORNO DO MEU OBJETO JSON - TUDO CERTO FUNCIONANDO listaTimeline.add(timeline); } progresso.hide(); TimelineAdapterImagens adapter = new TimelineAdapterImagens(listaTimeline); recyclerTimeline.setAdapter(adapter); }catch (JSONException e){ e.printStackTrace(); progresso.hide(); Toast.makeText(getContext(), "Não foi possível listar os dados " +response , Toast.LENGTH_SHORT).show(); } } public interface OnFragmentInteractionListener { // TODO: Update argument type and name void onFragmentInteraction(Uri uri); } Agora não sei se a chamada é no meu adapter e se esta no local correto ou se é no meu fragmento :(
  4. cristianomg

    Acesso a banco de dados

    E ae lukebz ,tb iniciei a pouco com android e minha experiência foi tranquila quanto ao uso e chamadas via API em php para acesso a base de dados com uso de retorno JSON, dizem não ser o certo, por questões de segurança e tudo o mais. Da uma pesquisada ai na internet por Hugo Vasconcelos..fala sobre isso bem didático .
  5. Boa noite pessoal, Estou tentando enviar uma imagem com putExtra e recuperar ele em outra activity de detalhes Activity de envio passo assim: Intent intent = new Intent(context, AnimeActivity.class); Bitmap bitmap = null; // your bitmap ByteArrayOutputStream _bs = new ByteArrayOutputStream(); bitmap.compress(Bitmap.CompressFormat.PNG, 50, _bs); intent.putExtra("marca",marcaAnuncio.getText()); intent.putExtra("modelo",modeloAnuncio.getText()); intent.putExtra("valor",valorAnuncio.getText()); intent.putExtra("imagem", _bs.toByteArray()); context.startActivity(intent); e ao recupera uso na activityDetails assim: String marca =""; String valor= ""; String modelo = ""; String idImagem= ""; Bundle extras = getIntent().getExtras(); if(extras != null){ marca = extras.getString("marca"); modelo = extras.getString("modelo"); valor = extras.getString("valor"); idImagem = extras.getString("imgDetalhe"); } TextView tv_marca = (TextView) findViewById(R.id.tv_marca); tv_marca.setText(marca); TextView tv_modelo = (TextView) findViewById(R.id.tv_modelo); tv_modelo.setText(modelo); TextView tv_valor = (TextView) findViewById(R.id.tv_valor); tv_modelo.setText(valor); ImageView imgDetalhe = (ImageView) findViewById(R.id.idImagem);; imgDetalhe.setImageResource(Integer.parseInt(idImagem.toString())); } Mas recebo este erro no LOG: Não sei o que fazer ja pesquisei e nao consegui ...
  6. cristianomg

    Abrir detalhes de um item no RecycleView

    Bom dia, Estou iniciando meu aprendizado autodidata em android, e cheguei ao ponto de listar meu itens do banco de dados usando um recycleView até ai ok, tudo funciona certo, gera a lista de anuncios no App Agora me deparo com o fato de clicar em um item da lista deste recycle e exibir a activity de detalhes. Pelo que li e exemplos que tentei implementar não consegui desenvolver um codigo simples que execute esta ação, pois cada um tem uma maneira de codificar esta chamada. O meu recycleque gera a lista de itens esta desta forma: O meu MainActivity contém estes dados que geram as info para a recycleView @Override public void onBindViewHolder(@NonNull AnunciosHolder holder, int position) { holder.marcaAnuncio.setText(listaAnuncioImg.get(position).getMarca().toString()); holder.modeloAnuncio.setText(listaAnuncioImg.get(position).getModelo().toString()); holder.anoAnuncio.setText(listaAnuncioImg.get(position).getAno().toString()); holder.valorAnuncio.setText(listaAnuncioImg.get(position).getValor().toString()); if(listaAnuncioImg.get(position).getImagem() != null){ holder.idImagem.setImageBitmap(listaAnuncioImg.get(position).getImagem()); }else{ holder.idImagem.setImageResource(R.drawable.sem_foto); } holder.idImagem.setTag(position); holder.idImagem.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { CRIEI ESTE METODO PARA FAZER A CHAMADA DA ACTIVITY QUE RECEBERA OS DADOS DO HOLDER QUE SAO EXIBIDOS NA RECYCLE NÃO SEI COMO CHAMAR A ACTIVITY E PASSAR AS INFORMAÇÕES A ELE } }); } O meu layout que recebera os dados é o activity_detail_anuncio.xml image_view_detail e text_view_detail , que recebera o textView do holder.marcaAnucnio <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" android:id="@+id/linearLayout" > <ImageView android:id="@+id/image_view_detail" android:layout_width="match_parent" android:layout_height="300dp" android:src="@mipmap/ic_launcher" /> <TextView android:id="@+id/text_view_detail" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginEnd="16dp" android:layout_marginStart="16dp" android:text="Likes: " android:textSize="30sp" /> </LinearLayout> O meu Adapter esta desta forma: @Override public void onBindViewHolder(@NonNull AnunciosHolder holder, int position) { holder.marcaAnuncio.setText(listaAnuncioImg.get(position).getMarca().toString()); holder.modeloAnuncio.setText(listaAnuncioImg.get(position).getModelo().toString()); holder.anoAnuncio.setText(listaAnuncioImg.get(position).getAno().toString()); holder.valorAnuncio.setText(listaAnuncioImg.get(position).getValor().toString()); if(listaAnuncioImg.get(position).getImagem() != null){ holder.idImagem.setImageBitmap(listaAnuncioImg.get(position).getImagem()); }else{ holder.idImagem.setImageResource(R.drawable.sem_foto); } holder.idImagem.setTag(position); holder.idImagem.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { } }); } @Override public int getItemCount() { return listaAnuncioImg.size(); } public class AnunciosHolder extends RecyclerView.ViewHolder { RelativeLayout parentLayout; TextView codigoAnuncio,marcaAnuncio, modeloAnuncio, anoAnuncio, corAnuncio, valorAnuncio; ImageView idImagem; public AnunciosHolder(View itemView) { super(itemView); marcaAnuncio = (TextView) itemView.findViewById(R.id.marca); modeloAnuncio = (TextView) itemView.findViewById(R.id.modelo); anoAnuncio = (TextView) itemView.findViewById(R.id.ano); corAnuncio = (TextView) itemView.findViewById(R.id.cor); valorAnuncio = (TextView) itemView.findViewById(R.id.valor); idImagem = itemView.findViewById(R.id.idImagem); } } A Activity de Detalhes : public class DetailsActivity extends AppCompatActivity { ListView listView; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_detail_anuncio); } } Eu entendo que tenho que gerar o OnClickListener na MainActivity dentro do onBindViewHolder, mas não sei como apontar isso lá no Adapter e este chamar a outra activityDetais exibindo o meu XML com as informações do item clicado
  7. Possuo uma validação de login que me retorna a msg de sucesso quando o usuario existe na base, e após o response eu queria logo ja chamar a activity principal do meu aplicativo...como eu posso declarar isso, sou iniciante em android :) Na linha 21 queria saber como implementar isso 1 BufferedWriter bufferedWriter = new BufferedWriter(new OutputStreamWriter(outputStream,"UTF-8")); 2 String data = URLEncoder.encode("login_name","UTF-8")+"="+URLEncoder.encode(login_name,"UTF-8")+"&"+ 3 URLEncoder.encode("login_pass","UTF-8")+"="+URLEncoder.encode(login_pass,"UTF-8"); 4 bufferedWriter.write(data); 5 bufferedWriter.flush(); 6 bufferedWriter.close(); 7 outputStream.close(); 8 InputStream inputStream = httpURLConnection.getInputStream(); 9 BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(inputStream,"iso-8859-1")); 10 String response = ""; 11 String line = ""; 12 while ((line = bufferedReader.readLine())!=null) 13 { 14 response+= line; 15 } 16 bufferedReader.close(); 17 inputStream.close(); 18 httpURLConnection.disconnect(); 19 return response; 20 21 NESTE ESPAÇO QUERIA CHAMAR A ACTIVITY POR EXEMPLO MenuActivity 22 23 } catch (MalformedURLException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } } return null; }
  8. E ae pessoal, preciso de uma orientação Tenho uma pagina que passa por post dados de nome do usuario e o email deste cara, para o arquivo email.php , que utiliza o phpmailer para enviar o email. Tudo tranquilo até ai mas eu não consigo dentro do corpo do email passar a informação pelo envio POST Segue código da minha página email.php <?php $nome = "INFORMA O NOME"; //$_POST['nome']; $email = "meunomeemail@gamil.com"; //$_POST['email']; $telefone = "1234567"; //$_POST['telefone']; $opcoes = "1"; //$_POST['escolhas']; $mensagem = "mensagem que posetei"; //$_POST['msg']; $data_envio = "01/02/2108"; //date('d/m/Y'); $hora_envio = "01/02/2108"; //date('H:i:s'); //Compo E-mail $arquivo = " <html xmlns='http://www.w3.org/1999/xhtml'> <head> <meta http-equiv='Content-Type' content='text/html; charset=utf-8' /> <meta name='viewport' content='width=device-width, initial-scale=1.0'/> <title>Titulo do email</title> <style type='text/css'> body{ font-family:Aril, Trebuchet MS; } .ExternalClass {width:100%;} /* Força o Hotmail a exibir o email com a largura total */ .ExternalClass, .ExternalClass td {line-height: 100%;} /* Força o Hotmail a exibir o espaçamento normal entre linhas */ table {border-collapse: collapse; mso-table-lspace:0pt; mso-table-rspace:0pt; } /* Remove o espaçamento entorno das tabelas no Outlook 07, 10 */ table td {border-collapse: collapse;} /* Corrige o padding no Outlook 07, 10 */ td {margin: 0; padding: 0; font-size: 0px; line-height: 0px;} /* Zera os espaçamentos */ img {display: block; max-width: 100%; outline: none; text-decoration: none; -ms-interpolation-mode: bicubic;} @media only screen and (max-width: 600px) { img[class='hide'] { display:block!important; } } @media only screen and (max-width: 600px) { table[class='content-wrap'] { width: 94%!important; } } </style> </head> <body> <center style='width:100%'> <table class='m_-5913362377237558712phoenix-email-container' style='background-color:#ffffff;margin:0 auto;max-width:512px;width:inherit' width='512' cellspacing='0' cellpadding='0' border='0' bgcolor='#FFFFFF'> <tbody> <tr> <td style='background-color:#f6f8fa;padding:28px 0 20px 0' bgcolor='#F6F8FA'> <table style='width:100%!important;min-width:100%!important' width='100%' cellspacing='0' cellpadding='0' border='0'> <tbody> <tr> <td width='100%' align='center'> <img src='transparent.png' width='30'> </td> </tr> <tr> <td style='padding:16px 24px 0 24px' width='100%' align='center'> <h2 style='margin:0;color:#262626;font-weight:200;font-size:20px;padding-bottom:5px;line-height:1.2'>Obrigado por Nos seguir</h2> <!--p style='margin:0;color:#4c4c4c;font-weight:400;font-size:16px;line-height:1.5'>Please confirm your email address to get full access to LinkedIn.</p--> </td> </tr> </tbody> </table> </td> </tr> <tr> <td> <table style='margin:0 10px;max-width:492px' width='100%' cellspacing='0' cellpadding='0' border='0'> <tbody> <tr> <td style='padding:25px 0;text-align:center; padding:15px 15px 15px 15px;' align='center'> <h2 style='margin:0;color:#262626;font-weight:200;font-size:24px;padding-bottom:15px;line-height:1.167'>sua senha é XPTO</h2> </br> <span style='margin:0;color:#4c4c4c;font-weight:400;font-size:14px;padding:15px 15px 15px 15px;'> </p>Acesse seu e-mail e curta noss apágina</span> <table style='display:inline-block' cellspacing='0' cellpadding='0' border='0'> <tbody> </tbody> </table> </td> </tr> </tbody> </table> </td> </tr> <tr> <td> <table style='background-color:#edf0f3;padding:0 24px;color:#999999;text-align:center' width='100%' cellspacing='0' cellpadding='0' border='0' bgcolor='#EDF0F3' align='center'> <tbody> <tr> <td style='padding:16px 0 0 0;text-align:center' align='center'></td> </tr> <tr> <td> <table width='100%' cellspacing='0' cellpadding='0' border='0'> <tbody> <tr> <td style='padding:0 0 12px 0;text-align:center' align='center'> <p style='margin:0;color:#737373;font-weight:400;font-size:12px;padding-bottom:10px;line-height:1.333'> Este email foi destinado ao '.$nome'. Saiba por que incluímos isso. </p> </td> </tr> <tr> <td style='padding:0 0 12px 0;text-align:center' align='center'> <p style='margin:0;color:#737373;font-weight:400;font-size:12px;line-height:1.333'>© 2017 NOMESITE.</p> </td> </tr> </tbody> </table> </td> </tr> </tbody> </table> </td> </tr> </tbody> </table> </center> </body> </html> "; //enviar // emails para quem será enviado o formulário $emailenviar = "meunomeemail@gmail.com"; $destino = $emailenviar; $assunto = "Contato pelo Site"; // É necessário indicar que o formato do e-mail é html $headers = 'MIME-Version: 1.0' . "\r\n"; $headers .= 'Content-type: text/html; charset=iso-8859-1' . "\r\n"; $headers .= 'From: $nome <$email>'; //$headers .= "Bcc: $EmailPadrao\r\n"; $enviaremail = mail($destino, $assunto, $arquivo, $headers); if($enviaremail){ $mgm = "E-MAIL ENVIADO COM SUCESSO! <br> O link será enviado para o e-mail fornecido no formulário"; echo " <meta http-equiv='refresh' content='10;URL=contato.php'>"; } else { $mgm = "ERRO AO ENVIAR E-MAIL!"; echo ""; } ?> Não consegui passar os posts : $nome = "INFORMA O NOME"; //$_POST['nome']; $email = "meunomeemail@gamil.com"; //$_POST['email']; Este email foi destinado ao '.$nome'. Saiba por que incluímos isso. Nestas variaveis (nome, email), no corpo do email no $header $headers .= 'From: $nome <$email>';
  9. Boa tarde, estou fazendo automação em java no eclipse usando Selenium e me deparei com um cadastro que necessita uma validação do Captcha. Ora somente clicar e validar que foi selecionado, e outrora validar se a seleção de imagens corresponde ao tipo de imagem disponibilizada no captcha ex: selecionar imagens de veículos Alguém tem alguma ideia de onde posso encontrar conteúdo sobre este tipo de captura de dados e validação para avançar num processo automatizado?
  10. Pessoal, Como todos preciso de uma orientação. Tenho varias checkbox que ao selecionar uma delas, esta mesma passa a modal bootstrap o value do campo. Mas eu consigo abrir a modal só não consigo abrir a modal quando seleciono outro checkbox, pois meu problema é passar ao javacript, que e como informo a ele que estou querendo que o value = 1 do checkbox name="Poltrona 01" seja absorvido na modal. Ou se ao clicar na checkbox value = 4 seja o mesmo aberto a modal contendo o valor da checkbox name="poltrona 04" Abaixo os campos : data-id='1' é quem passa o valor para o campo que esta na modal id='btnEditar' este cara é quem serve de parâmetro para a modal ser aberta, e serve de parâmetro para o javascript abrir a modal <div class="col-xs-2"> <img src="../images/poltrona_ocupada.jpg" class="img-responsive img-radio"> <a type='button' href='#editar' data-toggle='modal' data-target='.editar' data-id='1' id='btnEditar' > <button type="button" class="btn btn-primary btn-radio">Poltrona 01</button> </a> <input type="checkbox" class="hidden" type="checkbox" name="chk4" id="item4" value="val4"> </div> <div class="col-xs-2"> <img src="../images/poltrona_ocupada.jpg" class="img-responsive img-radio"> <a type='button' href='#editar' data-toggle='modal' data-target='.editar' data-id='2' id='btnEditar' > <button type="button" class="btn btn-primary btn-radio" role="button" data-toggle="modal" data-target="#login- modal">Poltrona 02</button> </a> <input type="checkbox" class="hidden" type="checkbox" name="meuid" id="meuid" value="val4"> </div> <div class="col-xs-2"> <img src="../images/poltrona_ocupada.jpg" class="img-responsive img-radio"> <a type='button' href='#editar' data-toggle='modal' data-target='.editar' data-id='3' id='btnEditar' > <button type="button" class="btn btn-primary btn-radio">Poltrona 03</button> </a> <input type="checkbox" class="hidden" type="checkbox" name="chk4" id="item4" value="val4"> </div> <div class="col-xs-2"> <img src="../images/poltrona_ocupada.jpg" class="img-responsive img-radio"> <a type='button' href='#editar' data-toggle='modal' data-target='.editar' data-id='04' id='btnEditar' > <button type="button" class="btn btn-primary btn-radio" role="button" data-toggle="modal" data-target="#login- modal">Poltrona 04</button> </a> <input type="checkbox" class="hidden" type="checkbox" name="meuid" id="meuid" value="val4"> </div> A Modal é esta : <div class="modal fade" id="login-modal" tabindex="-1" role="dialog" aria-labelledby="myModalLabel" aria-hidden="true" style="display: none;"> <div class="modal-dialog"> <div class="modal-content"> <div class="modal-header" align="center"> <img class="img-circle" id="img_logo" src="http://bootsnipp.com/img/logo.jpg"> <button type="button" class="close" data-dismiss="modal" aria-label="Close"> <span class="glyphicon glyphicon-remove" aria-hidden="true"></span> </button> </div> <!-- Begin # DIV Form --> <div id="div-forms"> <!-- Begin # Login Form --> <form id="login-form"> <div class="modal-body"> <div id="div-login-msg"> <div id="icon-login-msg" class="glyphicon glyphicon-chevron-right"></div> <span id="text-login-msg">Type your username and password.</span> </div> <input id="login_username" class="form-control" type="text" placeholder="Username (type ERROR for error effect)" required> <input id="login_password" class="form-control" type="password" placeholder="Password" required> <div class="checkbox"> <label> MEU VALUE CHECKBOX DEVE ESTAR AQUI NESTE CAMPO <input type="text" class="form-control" name="meuid" id="meuid" disabled="true"> </label> </div> </div> </form> </div> </div> </div> </div> o JAVASCRIPT <script> $(document).on("click", "#btnEditar", function () { var info = $(this).attr('data-id'); var str = info.split('|'); var meuid = str[0]; var minhadata = str[1]; $(".modal-body #meuid").val(meuid); $(".modal-body #minhadata").val(minhadata); }); </script> Eu acho que no meu checkbox no id="btneditar" deve ter referencia de numero (id="btneditar_xx)) também, e que o javascript no #btneditar seja representado desta forma #btneditar_xx , onde o xx é o numero da checkbox que eu selecionei e esta checkbox passe o value dela para a modal É isso que preciso fazer.
  11. cristianomg

    Gravar no banco após gerar Upload de imagem

    Vem este retorno: array(1) { ["idanuncio"]=> string(2) "25" } Só que tem uma coisa Williams...eu uso um js que faz o esquema das imagens multiplas e chama o upload.php . Cara eu acho que eu deve passar este parametro pelo JS .. Bha só pode ser isso não é?
  12. cristianomg

    Gravar no banco após gerar Upload de imagem

    E ae Williams Justamente fiz isto mas não vai, as imagens estão sendo salva na base corretamente mas o input text que contém meu valor ou até mesmo o $_GET não absorve o valor no arquivo upload.php Não sei o que pode ser que acontece... Inseri diretamente o valor e no arquivo upload.php não esta pegando este valor do input,.. <input type="text" name="idanuncio" value="25">
  13. cristianomg

    Gravar no banco após gerar Upload de imagem

    Me deparei com mais um ultimo ponto para fechar. Eu precisaria passar um id de anuncio como parâmetro Tentei de duas formas: passando por input text e pegando no $_POST e/ ou passando por GET e pegando por $_GET Mas ele insere zero na base, tipo não pega o POST ou o GET Não entendi.... <form action="upload.php?id=<?php echo $_GET['id']?>" enctype="multipart/form-data" method="post" > <input type="text" name="idanuncio" value="25"> <input type="file" name="images[]" id="images" multiple> <button type="submit" id="btn">Enviar Arquivos</button> </form> Para salvar na base o idanuncio foreach($_FILES['images']['error'] as $key => $error){ if($error == UPLOAD_ERR_OK){ $name = $_FILES['images']['name'][$key]; $_SESSION['imagens'][] = $name; move_uploaded_file($_FILES['images']['tmp_name'][$key], 'imagens/anuncios/upload/'.$name); $idanuncio = $_POST['idanuncio']; **ou usando GET $idanuncio = $_GET['idanuncio']; $sql = "INSERT INTO fotos_anuncio (idanuncio, nomeimagem) VALUES ('$idanuncio','$name');"; mysql_query($sql) or die(mysql_error()); } }
  14. cristianomg

    Gravar no banco após gerar Upload de imagem

    RESOLVIDO Opa descobri, havia um bloqueio no servidor, devido ao limite de "mb" de envio das imagens, acho que estava impedindo de certa forma isso. Segue para quem precisar usar um dia. Seleção das imagens: <form action="upload.php" enctype="multipart/form-data" method="post" > <input type="file" name="images[]" id="images" multiple> <button type="submit" id="btn">Enviar Arquivos</button> </form> Publicando na base de dados: <?php session_start(); include "conexao_banco"; foreach($_FILES['images']['error'] as $key => $error){ if($error == UPLOAD_ERR_OK){ $name = $_FILES['images']['name'][$key]; $_SESSION['imagens'][] = $name; move_uploaded_file($_FILES['images']['tmp_name'][$key], 'local onde ira mover as imagens/'.$name); $sql = "INSERT INTO tabela (nomeimagem) VALUES ('$name');"; mysql_query($sql) or die(mysql_error()); } } ?> William obrigado pela atenção ae. faz tempo que não entro no site e mudou, onde eu coloco o post como resolvido ?
×

Important Information

Ao usar o fórum, você concorda com nossos Terms of Use.