Gå til innhold

If-løkken vil ikke fungere...


Anbefalte innlegg

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 av FredrikH
Lenke til kommentar
Videoannonse
Annonse

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

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 av FredrikH
Lenke til kommentar

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

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 av FredrikH
Lenke til kommentar

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 av FredrikH
Lenke til kommentar

<?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 av BigJackW
Lenke til kommentar

<?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 av Gjest
Lenke til kommentar

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 av FredrikH
Lenke til kommentar

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

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 konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...