2 tabbelen openen via php

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Robin .

robin .

15/03/2019 16:53:42
Quote Anchor link
Best,

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)
PHP script in nieuw venster Selecteer het PHP script
1
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"));



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
 
PHP hulp

PHP hulp

22/11/2024 09:34:46
 
- Ariën  -
Beheerder

- Ariën -

15/03/2019 16:58:07
Quote Anchor link
Dit klinkt alsof je een JOIN moet gebruiken. Hoe ziet je data-structuur eruit?
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 -
 
Robin .

robin .

15/03/2019 17:04:21
Quote Anchor link
Heb een table voor de websites en voor de users.
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.
 
- Ariën  -
Beheerder

- Ariën -

15/03/2019 17:06:43
Quote Anchor link
Ik zou er niet te lang mee wachten, en al met de ombouw naar mysqli gaan beginnen.
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 -
 
Robin .

robin .

15/03/2019 17:12:10
Quote Anchor link
Dit is waar de websites worden opgeslagen

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
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;

Dit is van de users
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
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;


Toevoeging op 15/03/2019 17:42:41:

heb nu zo iets maar nu pakt die geen website. uit de database
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
$bottom = mysqli_query ( "SELECT * FROM `website` WHERE `active` = '1' AND (SELECT `kliks` FROM `users` WHERE `user` = `website`.`gebruiker` ) ORDER BY RAND() LIMIT 1" );
 
- Ariën  -
Beheerder

- Ariën -

15/03/2019 17:43:58
Quote Anchor link
Dan hoort de koppeling bij gebruiker uit de tabel website te liggen? Klopt dat?
Laat eens wat data zien zodat we weten hoe de koppeling hoort.
Gewijzigd op 15/03/2019 17:44:20 door - Ariën -
 
Robin .

robin .

15/03/2019 17:46:56
Quote Anchor link
Wat wilt u nog meer zien dan?

ja in tabel website heet de user gebruiker
 
- Ariën  -
Beheerder

- Ariën -

15/03/2019 17:49:48
Quote Anchor link
Dus er de koppeling ligt op users.username en website.gebruiker?
Die velden komen qua data dus overeen met elkaar?

Is een ID-nummer eigenlijk niet verstandiger?
 
Robin .

robin .

15/03/2019 17:52:43
Quote Anchor link
De rest loopt allemaal op de username dus als dit dan id wordt moet ik te veel aanpassen daarvoor.
dus hou het liever op username.

users.user dat is de username.
en dat wordt in websites toegevoegd aan website.gebruiker
 
- Ariën  -
Beheerder

- Ariën -

15/03/2019 18:01:49
Quote Anchor link
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
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


Dit moet als query werken.
 
Robin .

robin .

15/03/2019 18:21:20
Quote Anchor link
dankje voor u hulp ga hier weer even mee aan de slag, kijken of het hier mee lukt
 
Willem vp

Willem vp

15/03/2019 18:51:59
Quote Anchor link
Wat me ook opvalt:

`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.
 
Robin .

robin .

15/03/2019 23:03:54
Quote Anchor link
Dankje voor je reactie die 1 moest ook Yes zijn. Typ foutje:/
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 ;)
 
- Ariën  -
Beheerder

- Ariën -

15/03/2019 23:18:03
Quote Anchor link
Hè? Waarom bouw je dan geen vertaal-slag in je site in, die in het geval van 0 'Nee' laat zien. Dat lijkt me véél logischer!

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 -
 
Robin .

robin .

16/03/2019 18:31:41
Quote Anchor link
Heb deze code het werkt nu met de credits uit de users tehalen en dan laat die de link zien.
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)
PHP script in nieuw venster Selecteer het PHP script
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)
PHP script in nieuw venster Selecteer het PHP script
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)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
$bottom = mysql_fetch_assoc($query);


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 .
 
- Ariën  -
Beheerder

- Ariën -

16/03/2019 19:59:25
Quote Anchor link
Even een noot: MySQLi gebruiken is niet overal enkel een 'i' toevoegen.
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?
 
Robin .

robin .

16/03/2019 20:30:54
Quote Anchor link
Dankje voor link van mysqli

Ik heb de fout al gevonden, in de app was ik het vergeten het er in te zetten.
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.