Jason'Bar'Depaty Posté(e) 5 juillet 2011 Share Posté(e) 5 juillet 2011 Bonsoir ! Je fais appel à vous car je débute dans la programmation Android et j'ai un petit problème (bien que mes bases de C# m'aident un peu). J'ai dans mon application un formulaire de contact qui lui, fonctionne, les données sont bien entrées en BDD mais je ne sais pas exactement ce qui est renvoyé dans la réponse. Mais trêve de bla bla, je vais vous montrer ce que j'ai. package com.dirtysophie.android.musics; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.ArrayList; import java.util.List; import android.os.Bundle; import android.view.View; import android.widget.Button; import android.widget.EditText; import android.widget.Spinner; import android.widget.TextView; import org.apache.http.HttpResponse; import org.apache.http.NameValuePair; import org.apache.http.client.ClientProtocolException; import org.apache.http.client.HttpClient; import org.apache.http.client.entity.UrlEncodedFormEntity; import org.apache.http.client.methods.HttpPost; import org.apache.http.impl.client.DefaultHttpClient; import org.apache.http.message.BasicNameValuePair; public class Contact extends Musics { public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.contact); final Button buttonSubmit = (Button) findViewById(R.id.button1); buttonSubmit.setOnClickListener(new View.OnClickListener() { public void onClick(View v) { HttpClient httpclient = new DefaultHttpClient(); HttpPost httppost = new HttpPost("http://www.dirty-sophie.fr/script.php"); EditText formName = (EditText)findViewById(R.id.editText1); String name = formName.getText().toString(); EditText formMail = (EditText)findViewById(R.id.editText2); String mail = formMail.getText().toString(); EditText formMessage = (EditText)findViewById(R.id.editText3); String message = formMessage.getText().toString(); Spinner SpinnerFormType = (Spinner)findViewById(R.id.SpinnerFormType); String subject = SpinnerFormType.getSelectedItem().toString(); try { List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>(); nameValuePairs.add(new BasicNameValuePair("name", name)); nameValuePairs.add(new BasicNameValuePair("mail", mail)); nameValuePairs.add(new BasicNameValuePair("subject", subject)); nameValuePairs.add(new BasicNameValuePair("message", message)); httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs)); HttpResponse response = httpclient.execute(httppost); BufferedReader reader = new BufferedReader(new InputStreamReader(response.getEntity().getContent())); String s = reader.readLine(); TextView responseTextView = (TextView)findViewById(R.id.textView2); responseTextView.setText(s); } catch (ClientProtocolException e) { // TODO Auto-generated catch block } catch (IOException e) { // TODO Auto-generated catch block } } }); } } Et ma page script.php <?php // Connexion et selection de la BDD if(isset($_POST['name'])) { $name = $_POST['name']; $mail = $_POST['mail']; $subject = $_POST['subject']; $message = $_POST['message']; $sql = "INSERT INTO receive VALUES('','$name','$mail','$subject','$message')"; mysql_query($sql); echo 'Message envoyé !'; } ?> Le problème c'est que mon TextView va m'afficher un joli "<br />" à la place de "Message envoyé !". Qu'ai-je raté ? Merci par avance de vos réponses ! Lien vers le commentaire Partager sur d’autres sites More sharing options...
ChrOnOs Posté(e) 6 juillet 2011 Share Posté(e) 6 juillet 2011 Pour commencer, utilise la fonction mysql_real_escape_string http://www.php.net/manual/fr/function.mysql-real-escape-string.php pour éviter que l'on puisse faire de l'injection sql <?php // Connexion et selection de la BDD if(isset($_POST['name'])) { $name = mysql_real_escape_string($_POST['name']); $mail = mysql_real_escape_string($_POST['mail']); $subject = mysql_real_escape_string($_POST['subject']); $message = mysql_real_escape_string($_POST['message']); $sql = "INSERT INTO receive VALUES('','$name','$mail','$subject','$message')"; mysql_query($sql); echo 'Message envoyé !'; } ?> Sinon, pour trouver la cause de ton problème, commence par exécuter ce script dans un navigateur (tu peux temporairement remplacer les $_POST par des $_GET pour pouvoir faire tes test). Tu as certainement des retours à la ligne affichés par ton script. Enfin, dans ton code Java remplace String s = reader.readLine(); TextView responseTextView = (TextView)findViewById(R.id.textView2); responseTextView.setText(s); par String line = ""; String text = ""; while ((line = br.readLine()) != null){ text += line; } TextView responseTextView = (TextView)findViewById(R.id.textView2); responseTextView.setText(text); Lien vers le commentaire Partager sur d’autres sites More sharing options...
Jason'Bar'Depaty Posté(e) 6 juillet 2011 Auteur Share Posté(e) 6 juillet 2011 Tout d'abord, merci de m'aider ! Pour les mysql_real_escape_strings, je les mets en temps normal, c'était juste pour tester la ;) Ensuite, j'ai un petit problème avec le code Java que tu m'as donné, il me dit que 'br' ne peut être résolu dans le while :/ Lien vers le commentaire Partager sur d’autres sites More sharing options...
ChrOnOs Posté(e) 6 juillet 2011 Share Posté(e) 6 juillet 2011 Tout d'abord, merci de m'aider ! Pour les mysql_real_escape_strings, je les mets en temps normal, c'était juste pour tester la ;) Ensuite, j'ai un petit problème avec le code Java que tu m'as donné, il me dit que 'br' ne peut être résolu dans le while :/ Oups, petite erreur de copier-coller... Ce n'est pas while ((line = br.readLine()) != null){ mais while ((line = reader.readLine()) != null){ Lien vers le commentaire Partager sur d’autres sites More sharing options...
Jason'Bar'Depaty Posté(e) 6 juillet 2011 Auteur Share Posté(e) 6 juillet 2011 Bon en fait mon TextView affiche ce message la : <br /><b>Warning</b>: In_array() [<a href='function.in-array'>function.in-array</a>];Wrong datatype for second argument in <b>/home/securite9.php</b> on line <b>7 </b> <br /><b>Warning</b>: In_array() [<a href='function.in-array'>function.in-array</a>];Wrong datatype for second argument in <b>/home/securite9.php</b> on line <b>7 </b> <br /><b>Warning</b>: In_array() [<a href='function.in-array'>function.in-array</a>];Wrong datatype for second argument in <b>/home/securite9.php</b> on line <b>7 </b> <br /><b>Warning</b>: In_array() [<a href='function.in-array'>function.in-array</a>];Wrong datatype for second argument in <b>/home/securite9.php</b> on line <b>7 </b> <br /><b>Warning</b>: Cannot modify header information - headers already sent by (output started /home/security9.php:7) in <b>/home/obstart.php</b> on line 42 <br />Message envoyé ! Lien vers le commentaire Partager sur d’autres sites More sharing options...
ChrOnOs Posté(e) 7 juillet 2011 Share Posté(e) 7 juillet 2011 Le problème est donc bien au niveau du script php. Corrige l'erreur à la ligne 7 de ton fichier /home/securite9.php et tout devrait rentrer dans l'ordre. Lien vers le commentaire Partager sur d’autres sites More sharing options...
Jason'Bar'Depaty Posté(e) 8 juillet 2011 Auteur Share Posté(e) 8 juillet 2011 Ah ah la bonne blague :D Le serveur n'est pas à moi (aaaah je regrette le bon vieux temps ou j'avais encore les moyens de me payer des serveurs dédiés) J'ai plus qu'à marchander avec mon hébergeur pour qu'il regarde ça. Merci Chronos ! Lien vers le commentaire Partager sur d’autres sites More sharing options...
ChrOnOs Posté(e) 8 juillet 2011 Share Posté(e) 8 juillet 2011 Ce n'est pas très propre mais tu peux essayer de mettre error_reporting(0); au début de ton script. Si ton hébergeur le permet, cela désactivera l'affichage des erreurs. Par contre, en cas d'erreur PHP tu aura une page blanche donc si tu modifie ton script il faudra que tu commentes cette ligne pour trouver la cause d'un éventuel problème. <?php error_reporting(0); // Connexion et selection de la BDD if(isset($_POST['name'])) { $name = $_POST['name']; $mail = $_POST['mail']; $subject = $_POST['subject']; $message = $_POST['message']; $sql = "INSERT INTO receive VALUES('','$name','$mail','$subject','$message')"; mysql_query($sql); echo 'Message envoyé !'; } ?> Lien vers le commentaire Partager sur d’autres sites More sharing options...
Recommended Posts
Archivé
Ce sujet est désormais archivé et ne peut plus recevoir de nouvelles réponses.