gnab
-
Innlegg
55 -
Ble med
-
Besøkte siden sist
Innholdstype
Profiler
Forum
Hendelser
Blogger
Om forumet
Innlegg skrevet av gnab
-
-
Jeg testet koden din, og den fungerer som bare det herfra. Skrev om koden til å gå veien om mail.broadpark.no, da jeg sitter på en NextGenTel-linje, samt å vise responsen fra tjeneren, slik at du ser hva som evt. går feil.
Koden er da nøyaktig slik (med unntak av e-post-adressene):
#define WIN32_LEAN_AND_MEAN#include <windows.h>
#include <winsock2.h>
#include <stdio.h>
#include <stdlib.h>
#pragma comment( lib, "wsock32.lib" );
// argc er antall argumenter slengt med programmet når det starter, argv[index] er selvfølgelig argumentet.
int main( int argc, char *argv[] )
{
WSADATA sData;
SOCKET Client;
if( WSAStartup( 0x0202, &sData ) )
return false;
if( INVALID_SOCKET != (Client=socket( AF_INET, SOCK_STREAM, IPPROTO_TCP)) )
{
LPHOSTENT Host = gethostbyname( "mail.broadpark.no" );
SOCKADDR_IN ServerInfo;
ServerInfo.sin_family = AF_INET;
ServerInfo.sin_port = htons( 25 );
ServerInfo.sin_addr = *((LPIN_ADDR)*Host->h_addr_list );
if( SOCKET_ERROR != connect(Client, (LPSOCKADDR)&ServerInfo, sizeof(ServerInfo)) )
{
char Data[512];
strcpy( Data, "HELO broadpark.no\r\n" );
strcat( Data, "MAIL FROM:<[email protected]>\r\n" );
strcat( Data, "RCPT TO:<[email protected]>\r\n" );
strcat( Data, "DATA\r\n" );
strcat( Data, "Subject:E-postens tittel\r\n\r\n" ); // To ganger (RFC 882)
strcat( Data, "Dette er da epostens innhold...\r\n" );
strcat( Data, "\r\n.\r\n" );
strcat( Data, "QUIT \r\n" );
if( -1 == send(Client, Data, sizeof(Data), 0) )
printf( "Error sending mail" );
char ret[1024];
if ( -1 == recv(Client, ret, sizeof(ret), 0))
printf("Error receiving response" );
else
printf("---<RESPONSE>---\n%s\n---</RESPONSE>---", ret);
}
else
printf( "connect error\n" );
}
else
printf( "Socket error\n" );
WSACleanup();
return 0;
}
-
Noe i denne duren: (har ikke prøvd koden selv)
<form name="skjema" ... >
<a href="#" onclick="document.skjema.submit();">Send</a>
-
-
Akkurat det å sende verdier fra en nettside og hente de ut igjen i en annen er noe man vanligvis ikke bruker Javascript til, men heller PHP eller andre skriptspråk som kjører på tjenersiden. Det betyr imidlertid ikke at det ikke er mulig, men det er litt mer klumpete bare.
Det som skjer når innholdet i formen/skjemaet ditt sendes er at alle variabler legges på URLen som "pageB.html" kalles opp med. Så dersom du f. eks. har:
<input type = "text" name = "navn" /> <input type = "text" name = "alder" />
og du skriver inn "Bob Leif" i navne-feltet og "51" i alder-feltet, så blir URLen:
.../pageB.html?navn=Bob%20Leif&alder=51
Etter selve filnavnet legges det til et spørsmålstegn, og så kommer alle variablene dine på formen "variabelnavn=variabelverdi", delt av "&"-tegn. I tillegg enkoder nettleseren spesielle tegn, slik at mellomrom i dette tilfellet blir %20.
Når så denne URLen kalles opp, må disse variablene hentes inn. Hvis du vet at det kommer til å være et gitt antall variabler der og rekkefølgen disse kommer til å stå i, kan du skrive en kode som bruker denne informasjonen og derved kan bli nokså kort og grei, men det er likevel en del ting som må gjøres.
For å gjøre det hele litt mer interessant har jeg skrevet en funksjon som henter inn alle variabler som finnes i URLen og returnerer en liste over alle variabelnavn og -verdier. Denne kan brukes generelt, altså uten av man vet noe spesielt om hvor mange variabler som evt. finnes, navnene på disse eller rekkefølgen de står i.
function parseVariables() { // Lag variabel-liste som skal returneres var variables = new Array(); // Hent URLen siden ble kalt opp med var url = new String(window.location); // Sjekk om URLen inneholder ?-tegn if (url.indexOf('?') != -1) { // Hent ut delen av URLen etter ?-tegnet url = url.split('?')[1]; // Hent ut alle delene fra URLen delt av &-tegn var parts = url.split('&'); // Gå gjennom alle delene funnet for (var i = 0; i < parts.length; i++) { // Hent ut gjeldende del var part = parts[i]; // Hent ut variabelnavn og -verdi delt av =-tegn var data = part.split('='); // Anta at det ikke finnes noen verdi, og sett denne tom var value = ""; // Sjekk om det finnes verdi if (data.length == 2) { // Hent verdi value = data[1]; // Dekod verdi value = unescape(value.replace(/\+/g, " ")); } // Hent navn var name = data[0]; // Dekod navn name = unescape(name.replace(/\+/g, " ")); // Lagre navn og verdi i variabel-listen variables[name] = value; } } // Returner variabel-liste return variables; } var variabler = parseVariables(); alert("Navn: " + variabler["navn"] + ", alder: " + variabler["alder"]);
Det funksjonen gjør er kort sagt følgende:
- Finner URLen til siden (som da inneholder filnavnet og alle variablene)
- Henter ut biten etter spørsmålstegnet (som er variablene)
- Deler opp i enkeltvariabler (ved å splitte opp hver gang et "&"-tegn forekommer)
- Deler opp i variabelnavn og -verdi for hver av variablene (ved å splitte opp ved likhetstegnet)
- Dekoder variabelnavn og -verdi (endrer %20 tilbake til mellomrom o.l.)
Og ut får du en liste som kan brukes som vist i de to siste linjene i koden over. Ved å skrive variabler["NAVN_PÅ_VARIABEL_HER"] får du ut dens verdi. Hvis ikke en variabel med navnet du oppgir finnes, vil du få "undefined".
Hvis du limer all koden over inn mellom <script>..</script> i "pageB.html" får du se det hele in action.
Registrerte at du skriver at du er helt grønn i Javascript, og i så måte er kanskje ikke dette det første problemet du bør satse livet på å klare. Men du har i alle fall litt kode å tygge på.
- Finner URLen til siden (som da inneholder filnavnet og alle variablene)
-
Du trenger bare å endre denne linjen:
CD_OBJS[id].innerHTML=d+" day"+(d==1?" ":"s ")+CD_ZP(h)+"h "+CD_ZP(m)+"m "+CD_ZP(s)+"s"
Den bygger strengen som vises ved å kjede sammen dager, timer, minutter og sekunder. Det du må gjøre er å fjerne de delene du ikke ønsker. For å bare få dager og timer blir linjen som følger:
CD_OBJS[id].innerHTML=d+" day"+(d==1?" ":"s ")+CD_ZP(h)+"h "
For å bare vise dager blir linjen slik:
CD_OBJS[id].innerHTML=d+" day"+(d==1?" ":"s ")
-
eval() tar en streng som argument og kjører denne som Javascript-kode.
For eksempel vil eval("alert(\"test\");"); gjøre det samme som om du bare hadde skrevet alert("test");
-
Under Windows kan du sette attributtene til en fil ved å bruke SetFileAttributes.
-
You will get a MySQL query syntax error number 1064 when you incorrectly use a reserved word in your query such as "when" or "order".
Tipper det skyldes ordet TIME, som kolonnen din heter; bruk heller tabell.kolonne i stedet for bare kolonne i spørringen.
-
??????, har aldri vært borti EXPLAIN før, men den er notert. Den første løsningen min var en løsning på trådstarters problemstilling; han spurte om den kunne sorteres, og det kan den. Men jeg er selvfølgelig enig med deg i at det ikke er optimalt, slik jeg har poengtert flere ganger.
Forøvig fungerer det ikke å konvertere feltet ved bare å bytte til DATETIME i hvert fall.
-
Mtp. å bytte felttype tror jeg det letteste vil være å opprette en ny kolonne og flytte over fra den gamle til den nye før du til slutt sletter den gamle.
Dersom datoformatet ditt er NØYAKTIG "dd.mm.åååå - hh:m:ss" (slik du oppgav innledningsvis), kolonnen heter "dato" og tabellen "tabell" kan du bruke følgende kommandoer:
alter table tabell add column nyDato DATETIME; update tabell set nyDato = concat(substr(dato, 7, 4), "-", substr(dato, 4, 2), "-", substr(dato, 1, 2), " ", substr(dato, 14, 2), ":", substr(dato, 17, 2), ":", substr(dato, 20, 2)); alter table tabell drop column dato; alter table tabell change nyDato dato DATETIME;
Det opprettes da en ny kolonne med korrekt felttype, DATETIME, og deretter kopieres alle verdier over fra "dd.mm.åååå - hh:mm:ss" i den gamle kolonnen til "åååå-mm-dd hh:mm:ss" i den nye kolonnen. Til slutt slettes den gamle kolonnen og den nye gis navnet til den gamle/opprinnelige kolonnen.
Edit: Når jeg tenker meg om vil det kanskje duge å kjøre UPDATE-spørringen på den gamle kolonnen og deretter endre felttype, altså ikke gå veien om en annen kolonne. Det burde gå siden kolonnen før konvertering da er riktig formatert. Men før det evt. prøves er kopi av database allerede nevnt.
-
Det som skjer er ganske enkelt at du henter ut dag, måned og år fra dato-feltet vha. substr-metoden, substr(A, B, C), som klipper ut C tegn, fra og med tegn B i kolonnen A. Deretter sorteres det etter år, måned og til slutt dag.
mysql> select *, substr(dato, 1, 2) as dag, substr(dato, 4, 2) as maaned, substr(dato, 7, 4) as aar from test order by aar, maaned, dag; +------------+------+--------+------+ | dato | dag | maaned | aar | +------------+------+--------+------+ | 07.02.2006 | 07 | 02 | 2006 | | 13.03.2006 | 13 | 03 | 2006 | | 12.10.2006 | 12 | 10 | 2006 | | 12.11.2006 | 12 | 11 | 2006 | | 12.20.2006 | 12 | 20 | 2006 | +------------+------+--------+------+
Når du snakker om å anbefale eller ikke så vil jeg ikke anbefale den, men den løser problemet trådstarter kom med. Er som nevnt ikke den beste løsningen, men viser at det er mulig.
-
Du kan enkelt hente ut de enkelte komponentene av datoen og sortere etter disse slik:
select *, substr(dato, 1, 2) as dag, substr(dato, 4, 2) as maaned, substr(dato, 7, 4) as aar from tabell order by aar, maaned, dag;
Men som nevnt, bruk den felttypen som er tiltenkt den typen du vil lagre, litt bom med varchar for lagring av dato/klokkeslett.
-
Det som skjer er jo at du flytter elementet du finner på posisjon n til n+1 og deretter elementet du finner på posisjon n+1 til n, altså flytter du (som du sikkert har erfart) et og samme element først opp, og så ned igjen.
Når du flytter et element ned (eller opp) vil det etter den første spørringen være to elementer med samme plassering. Når du så i den andre spørringen egentlig vil flytten opp (eller ned) det andre elementet, har du ingen garanti for at du får flyttet nettopp dette elementet og ikke det du akkurat har flyttet ned (eller opp).. Er du med?
Jeg foreslår at du først av alt henter ut id-en på elementet du vil flytte i den andre spørringen, slik at du kan identifisere dette utfra id-en fremfor plasseringen når det skal flyttes, da denne er tvetydig og ikke til å stole på.
Altså, når du skal flytte et element opp:
- Hent id for element som skal flyttes opp (SELECT id ... WHERE place = $place)
- Flytt ned element som nå er "oppe" (query1: som før)
- Flytt opp element som nå er "nede" (query2: UPDATE ... WHERE id = $id)
og tilsvarende når du skal flytte et element ned. (Har utelatt noe av spørringene for å få det mer oversiktlig.) Nå kan du skille mellom de to elementene som har samme plassering, og dermed flytte rett element opp (eller ned)..
-
Du kan hente ut talldelen og sortere etter den slik:
SELECT SUBSTRING(id, 2) AS nr FROM tabell ORDER BY nr;
SUBSTRING(id, 2) henter ut alle tegn fra id-feltet fom. tegn 2, altså alt utenom bokstaven.
-
Du kan angi en standardverdi for argumentet i definisjonen av funksjonen;
function funksjon($argument=4) { return $argument + 1; } $test = funksjon();
-
Du kan bruke regulære uttrykk;
<?php $tekst = "abc<!--CreatedWith><name Name=\"Per\"/><creator Name=\"Nora\"/>-->def"; echo "Før: $tekst\n<br />\n"; $tekst = preg_replace("@<!--CreatedWith><name Name=\\\"[^\\\"]+\\\"/><creator Name=\\\"[^\\\"]+\\\"/>-->@", "", $tekst); echo "Etter: $tekst"; ?>
Koden over leter ette linjen du vil ha fjernet, med hva som helst for "x" og "y", og erstatter denne med "". Hvis du kjører skriptet og viser kildekoden fra nettleseren din vil du ser resultatet.
-
Nå looper du til slutten av lista og legger til personen der. Det du f. eks. kan gjøre er å loope, fremdeles så lenge du ikke har nådd slutten av lista, men også til du finner en person med navn som kommer etter den nye personen navn alfabetisk og sette inn den nye personen før denne..
-
Må få anbefale EclipseME når du skal jobbe med J2ME i Eclipse. Pluginen ordner alt det du trenger, veldig bra.
-
+ betyr én eller flere forekomster, slik at det altså, som du sier, MÅ forekomme begge deler. Bruker du derimot *, som betyr ingen eller flere forekomster, f. eks. [0-9]*, kreves det ingen forekomster av tall, men tall KAN gjerne forekomme.
Når det gjelder uttrykket du bruker nå, blir det egentli "bokstaver+tall" i den rekkefølgen. Dersom du vil tillate "bokstaver+tall+bokstaver" eller en hvilken som helst kombinasjon, må du slå sammen de to blokkene slik; [a-z0-9]+. Da kreves det minst én bokstav eller et tall, men rekkefølgen bokstaver og tall kommer i ikke har noe å si.
Endelig uttrykk: "#^([a-z0-9]+)$#i"
-
Ja, funksjonen vil returnere SANN hvis det KUN finnes 4-30 lovelige tegn i den.
-
Den slår ikke inn fordi det eneste som kreves er at 4 lovelige tegn kommer etterhverandre. Ved å sette på "start", ^, og "stopp", $, må alle tegn være lovelige, slik:
if(!ereg("^[A-Za-zÆØÅæøå]{4,30}$",$navn)){ $feil_navn="..inneholder ulovlige tegn"; }
-
Korriger meg hvis jeg tar feil, men det foregående eksempelet tar vel ikke hensyn til at det finnes flere IP-adresser i tabellen, i tillegg til litt annet småplukk.
Jeg ville ha plassert følgende kode i toppen av din "gjestebok.php":
/* Antar at databasetilkobling allerede er etablert */ $ip = $_SERVER["REMOTE_ADDR"]; $res = mysql_query ("SELECT ip FROM bannet WHERE ip = \"$ip\""); if (mysql_num_rows($res) > 0) { /* Går til banned.php */ header("Location: banned.php"); exit; } /* Dersom IP-adressen ikke var bannet fortsetter alt som vanlig herfra og ned.. */
-
Studér følgende særdeles nøye.. (som om du kommer til å gjøre det.. )
<?php /* Priser */ $tuborg = 11.50; $borg = 10; $heiniken = 26.50; /* Henter inn antall kroner */ if (isset($_POST["kroner"])) $kroner = floatval(str_replace(",", ".", $_POST["kroner"])); else $kroner = 0; ?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "DTD/xhtml1-strict.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> <style> body {font: 8pt "Trebuchet MS", Arial; } </style> <title>Pilskalkulator</title> </head> <body> <h1>Pilskalkulator</h1> Hvor mange kroner har du?<br /><br /> <form action="<?php echo $_SERVER["PHP_SELF"]; ?>" method="post"> <input name="kroner" type="text" value="<?php if ($kroner > 0) echo $kroner; ?>" /><br /><br /> <input type="submit" value="Regn ut!"> </form> <br /> <?php /* Beregner hva du har råd til */ if ($kroner > 0) { echo "Med $kroner krone(r) til disposisjon har du råd til følgende:\n"; echo "<ul>\n"; echo " <li>".intval($kroner / $tuborg)." stk Tuborg</li>\n"; echo " <li>".intval($kroner / $borg)." stk Borg</li>\n"; echo " <li>".intval($kroner / $heiniken)." stk Heiniken</li>\n"; echo "</ul>\n"; } ?> </body> </html>
Lagre koden som f. eks. pilskalkulator.php å legg den ut på webområdet ditt for å teste den.
-
En kul dørmatte.
Du vant..
Feil ved bruk av getElementById i Ajax
i Programmering og webutvikling
Skrevet
Rart, det fungerer utmerket når jeg kjører det her..
ajax.htm
dummy.htm