Jonas Skrevet 29. september 2004 Del Skrevet 29. september 2004 Heisann Siden jeg ikke fant annet enn udugelige greier om sql i php velger jeg å fikse systemet selv .. Så! Hvordan legger jeg til i en SQL-database? Jeg vil jo sjekke om den faktisk er lagt til etterpå, kan jeg gjøre det i phpmyadmin? Har flere spørsmål, men tar et om gangen. Takker for hjelp! Jonas Lenke til kommentar
Loomy Skrevet 29. september 2004 Del Skrevet 29. september 2004 (endret) Legge til: INSERT INTO tabell (kolonne1,kolonne2,kolonne3) VALUES ($variabel1,$variabel2,"en streng") EDIT: Og ja, du kan sjekke innholdet i tabellen fra mysqladmin.. Endret 29. september 2004 av Loomy Lenke til kommentar
Jonas Skrevet 29. september 2004 Forfatter Del Skrevet 29. september 2004 Det der er altså "query'en"? Hvor skal passordet, brukernavn og "localhost" inn når jeg kobler til? mysql_connect("","",""); @mysql_select_db("") or die( "Unable to select database"); $insertMySQL = "INSERT INTO tabell (kolonne1,kolonne2,kolonne3) VALUES ($variabel1,$variabel2,"en streng")"; mysql_query($insertMySQL); mysql_close(); Lenke til kommentar
Loomy Skrevet 29. september 2004 Del Skrevet 29. september 2004 mysql_connect("localhost","brukernavn","passord"); PS! I de fleste tilfeller er det localhost som er "URL" til mysql, men det finnes unntak.. f.eks hvis du bruker freesql.org eller noe sånt.. Lenke til kommentar
sprintf Skrevet 29. september 2004 Del Skrevet 29. september 2004 Når du skal gjoere dette selv er det best å lese gjennom hele kapittelet om mysql funksjoner i PHP manualen. I det lange loep vil du spare tid på dette. Du kan finne den online her: PHP: MySQL Functions - Manual Du kan også laste ned en winhelp fil (*.chm) fra nettstedet slik at du lese offline. Lenke til kommentar
Jonas Skrevet 29. september 2004 Forfatter Del Skrevet 29. september 2004 (endret) Edit: Fikk det til! Fikk error på linje 10 (Der hvor "values" begynner) <?php if($_POST['Passord'] = $_POST['Bekreft']) { mysql_connect("localhost","karlsrudlan","*******"); @mysql_select_db("karlsrudlan") or die( "Unable to select database"); $insertMySQL = "insert into members (brukernavn, passord, navn, etternavn, mail, telefon, adresse, aktiv) values ($_POST['Brukernavn'], $_POST['Passord'], $_POST['Navn'], $_POST['Etternavn'], $_POST['Mail'], $_POST['Telefonnr'], $_POST['Adresse'], "nei")"; mysql_query($insertMySQL); mysql_close(); } else { echo "Skriv inn to like passord!"; } ?> Parse error: parse error, expecting `T_STRING' or `T_VARIABLE' or `T_NUM_STRING' in /web/www/frac/users/karlsrudlan/registrer.php on line 10 Hva betyr det? Endret 29. september 2004 av Jonas Lenke til kommentar
Torbjørn Skrevet 29. september 2004 Del Skrevet 29. september 2004 ikke bruk '' rundt nøkler til associative arrays (dine $_POST) variable, når det allerede er innkapslet i en streng med "" rundt. altså: "$_POST[Passord]" Lenke til kommentar
Jonas Skrevet 29. september 2004 Forfatter Del Skrevet 29. september 2004 Ok, nå har jeg klart den biten hvor man legger til en ny bruker i databasen, men den mangler to viktige ting: Man skal ikke kunne velge et brukernavn som allerede er tatt, og jeg må ha "bekreftelse-mail". For å ikke registrere seg med samme navn tenkte jeg kunne gjøre noe sånt: $i = 0; while($i < 100) { if($_POST['Brukernavn'] == brukernavn - rad($i) { echo "Allerede opptatt!"; exit; } $i = $i + 1 } Her fortsetter koden med å registrere ... Noen som vet koden for å hente brukernavn på rad $i ? Lenke til kommentar
kakkle Skrevet 29. september 2004 Del Skrevet 29. september 2004 (endret) En grei måte å sjekke om brukernavn eksisterer: $sql = "SELECT * FROM tabell WHERE brukernavn = '$brukernavn'"; $res = mysql_query($sql) or die("FEIL"); $hits = mysql_num_rows($res); if($hits != 0) { // Fant en eller flere andre med oppgitt brukernavn Print "Brukernavn finnes fra før, velg et annet"; } else { // Registrer ny bruker } Endret 29. september 2004 av kakkle Lenke til kommentar
Jonas Skrevet 29. september 2004 Forfatter Del Skrevet 29. september 2004 $sql = "SELECT * FROM members WHERE brukernavn = " . $_POST['Brukernavn']; $res = mysql_query($sql) or die("FEIL"); $hits = mysql_num_rows($res); Jeg får bare opp "FEIL" hele tiden. Hvordan kan jeg få se den ordentlige feilmeldingen? Lenke til kommentar
Loomy Skrevet 29. september 2004 Del Skrevet 29. september 2004 Jeg får bare opp "FEIL" hele tiden. Hvordan kan jeg få se den ordentlige feilmeldingen? Endre kodesnutten til: $sql = "SELECT * FROM members WHERE brukernavn = " . $_POST['Brukernavn']; $res = mysql_query($sql) or die("FEIL:" . mysql_error()); $hits = mysql_num_rows($res); .. så får du se hva mysql har å si om saken Lenke til kommentar
Jonas Skrevet 29. september 2004 Forfatter Del Skrevet 29. september 2004 (endret) Unknown column 'Jonas' in 'where clause' Jeg har en greie som heter "members" og inni der er det "brukernavn" + flere. Hvofor får jeg den error'en da? $sql = "SELECT * FROM members WHERE brukernavn = " . $_POST['Brukernavn']; $res = mysql_query($sql) or die("FEIL:" . mysql_error()); $hits = mysql_num_rows($res); Endret 29. september 2004 av Jonas Lenke til kommentar
Torbjørn Skrevet 29. september 2004 Del Skrevet 29. september 2004 skriv ut hele queryet ditt og post det her. Lenke til kommentar
Loomy Skrevet 29. september 2004 Del Skrevet 29. september 2004 $brukernavn = $_POST['Brukernavn']; // sikker på det skal være stor B her? $sql = "SELECT * FROM members WHERE brukernavn = $brukernavn; $res = mysql_query($sql) or die("FEIL:" . mysql_error()); $hits = mysql_num_rows($res); Lenke til kommentar
Jonas Skrevet 29. september 2004 Forfatter Del Skrevet 29. september 2004 (endret) queryet? Mener du strukturen i databasen, eller koden? Poster begge jeg: <?php mysql_connect("localhost","karlsrudlan","******"); @mysql_select_db("karlsrudlan") or die( "Unable to select database"); if($_POST['Passord'] == $_POST['Bekreft']) { $sql = "SELECT * FROM `members` WHERE `brukernavn` = " . $_POST['Brukernavn']; $res = mysql_query($sql) or die("FEIL:" . mysql_error()); $hits = mysql_num_rows($res); if($hits != 0) { // Fant en eller flere andre med oppgitt brukernavn echo "Brukernavn finnes fra før, velg et annet"; mysql_close(); } else { $insertMySQL = "insert into members (brukernavn, passord, navn, etternavn, mail, telefon, adresse, aktiv) values (" . $_POST['Brukernavn'] . ", " . $_POST['Passord'] . ", " . $_POST['Navn'] . ", " . $_POST['Etternavn'] . ", " . $_POST['Mail'] . ", " . $_POST['Telefonnr'] . ", " . $_POST['Adresse'] . ", nei)"; mysql_query($insertMySQL); mysql_close(); echo "Du er registrert!"; } } else { echo "Skriv inn to like passord!"; } ?> Edit: sikker på det skal være stor B her? Det jeg skriver kommer jo opp i SQL-erroren så stor B er riktig. Endret 29. september 2004 av Jonas Lenke til kommentar
Torbjørn Skrevet 29. september 2004 Del Skrevet 29. september 2004 et "query" er det som du i php har mellom parentesene i mysql_query() det er den strengen som sendes til databaseserveren for prosessering som SQL så du kan f.eks gjøre noe sånt som: $query="select blabla $variable bla bla"; #sett inn det du før hadde i mysql_query(); echo "nå kjører jeg følgende query: $query<br/>\n"; mysql_query($query); Lenke til kommentar
betabagel Skrevet 29. september 2004 Del Skrevet 29. september 2004 Endre: $sql = "SELECT * FROM members WHERE brukernavn = " . $_POST['Brukernavn']; til: $sql = "SELECT * FROM members WHERE brukernavn = '" . $_POST['Brukernavn'] ."'"; brukernavnet er en verdi og verdien "Jonas" eksisterer ikke som kolonne. Sørg derfor for å innkapsle verdiene med slike : ' Lenke til kommentar
Jonas Skrevet 29. september 2004 Forfatter Del Skrevet 29. september 2004 (endret) Skjønner. Queryen er, som man ser over: "SELECT * FROM `members` WHERE `brukernavn` = " . $_POST['Brukernavn']; Skjønner ikke hvorfor den akkurat vil finne raden med navnet som postes i POST. Selv om jeg bytter plass på radnavn og POST får jeg error. Edit: Jeg tror jammen det funka, betabagel! Endret 29. september 2004 av Jonas Lenke til kommentar
Loomy Skrevet 29. september 2004 Del Skrevet 29. september 2004 (endret) Prøv denne: <?php mysql_connect("localhost","karlsrudlan","******"); @mysql_select_db("karlsrudlan") or die( "Unable to select database"); if($_POST['Passord'] == $_POST['Bekreft']) { $brukernavn = $_POST['Brukernavn']; $sql = "SELECT * FROM `members` WHERE `brukernavn` = $brukernavn"; $res = mysql_query($sql) or die("FEIL: " . mysql_error()); $hits = mysql_num_rows($res); if($hits != 0) { // Fant en eller flere andre med oppgitt brukernavn echo "Brukernavn finnes fra før, velg et annet"; mysql_close(); } else { $passord = $_POST['Passord']; $navn = $_POST['Navn']; $etternavn = $_POST['Etternavn']; $mail = $_POST['Mail']; $telefonnr = $_POST['Telefonnr']; $adresse = $_POST['Adresse']; $insertMySQL = "insert into members (brukernavn, passord, navn, etternavn, mail, telefon, adresse, aktiv) values ($brukernavn, $navn, $etternavn, $mail, $telefonnr, $adresse, 'nei')"; mysql_query($insertMySQL); mysql_close(); echo "Du er registrert!"; } } else { echo "Skriv inn to like passord!"; } ?> Har byttet ut alt det der post-greiene i spørringen med vanlige variabler, og fikset litt her og der.. Endret 29. september 2004 av Loomy Lenke til kommentar
kakkle Skrevet 29. september 2004 Del Skrevet 29. september 2004 Betabagel har rett. Må ha ' rundt verdien på det du spør etter. SLik er det også i den lille kodesnutten jeg postet lengre opp: brukernavn = '$brukernavn' 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å