AnjoEntertainment Skrevet 9. mars 2011 Del Skrevet 9. mars 2011 (endret) Jeg har laget et VIP-Medlemsscript, men når jeg skal lage en if-løkke for å sjekke om brukeren har kjøpt 1 måned, 2 måneder eller tre måneder ifra databasen, kommer det uansett feilmelding... DATABASE-Tabellene: Id | Brukerid | Kjopt_medlemskap | Medlemsskapid ----------------------------------------------- Id, Brukerid og kjopt_medlemskap sier seg selv, men medlemsskapid er enten 1, 2 eller 3. Medlemsskap id 2 er da altså to måneder, medlemsskaps id 1 er 1 måned osv. Så... scriptet jeg prøver å lage fungerer slik: $data = mysql_fetch_array(mysql_query("SELECT * FROM `vip` WHERE `brukerid` = '$info[id]'")); if($data[medlemsskapid] == '2'){ echo "Du har to måneder medlemsskap som du kjøpte $data[kjopt_medlemskap]"; Hva er det som er feil, hvorfor vil den ikke sjekke alle feltene som er tilknyttet brukeriden og se om han har 2 måneder medlemskap? Endret 9. mars 2011 av FredrikH Lenke til kommentar
Gjest Skrevet 9. mars 2011 Del Skrevet 9. mars 2011 Har du sjekket ut manualen? http://php.net/manual/en/function.mysql-fetch-array.php Lenke til kommentar
AnjoEntertainment Skrevet 9. mars 2011 Forfatter Del Skrevet 9. mars 2011 Har du sjekket ut manualen? http://php.net/manual/en/function.mysql-fetch-array.php Ja... Jeg tror ikke du helt skjønner problemet mitt. Greien er at if-løkken ikke viser det den er ment til å vise, men kjører uansett else-kommandoen! Lenke til kommentar
Gjest Skrevet 9. mars 2011 Del Skrevet 9. mars 2011 Hva gjør følgende kode da? $data = mysql_query("SELECT * FROM `vip` WHERE `brukerid` = '$info[id]'"); if(mysql_num_rows($data) > 0) { echo 'Det finnes verdier i databasen' while ($row = mysql_fetch_array($result, MYSQL_NUM)) { echo "Du har to måneder medlemsskap som du kjøpte $row[3]"; } } Lenke til kommentar
AnjoEntertainment Skrevet 9. mars 2011 Forfatter Del Skrevet 9. mars 2011 (endret) Hva gjør følgende kode da? $data = mysql_query("SELECT * FROM `vip` WHERE `brukerid` = '$info[id]'"); if(mysql_num_rows($data) > 0) { echo 'Det finnes verdier i databasen' while ($row = mysql_fetch_array($result, MYSQL_NUM)) { echo "Du har to måneder medlemsskap som du kjøpte $row[3]"; } } Kan du forklare hva denne gjør i forhold til min? La oss si at jeg skal sjekke om brukeren har medlemsskap id 2 eller 3, men om han har 1 blir det false. if($data[medlemsskapid] == '2' || $data[medlemsskapid] == '3'){ echo "Du har kjøpt to eller tre måneder medlemskap!"; }else{ echo "Du har bare 1 måned medlemskap!"; } Endret 9. mars 2011 av FredrikH Lenke til kommentar
AnjoEntertainment Skrevet 9. mars 2011 Forfatter Del Skrevet 9. mars 2011 Har prøvd så mange forskjellige metoder nå at jeg er helt utslitt! Noen som kan *prøve* å hjelpe meg? Lenke til kommentar
molty Skrevet 9. mars 2011 Del Skrevet 9. mars 2011 Istedenfor å sette ' rundt tallet, sett det uten '. Slik det vil se ut slik: if($data['medlemsskapid'] == 2 || $data['medlemsskapid'] == 3){ } Hvis ikke det funker, så bare print ut $data['medlemskapid'] og sjekk om den faktisk har noe verdi - Molty Lenke til kommentar
AnjoEntertainment Skrevet 10. mars 2011 Forfatter Del Skrevet 10. mars 2011 (endret) Istedenfor å sette ' rundt tallet, sett det uten '. Slik det vil se ut slik: if($data['medlemsskapid'] == 2 || $data['medlemsskapid'] == 3){ } Hvis ikke det funker, så bare print ut $data['medlemskapid'] og sjekk om den faktisk har noe verdi - Molty Jupp, verdi det har den. Greien er at det er flere ID-er i tabellen, men jeg skal ha tak i den ID-en som tilhører Brukeriden til den som er pålogget, noe den også får tak i, og så sjekke hvilken medlemsskapid han har... Huff, PHP kan være drit å forklare! La meg prøve det slik... La oss si at Magnus, brukerid 1, har disse innstillingene lagret i sin rute. ID: 1 - BRUKERID: 9 - Kjopt_Medlemskap: *UNIX-TIME* - Medlemsskapid: 3 Så sier vi at Arne har disse innsillingene i sin rute: ID: 8 - BRUKERID: 45 - Kjopt_Medlemskap: *UNIX-TIME* - Medlemsskapid: 2 Husk at 'ID' har auto_increment! Så er spørsmålet... Hvordan får jeg hentet ID-en til BRUKERID 45 hvor han har medlemsskapid 2? Endret 10. mars 2011 av FredrikH Lenke til kommentar
BigJackW Skrevet 10. mars 2011 Del Skrevet 10. mars 2011 (endret) <?php $SQL = "SELECT * FROM table WHERE brukerid = 45 AND medlemsskapid = 2"; /** * mysql_query(.... */ ?> Endret 10. mars 2011 av BigJackW Lenke til kommentar
AnjoEntertainment Skrevet 10. mars 2011 Forfatter Del Skrevet 10. mars 2011 (endret) Greit, ingenting av de over. La meg ta et nettbutikk eksempel, da! La oss si at vi har en tabell hvor brukere har kjøpt enkelte ting, og visst brukeren ikke eier f.eks 'Solstol' eller 'Solkrem', så får han FALSE. Du har f.eks dette i tabellen 'kjopteting': Id | Brukerid | Mobelid Så skal jeg finne ut om brukerid 9 eier mobelid 5 og 8, som er Solstol og Solkrem. $mobel = mysql_query("SELECT * FROM kjopteting WHERE brukerid = $info[id]"); $mobel = mysql_fetch_array($mobel); if($mobel[brukerid] == $info[id] && $mobel[mobelid] == 5 && $mobel[mobelid] == 8){ echo "Du har solkrem og solstol! Velkommen til Miami!"; }else{ echo "Du har ikke kjøpt solkrem og solstol i vår nettbutikk!"; } Problemet er at SELECT-forespørselen ikke henter ALLE tingene som Brukerid 9 har kjøpt, men kun den første tingen (ID-en) i nettbutikken, og derfor fungerer ikke if-løkken. Endret 10. mars 2011 av FredrikH Lenke til kommentar
BigJackW Skrevet 10. mars 2011 Del Skrevet 10. mars 2011 (endret) <?php $SQL = sprintf("SELECT * FROM kjopeting WHERE brukerid = %d", 9 ); $Result = mysql_query($SQL) or die( mysql_error() ); while ( $Row = mysql_fetch_assoc($Result) ) { if ( $Row['mobelid'] == 5 ) { $Solstol = true; } elseif ( $Row['mobelid'] == 8 ) { $Solkrem = true; } } if ( $Solstol && $Solkrem ) { echo "Du har solkrem og solstol! Velkommen til Miami!"; } else { echo "Du har ikke kjøpt solkrem og solstol i vår nettbutikk!"; } ?> evt. <?php $SQL = sprintf("SELECT * FROM kjopeting WHERE brukerid = %d", 9 ); $Result = mysql_query($SQL) or die( mysql_error() ); while ( $Row = mysql_fetch_assoc($Result) ) { $Kjopte_Mobler[] = $Row['mobelid']; } if ( in_array(5, $Kjopte_Mobler) && in_array(8, $Kjopte_Mobler) ) { echo "Du har solkrem og solstol! Velkommen til Miami!"; } else { echo "Du har ikke kjøpt solkrem og solstol i vår nettbutikk!"; } ?> Finnes sikkert noen bedre løsninger, men disse to funker i alle fall. Endret 10. mars 2011 av BigJackW Lenke til kommentar
Gjest Skrevet 10. mars 2011 Del Skrevet 10. mars 2011 (endret) <?php $con = mysql_connect("localhost", "root", "") or DIE(mysql_error); $db = mysql_select_db("test_if", $con) or DIE(mysql_error); $data = mysql_fetch_array(mysql_query("SELECT `vip`.*, FROM_UNIXTIME(`kjopt_medlemskap`) AS kjopt FROM `vip` WHERE `brukerid` = '1'")); if($data[medlemsskapid] == '2'){ echo "<br />"; echo "Du har to måneder medlemskap som du kjøpte $data[kjopt]"; } else { echo "Du har kjøpt 1 eller 3 måneder medlemskap"; } ?> Jeg hadde ingen problemer med koden over. EDIT: Nå har jeg lagret dato og tid når brukeren kjøpte medlemskap i UNIX Time Endret 10. mars 2011 av Gjest Lenke til kommentar
AnjoEntertainment Skrevet 11. mars 2011 Forfatter Del Skrevet 11. mars 2011 (endret) Metoden din fungerte BigJackW, takk for hjelpen! Takk for hjelpen din også, ColdIce ang. VIP-systemet! Eneste som gjenstår nå er hvordan jeg kan sjekke hvor mange antall solkrem, evt. andre ting, brukeren har. Har også en tabell som heter 'antall', som altså sier hvor mange antall brukeren har av *det* produktet. Sånn som dette: Du har: 9 solkrem(er) if($antall > 8){ echo "<b>Du har:</b> 9 solkrem(er)"; } Endret 11. mars 2011 av FredrikH Lenke til kommentar
Thomas. Skrevet 11. mars 2011 Del Skrevet 11. mars 2011 Eneste som gjenstår nå er hvordan jeg kan sjekke hvor mange antall solkrem, evt. andre ting, brukeren har. Har også en tabell som heter 'antall', som altså sier hvor mange antall brukeren har av *det* produktet. Sånn som dette: Du har: 9 solkrem(er) if($antall > 8){ echo "<b>Du har:</b> 9 solkrem(er)"; } Du har løsningen der. Bare sett $antall til verdien av raden (f.eks $row['solkrem']). 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å