ZeRKoX Skrevet 9. desember 2007 Del Skrevet 9. desember 2007 Hei. Jeg driver og lager et påloggingsystem, og jeg lager en registreringsfunksjon. Problemet mitt er at scriptet alltid retunerer med "brukeren finnes allerede". Kan dere se hva som er feil? <?php if (isset($_POST['brukernavn'])) { $brukernavn = mysql_real_escape_string($_POST['brukernavn']); $passord = mysql_real_escape_string($_POST['passord']); $fornavn = mysql_real_escape_string($_POST['fornavn']); $etternavn = mysql_real_escape_string($_POST['etternavn']); $tilgang = '4'; include('funksjoner/connect.php'); mysql_select_db("db", $con); $mysql_sporring = "SELECT * FROM brukere where brukernavn='$brukernavn'"; $resultat = mysql_query($mysql_sporring); if (mysql_affected_rows() == 0) { $sql="INSERT INTO bruker (brukernavn, passord, fornavn, etternavn, tilgang) VALUES ('$brukernavn', '$passord', '$fornavn', '$etternavn', '$tilgang')"; if (!mysql_query($sql,$con)) { die('Error: ' . mysql_error()); } else echo "1 bruker er lagt til"; } else echo 'brukeren finnes allerede'; mysql_close($con); } else { echo ' <form action="index.php?side=registrer" method="post"> <table border="0"> <tr> <td>Brukernavn</td> <td><input type="text" name="brukernavn"></td> </tr> <tr> <td>Passord</td> <td><input type="password" name="passord"></td> </tr> <tr> <td>Fornavn</td> <td><input type="text" name="fornavn"></td> </tr> <tr> <td>Etternavn</td> <td><input type="text" name="etternavn"></td> </tr> <tr> <td><input type="submit" value="registrer"></td> <td> </td> </tr> </table> </form> '; } ?> Lenke til kommentar
itsmebth Skrevet 9. desember 2007 Del Skrevet 9. desember 2007 Bruk mysql_num_rows() istedenfor mysql_affected_rows(). Lenke til kommentar
ZeRKoX Skrevet 9. desember 2007 Forfatter Del Skrevet 9. desember 2007 Da ble brukeren lagt til uansett, og jeg fikk feilmeldingen: Warning: Wrong parameter count for mysql_num_rows() in /var/www/html/*****/funksjoner/registrer.php on line 17 Lenke til kommentar
itsmebth Skrevet 9. desember 2007 Del Skrevet 9. desember 2007 Klarer du å gjette hvorfor? Prøv trykke på mysql_num_rows i den forrige posten min og les der. mysql_num_rows tar queryen som første parameter. Lenke til kommentar
ZeRKoX Skrevet 9. desember 2007 Forfatter Del Skrevet 9. desember 2007 Sorry for et kansje dumt spørsmål, men hvordan bør jeg endre koden for å få det til å virke? Jeg forstod ikke helt hvordan det fungerte der... Lenke til kommentar
Gjest Slettet+142 Skrevet 10. desember 2007 Del Skrevet 10. desember 2007 endre if (mysql_affected_rows() == 0) til if (mysql_num_rows($resultat) == 0) Lenke til kommentar
ZeRKoX Skrevet 10. desember 2007 Forfatter Del Skrevet 10. desember 2007 Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in /var/www/html/*****/funksjoner/registrer.php on line 17 Lenke til kommentar
Flin Skrevet 10. desember 2007 Del Skrevet 10. desember 2007 Det er rart, jeg har nemmelig testa det og det fuker fint. Prøv med: $mysql_sporring = "SELECT * FROM table where blabal'"; $resultat = mysql_query($mysql_sporring) or die (mysql_error()); if (mysql_num_rows($resultat) == 1) { echo "FINNES"; } else { echo " FINNES IKKE" } ; Lenke til kommentar
Thomas. Skrevet 10. desember 2007 Del Skrevet 10. desember 2007 Prøv heller dette: http://www.evolt.org/article/comment/17/60265/index.html Funker mye bedre! Og veldig lett og endre også! Lenke til kommentar
Martin A. Skrevet 11. desember 2007 Del Skrevet 11. desember 2007 Burde ikke den hylt ut at mysql_real_escape_string() ikke fungerer? I og med at MySQL-tilkobling opprettes først etter at funksjonen er brukt. "or die( mysql_error() )" er uansett kjekt å bruke etter en spørring. Lenke til kommentar
BigJackW Skrevet 11. desember 2007 Del Skrevet 11. desember 2007 "or die( mysql_error() )" er uansett kjekt å bruke etter en spørring. ... under utvikling. En skal -aldri- printe ut mysq-feilene til brukerne. Man vet aldri hvilken ondsinnet bruker som besøker siden. Lenke til kommentar
Gjest Slettet+142 Skrevet 11. desember 2007 Del Skrevet 11. desember 2007 Er det snakk om mange "or die( mysql_error() )" da, er det kanskje lurt å ha en funksjon for det, som sjekker en get-variabel eller lignende bare for å sjekke om mysql-errors skal printes ut. Er jo mye enklere å kunne kun endre på 1 variabel enn å måtte kommentere ut eller fjerne det for hvert sted den skal kjøres function die_m(){ /* # $variabel = $_GET["verbose"]; // GET-variabel # $variabel = $_SESSION["verbose"]; // SESSION-variabel # $variabel = true; // eller false - satt manuelt i funksjonen */ $variabel = $_GET["verbose"]; if( $variabel == true ) die( mysql_error() ); die(); } //Eksempelbruk: $q = mysql_query("SELECT ...") or die_m(); Mulig at jeg tar feil også altså.. Lenke til kommentar
Martin A. Skrevet 11. desember 2007 Del Skrevet 11. desember 2007 (endret) For å gjøre det enklere kan man lage sin egen query-funksjon. //---------------- // Debug constant // Set to 1 to enable debugging //-------------- define( 'DEBUG', 0 ); function query( $query, $force_debug='0' ) { if( DEBUG == 1 or $force_debug == 1 ) { mysql_query( $query ) or die( "<textarea>" . mysql_error() . "</textarea>" ); } else { @mysql_query( $query ); // @ kan selvfølgelig sløyfes } } query( "SELECT bar FROM foo" ); query( "SELECT bar FROM foo", 1 ); Endret 11. desember 2007 av M4rTiN 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å