2 tabbelen openen via php
Ben al een tijdje bezig, maar kom er echt niet uit.
Ik probeer uit de lijst van websites de website te pakken en dan moet die in users kijken of die account wel credits heeft om de website te laten zien.
Code (php)
1
2
3
4
5
6
2
3
4
5
6
$query = mysql_query("Select * from users WHERE user = '".$_SESSION['user']."' AND credits != '0'");
$res = mysql_fetch_array($query);
$bottom = mysql_fetch_assoc(mysql_query("SELECT * FROM `websites` WHERE credits != '".$res['credits']."' AND active = '1' ORDER BY RAND() LIMIT 1"));
$res = mysql_fetch_array($query);
$bottom = mysql_fetch_assoc(mysql_query("SELECT * FROM `websites` WHERE credits != '".$res['credits']."' AND active = '1' ORDER BY RAND() LIMIT 1"));
maar dan kijkt die heletijd alleen of de website active is.
heb al een paar methodes geprobeerd, daarom vraag ik nu of iemand me kan helpen.
het gaat om een traffic exchange
Groeten,
Robin
Welke velden wil je precies ophalen? Je haalt nu alles op (*), maar dat lijkt mij zwaar overkill!
Verder wil ik je er op wijzen dat je nu nog de oude mysql_.....() functies gebruikt. Deze zijn in PHP 7 verdwenen. Daarom is mijn advies om dit te herschrijven naar mysqli_....() functies. Nu heb je kans dat je site elk moment kan 'breken' als je hosting overschakelt op PHP 7, en dan is het een kwestie van ombouwen tot je site weer werkt.
Gewijzigd op 15/03/2019 17:02:16 door - Ariën -
Nu wil ik dat die uit users de credits van de site haald die geopend gaat worden, in de table van websites staat ook de username van de gene die de site heeft toegevoegd.
Hij draait op vps, dus kan zelf bepalen waneer update naar php 7 dus dat komt later nog wel.
PHP 5.5 t/m 7.0 is momenteel al End Of Life en krijgen geen security-patches meer.
Maar laat je databasestructuur van die twee tabellen eens zien, en welke velden je wilt tonen?
Ik hoop eigenlijk dat je een uniek ID-nummer hebt voor de koppelingen, en niet op de naam data aan elkaar koppelt. Want als de naam aangepast moet worden (privacy, mogelijk zelfs AVG), dan wordt het een complex verhaal.
Gewijzigd op 15/03/2019 17:08:12 door - Ariën -
Code (php)
1
2
3
4
5
6
7
8
2
3
4
5
6
7
8
CREATE TABLE `website` (
`id` int(11) NOT NULL,
`link` varchar(150) NOT NULL,
`kliks` int(15) NOT NULL DEFAULT '0',
`gebruiker` varchar(150) NOT NULL DEFAULT '',
`gehad` int(15) NOT NULL DEFAULT '0',
`active` varchar(255) NOT NULL DEFAULT 'Yes'
) ENGINE=MyISAM DEFAULT CHARSET=latin1;
`id` int(11) NOT NULL,
`link` varchar(150) NOT NULL,
`kliks` int(15) NOT NULL DEFAULT '0',
`gebruiker` varchar(150) NOT NULL DEFAULT '',
`gehad` int(15) NOT NULL DEFAULT '0',
`active` varchar(255) NOT NULL DEFAULT 'Yes'
) ENGINE=MyISAM DEFAULT CHARSET=latin1;
Dit is van de users
Code (php)
1
2
3
4
5
6
7
8
9
10
11
2
3
4
5
6
7
8
9
10
11
CREATE TABLE `users` (
`id` int(11) NOT NULL,
`user` varchar(32) NOT NULL,
`pass` varchar(32) NOT NULL,
`vip` varchar(4) NOT NULL DEFAULT 'no',
`credits` decimal(10,1) NOT NULL DEFAULT '0.0',
`ip` varchar(15) NOT NULL,
`referral` varchar(32) DEFAULT NULL,
`slot` int(15) NOT NULL DEFAULT '3',
`totalhits` int(15) NOT NULL DEFAULT '0',
) ENGINE=MyISAM DEFAULT CHARSET=latin1;
`id` int(11) NOT NULL,
`user` varchar(32) NOT NULL,
`pass` varchar(32) NOT NULL,
`vip` varchar(4) NOT NULL DEFAULT 'no',
`credits` decimal(10,1) NOT NULL DEFAULT '0.0',
`ip` varchar(15) NOT NULL,
`referral` varchar(32) DEFAULT NULL,
`slot` int(15) NOT NULL DEFAULT '3',
`totalhits` int(15) NOT NULL DEFAULT '0',
) ENGINE=MyISAM DEFAULT CHARSET=latin1;
Toevoeging op 15/03/2019 17:42:41:
heb nu zo iets maar nu pakt die geen website. uit de database
Laat eens wat data zien zodat we weten hoe de koppeling hoort.
Gewijzigd op 15/03/2019 17:44:20 door - Ariën -
ja in tabel website heet de user gebruiker
Die velden komen qua data dus overeen met elkaar?
Is een ID-nummer eigenlijk niet verstandiger?
dus hou het liever op username.
users.user dat is de username.
en dat wordt in websites toegevoegd aan website.gebruiker
Code (php)
1
2
3
2
3
SELECT u.id,u.user,u.pass,u.credits,w.link,w.kliks
FROM users u
LEFT JOIN websites w ON u.user = w.gebruiker
FROM users u
LEFT JOIN websites w ON u.user = w.gebruiker
Dit moet als query werken.
dankje voor u hulp ga hier weer even mee aan de slag, kijken of het hier mee lukt
`active` varchar(255) NOT NULL DEFAULT 'Yes'
"SELECT * FROM `website` WHERE `active` = '1'
De waardes 'Yes' en '1' komen niet noodzakelijkerwijs overeen. ;-)
Ik weet verder niet waar dat veld 'active' voor wordt gebruikt, maar als het alleen is om een ja/nee-waarde op te slaan, zou ik voor een int of tinyint gaan in plaats van voor een varchar. Eventueel een bit, maar ik heb het zelf nooit echt handig gevonden om met dat datatype te werken. In ieder geval voorkom je er de spraakverwarring mee of je nu ja/1 of nee/0 moet zeggen.
Die moet kijken of de site getoond moet worden ze kunnen het op pauze zetten dan komt er No te staan.
Heb Yes en No staan wegens dat ze dat kunnen zien in de dashboard anders zien ze 1 en 0 ;)
Als je dit als TINYINT opslaat, kan je het zelfs als true/false boolean behandelen.
Gewijzigd op 15/03/2019 23:19:32 door - Ariën -
Hij stopt soms wel als iemand 0 credits behaald maar soms gaat die ook de - in heb nu dit allebij geprobeerd maar heb zelfde probleem.
Code (php)
1
$query = mysql_query ( "SELECT * FROM `websites` WHERE `active` = 'Yes' AND (SELECT `kliks` FROM `users` WHERE `user` = `websites`.`gebruiker` AND `kliks` != '0') ORDER BY RAND() LIMIT 1" );
Code (php)
1
$query = mysql_query ( "SELECT * FROM `websites` WHERE `active` = 'Yes' AND (SELECT `kliks` FROM `users` WHERE `user` = `websites`.`gebruiker` AND `kliks` > '0') ORDER BY RAND() LIMIT 1" );
Code (php)
1
2
3
4
2
3
4
$bottom = mysql_fetch_assoc($query);
mysql_query("UPDATE users SET kliks = kliks-1 WHERE user='".$bottom['gebruiker']."'") OR DIE;
mysql_query("UPDATE users SET kliks = kliks-1 WHERE user='".$bottom['gebruiker']."'") OR DIE;
hopelijk heeft iemand nog een oplossing hier voor hij moet de link niet meer geven als credits (kliks) dan op 0 komt.
p.s heb geprobeerd met mysqli maar dan werkt het niet dan krijg ik wit scherm .. :/
Gewijzigd op 16/03/2019 18:52:17 door robin .
Vaak moet er een extra parameter mee worden genomen van de connection.
Zie ook: www.php.net/mysqli_query
Maar jij hebt het over je probleem over 'soms'. Fouten worden gelukkig niet door een toevalsgenerator bepaald, dus er moet ergens een link zijn. Dus wanneer gaat het exact fout?
Ik heb de fout al gevonden, in de app was ik het vergeten het er in te zetten.