Avatar billede krak Nybegynder
01. november 2004 - 14:36 Der er 11 kommentarer og
1 løsning

Større datamængder fra Applet, via PHP til MySql

Hej

Min java-applet henter en del tekst som skal gemmes i en MySql-database.

De mindre tekst-stykker bliver sendt som parametre (?felt1=vardi1&felt2=vaerdi2 osv) til en php-fil, der smider dem i en database.

Men når der er tale om større tekster går det ikke. URL'en bliver ganske enkelt for lang til at den kan klare det.

I stedet for at dele teksten op i en række små bidder, der hver især bliver sendt til PHP-filen vil jeg høre om det ikke er muligt at sende en stor mængde data direkte til PHP-filen og ikke som variabel?
F.eks. via POST?

Tak!
Avatar billede thorus Nybegynder
01. november 2004 - 14:47 #1
har du prøvede POST?

$felt1= $_POST[felt1];
$felt2= $_POST[felt2];
Avatar billede krak Nybegynder
01. november 2004 - 15:25 #2
Der er ingen problemer med at hente data, når de er lagt i URL'en og når de er kommet frem til PHP-filen.

Problemet er at URL'en bliver cuttet når den når op på en hvis længde.
- Derfor eftersøger jeg hvordan appletten kan afsende hele variabler på samme måde som når en php-fil modtager data via en formular. Dér kommer data netop ikke i URL'en, men ligger skjult i en variabel.
Avatar billede arne_v Ekspert
01. november 2004 - 15:27 #3
Det er det som POST løser
Avatar billede krak Nybegynder
01. november 2004 - 15:49 #4
fint. Men hvordan får du praktisk set gjort det i Appletten?

Jeg har følgende kode, hvor jeg sender data med i URL'en:

Boolean succes=false;
String megetTekst="Her er en tekst og blablabla";
String adresse="http://www.domain.dk/phpfil.php?felt1="+megetTekst;
adresse=adresse.replace(' ','_');
           
URL url = new URL(adresse);
HttpURLConnection con = (HttpURLConnection)url.openConnection();
con.setRequestMethod("POST");
con.setDoOutput(true);
con.connect();
if(con.getResponseCode() == HttpURLConnection.HTTP_OK)
    succes=true;
con.disconnect();

Hvordan sender jeg variablen direkte i stedet?
Avatar billede arne_v Ekspert
01. november 2004 - 16:37 #5
Boolean succes=false;
String megetTekst="Her er en tekst og blablabla";
String adresse="http://www.domain.dk/phpfil.php";
URL url = new URL(adresse);
HttpURLConnection con = (HttpURLConnection)url.openConnection();
con.setRequestMethod("POST");
con.setDoOutput(true);
con.getOutputStream().write(megettekst.getBytes());
con.connect();
if(con.getResponseCode() == HttpURLConnection.HTTP_OK)
    succes=true;
con.disconnect();
Avatar billede arne_v Ekspert
01. november 2004 - 16:38 #6
Boolean succes=false;
String megetTekst="Her er en tekst og blablabla";
String adresse="http://www.domain.dk/phpfil.php";
URL url = new URL(adresse);
HttpURLConnection con = (HttpURLConnection)url.openConnection();
con.setRequestMethod("POST");
con.setDoOutput(true);
con.getOutputStream().write(URLEncoder.encode(megettekst, "ISO-8859-1").getBytes());
con.connect();
if(con.getResponseCode() == HttpURLConnection.HTTP_OK)
    succes=true;
con.disconnect();

er nok bedre
Avatar billede arne_v Ekspert
01. november 2004 - 16:39 #7
erstat "ISO-8859-1" med "UTF-8" om nødvendigt
Avatar billede krak Nybegynder
11. november 2004 - 11:14 #8
Ok, men hvad hedder variablen i PHP-filen? Jeg har prøvet med $_POST['megettekst'] uden held.
Avatar billede arne_v Ekspert
11. november 2004 - 11:43 #9
Ovenstående sender det ikke som en variabel.

con.getOutputStream().write("megettekst=" + URLEncoder.encode(megettekst, "ISO-8859-1").getBytes());

sende det som en variabel.
Avatar billede krak Nybegynder
11. november 2004 - 12:15 #10
Glimrende!
- Der skulle dog lige en enkel () ekstra til, så det hele blev til bytes[] på een gang.

con.getOutputStream().write(("megettekst=" + URLEncoder.encode(megettekst, "UFT-8")).getBytes());

Jeg takker!
Avatar billede arne_v Ekspert
11. november 2004 - 12:18 #11
selvfølgelig
Avatar billede arne_v Ekspert
11. november 2004 - 12:18 #12
så ligger jeg et svar
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester