Kapli Skrevet 1. september 2007 Del Skrevet 1. september 2007 (endret) Hei hei, er ganske ny på både php, html og ja alt nesten hehe ;P Har lest noen tutorials og sånt på html, og det er så lett uansett hehe.. Men til php kjøpte jeg en bok som heter Webprogrammering i PHP (den er på norsk), og har lest den i sommerferien Den var veldig bra, men det er mye jeg lurer på og sånt og jeg får mange errors når jeg prøver meg på noe hehe.. Men nå har jeg hvertfall blitt kvitt errorene i mitt første registrerings script, men det funker fortsatt ikke http://pastebin.com/m3e238c79 Databasen: http://silentium-guild.org/upload/images/kapli/oppsett.jpg Enlighten me Ty in advance -Kapli Oppdatert: Les siste post Update2: Les siste post igjen Endret 9. september 2007 av Kapli Lenke til kommentar
racin Skrevet 1. september 2007 Del Skrevet 1. september 2007 Så kjapt over det, men; $_POST["bruker"] = $bruker; $_POST["passord"] = $passord; $_POST["epost"] = $epost; $_POST["fnavn"] = $fnavn; $_POST["enavn"] = $enavn; Prøv å bytte plass på $_POST og variablen. (Motsatt side av likhetstegnet). Lenke til kommentar
Kapli Skrevet 1. september 2007 Forfatter Del Skrevet 1. september 2007 (endret) Hm... det virket, men noe var galt med SQL greia tror jeg så ingenting ble satt inn, kan du komme på hva? Endret 1. september 2007 av Kapli Lenke til kommentar
racin Skrevet 1. september 2007 Del Skrevet 1. september 2007 (endret) Du kan prøve med noe slikt; if(!mysql_query($sql, $tilkobling)) echo mysql_error(); Isteden for "mysql_query($sql, $tilkobling);" Endret 1. september 2007 av ylox Lenke til kommentar
Kapli Skrevet 1. september 2007 Forfatter Del Skrevet 1. september 2007 Column count doesn't match value count at row 1 http://silentium-guild.org/upload/images/kapli/oppsett.jpg Må jeg spesifere id? Trodde den ble fylt inn automagisk :S Lenke til kommentar
gather Skrevet 1. september 2007 Del Skrevet 1. september 2007 (endret) Skal man ikke definere hvilke felter man setter verdiene inn i når man kjører en insert-spørring? Slik som dette : $sql = "INSERT INTO `blog_posts` (`post_id`, `title`, `short`, `longst`, `user_id`, `date`, `status`) VALUES (NULL, '$title', '$short', '$long', $author, NOW(), $status);"; (eksempel fra et av mine script) Om det er oppsettet ditt på bildet så skal id bli satt inn automagisk ja.. Endret 1. september 2007 av gather Lenke til kommentar
Crowly Skrevet 1. september 2007 Del Skrevet 1. september 2007 (endret) $sql = "INSERT INTO webside VALUES ('$bruker', '$passord', '$epost'"; if(!empty($fnavn)) { $sql .= ", '$fnavn'"; } if(!empty($enavn)) { $sql .= ", '$enavn'"; } $sql .= ");"; Du har ikke spesifisert hvilke felter values skal inn i. Rett syntax er INSERT INTO tabell (felt1,felt2,felt3,...,feltN) VALUES (verdi1,verdi2,verdi3,....,verdiN) Når du bruker variabler inne i en streng, så sette dem inne i { }, det gjør det enklere for php å finne ut hvor variablen start og stopper. Så du må endre til noe slikt: PHP <?php$sql = "INSERT INTO webside (bruker,passord,epost"; if(!empty($fnavn)) $sql.= ',fnavn') if(!empty($enavn)) $sql.=',enavn'; $sql.=") VALUES ('{$bruker}', '{$passord}', '{$epost}'"; if(!empty($fnavn)) $sql .= ", '{$fnavn}'"; if(!empty($enavn)) $sql .= ", '{$enavn}'"; $sql .= ")"; mysql_query($sql)||die('<div>Feil i: '.$sql. '<br />Mysql: '.mysql_error().'</div>'); ?> Endret 1. september 2007 av crowly Lenke til kommentar
Kapli Skrevet 1. september 2007 Forfatter Del Skrevet 1. september 2007 (endret) Man må ikke INSERT INTO blabla VALUES ('bla', 'bla', 'bla'); Skal funke helt fint, men jeg er litt usikker nå hvis jeg må spesifisere ID hvordan skal jeg da få den riktige? ID er jo satt til auto_increment. Det kan være man må gjøre som han over meg, men da oppstår et annet problem. Hvordan skal jeg legge til fornavn og etternavn ettersom om de fins eller ikke :S Edit: Takk crowly, prøver meg på det og kommer med resultatet snarlig :!: Smart hehe Endret 1. september 2007 av Kapli Lenke til kommentar
racin Skrevet 1. september 2007 Del Skrevet 1. september 2007 Prøv å bare lag et blankt felt for ID, så skal mysql fylle det inn automatisk. Lenke til kommentar
Kapli Skrevet 1. september 2007 Forfatter Del Skrevet 1. september 2007 Det virket! Takk alle sammen, bare ett spørsmål til: Hvis jeg ikke fyller inn fornavn så skal den si brukernavnet isteden, men det gjør den ikke. Hva er galt med if(isset($fnavn)){ $skriv = $fnavn; } else { $skriv = $bruker; } Den fulle koden nå: http://pastebin.com/m7ae13767 Lenke til kommentar
gather Skrevet 1. september 2007 Del Skrevet 1. september 2007 Hmm.. skal ikke være nødvendig å ha et tomt felt for ID den skal bli med automagisk selv. Den spørringa jeg la ut fungerer helt fint og den får med seg en id. Mulig det er noe med serverkonfigurasjonen min !?! Lenke til kommentar
Kapli Skrevet 1. september 2007 Forfatter Del Skrevet 1. september 2007 (endret) Hm.. måtte bruke !empty() i steden for isset(), jeg trodde de ga samme resultat? Endret 1. september 2007 av Kapli Lenke til kommentar
Martin A. Skrevet 1. september 2007 Del Skrevet 1. september 2007 (endret) PHP <?php $var = ""; echo ( isset( $var ) ) ? "Sant" : "Feil"; echo ( empty( $var ) ) ? "Sant" : "Usant"; /* * Begge vil returnere "Sant" iom at $var er satt, men den er tom. * Fjerner du $var = "", vil den isset returnere "Feil", * men empty() vil fortsatt være sann. * Endrer du verdien til $var til noe helt annet * vil isset være sann, men empty() vil være "Usant" */ ?> Endret 1. september 2007 av M4rTiN Lenke til kommentar
Crowly Skrevet 1. september 2007 Del Skrevet 1. september 2007 (endret) Du må ikke spesifisere id i INSERT når du har auto_increment, mysql setter den verdien selv. Hvis du ønsker å ha brukernavn i stedet for fnavn når fnavn er blank/tom så gjør slik PHP <?php$sql = "INSERT INTO webside (bruker,passord,epost,fnavn"; if(empty($fnavn)) $fnavn=$bruker; if(!empty($enavn)) $sql.=',enavn'; $sql.=") VALUES ('{$bruker}', '{$passord}', '{$epost},'{$fnavn}''"; if(!empty($enavn)) $sql .= ", '{$enavn}'"; $sql .= ")"; mysql_query($sql)||die('<div>Feil i: '.$sql. '<br />Mysql: '.mysql_error().'</div>'); ?> Endret 1. september 2007 av crowly Lenke til kommentar
ZoRaC Skrevet 1. september 2007 Del Skrevet 1. september 2007 Hm.. måtte bruke !empty() i steden for isset(), jeg trodde de ga samme resultat? 9403170[/snapback] I et skjema med POST så er alle felt "satt", men med tom verdi. Derfor må man bruke empty() istedet for isset() på POST-verdier. Lenke til kommentar
Crowly Skrevet 2. september 2007 Del Skrevet 2. september 2007 Når man utvikler skjerma funksjoner med post/get så er det veldig nyttig å legge til PHP <?phpecho '<pre>'; // bytt ut med $_GET når nødvendig print_r($_POST); echo '</pre>'; ?> i starten av skriptet, da får du en lett lesbar utskrift av inneholdet i $_POST eller $_GET variablen (eller andre arrays), og ser hvilket felter som er satt eller ikke. Lenke til kommentar
Kapli Skrevet 8. september 2007 Forfatter Del Skrevet 8. september 2007 Hei igjen, tenkte jeg skulle spørre noen fler spørsmål siden supporten her er så bra Noen som skal på The Experience i høst ferien her btw? Her er da registrerings scriptet (som funker helt fint ) http://pastebin.com/m4b0c2fe5 Og her er logg inn scriptet http://pastebin.com/m2e18b389 Skal seff gjøre mer på logg inn scriptet senere, det funket hvis jeg ikke brukte md5(). Her er hva som skjer: INSERT INTO webside (bruker, passord, epost, fornavn, etternavn) VALUES ('kapleh', '8c476157cc6fdef856a880ad5d19edc5', 'kim', 'kim', 'hovden'); og SELECT * FROM webside WHERE bruker = 'kapleh' AND passord = '8c476157cc6fdef856a880ad5d19edc5'; Og her er passordet som står i databasen: 8c476157cc6fdef856a8 Jeg forstår ikke, hvorfor blir ikke riktig md5 hash satt inn og tatt ut :S Har også prøvd med mysql funksjonen PASSWORD(), det funket heller ikke. Any help appreciated as always - Kapli Lenke til kommentar
Intramin Skrevet 8. september 2007 Del Skrevet 8. september 2007 (endret) Sånn som jeg forstår det så er det fordi passord-feltet i databasen er VARCHAR(20) og derfor tar den bort resten av det hashede passordet i databasen? Prøv å endre det til VARCHAR (30) eller (35) (leste feil i phpMyAdmin, var varchar ja...) Endret 8. september 2007 av Intramin Lenke til kommentar
Gjest Slettet+142 Skrevet 8. september 2007 Del Skrevet 8. september 2007 (endret) Jeg antar du mener VARCHAR, Intramin. Men den lengste hashen som er av typen PASSWORD() i min login-tabell er 41 tegn lang, såeh.. Selv har jeg satt feltet til VARCHAR(50) Ellers kan man lese http://php.net/md5 og se at returverdien er en streng på 32 tegn.. Endret 8. september 2007 av Slettet+142 Lenke til kommentar
Kapli Skrevet 8. september 2007 Forfatter Del Skrevet 8. september 2007 Selvfølgelig! Er det mulig å være så dum? >.> Tusen takk, enda en dum feil hehe Lenke til kommentar
Anbefalte innlegg
Opprett en konto eller logg inn for å kommentere
Du må være et medlem for å kunne skrive en kommentar
Opprett konto
Det er enkelt å melde seg inn for å starte en ny konto!
Start en kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå