hulp gezocht bij get methode
Pagina: « vorige 1 2 3 4 5 volgende »
Ik heb het uit mijn hoofd geschreven, dus er kunnen mogelijk fouten in zitten.
Gebruikers:
- id (auto. incre. prim key)
- gebruikersnaam
- mailadres
- plaats
Tickets:
- id (auto. incre. prim key)
- gebruikersnaamID (is in de query een JOIN met 'id' in de gebruikerstabel.
- naam
- beschrijving
- Etc...
Code (php)
1
2
3
4
5
6
7
2
3
4
5
6
7
<?php
$sql = "SELECT u.id, u.gebruikersnaam, u.mailadres, u.plaats, t.beschrijving, t.naam
FROM users u
JOIN tickets t ON t.gebruikersID = u.gebruiker AND t.naam = '".$conn->real_escape_string($_GET['tickets'])."'
WHERE u.gebruikersnaam= '".$conn->real_escape_string($_GET['naam'])."'";
$result = $conn->query($sql);
?>
$sql = "SELECT u.id, u.gebruikersnaam, u.mailadres, u.plaats, t.beschrijving, t.naam
FROM users u
JOIN tickets t ON t.gebruikersID = u.gebruiker AND t.naam = '".$conn->real_escape_string($_GET['tickets'])."'
WHERE u.gebruikersnaam= '".$conn->real_escape_string($_GET['naam'])."'";
$result = $conn->query($sql);
?>
Je moet er wel op letten dat er geen meerdere gebruikersnamen kunnen bestaan. Dus maak deze uniek met een UNIQUE in je database.
Gewijzigd op 23/06/2019 22:41:48 door - Ariën -
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
CREATE TABLE `tickets` (
`id` int(11) NOT NULL,
`gebruikersID` varchar(255) NOT NULL UNIQUE,
`ticket_titel` varchar(255) NOT NULL,
`ticket_header` varchar(1024) NOT NULL,
`ticket_datum` date NOT NULL,
`ticket_dag` varchar(255) NOT NULL,
`ticket_plaats` varchar(255) NOT NULL,
`prijs` int(11) NOT NULL,
`aantal` int(11) NOT NULL,
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
CREATE TABLE `users` (
`id` int(11) NOT NULL AUTO_INCREMENT PRIMARY KEY,
`gebruiker` varchar(255) NOT NULL,
`plaats` varchar(255) NOT NULL,
`avatar` varchar(1024) NOT NULL,
`vrienden` varchar(255) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
dan is dit de sql ?
Gewijzigd op 23/06/2019 23:48:02 door pascal klienstra
Wat zou in tickets.ticket_dag moeten staan? Is dit niet afleidbaar uit ticket_datum?
Overigens als waarden niet negatief zijn zou je hier unsigned bij moeten zetten, anders gooi je effectief de helft van het waardenbereik weg.
Wat staat er in users.vrienden? Zou dit niet een aparte koppeltabel moeten zijn waarbij je twee verschillende users aan elkaar knoopt?
Misschien heeft dit ontwerp nog wat iteraties nodig :p.
gebruiker is 5 dus moet bij table tickets zelfde gebruikersid hebben als van users begrijp ik ? zou je misschien me er mee kunnen helpen een example laten zien ?
En zorg ook even dat het id van de ticket-tabel Primairy Key en auto-increment is. Je wilt immers altijd een automatisch id-nummer genereren bij het aanmaken.
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
CREATE TABLE `tickets` (
`id` int(11) AUTO_INCREMENT PRIMARY KEY,
`gebruikersID` varchar(255) NOT NULL UNIQUE,
`ticket_titel` varchar(255) NOT NULL,
`ticket_header` varchar(1024) NOT NULL,
`ticket_datum` date NOT NULL,
`ticket_dag` varchar(255) NOT NULL,
`ticket_plaats` varchar(255) NOT NULL,
`prijs` int(11) NOT NULL,
`aantal` int(11) NOT NULL,
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
CREATE TABLE `users` (
`id` int(11) NOT NULL AUTO_INCREMENT PRIMARY KEY,
`gebruiker` varchar(255) NOT NULL,
`plaats` varchar(255) NOT NULL,
`avatar` varchar(1024) NOT NULL,
`vrienden` varchar(255) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
zo ?
en hoe is de sql query dan als ik een advertentie maak ik weet dat je dat doet met update zou je een example kunnen geven zodat ik verder kan en dat die de id wel pakt van user naar tickets
(PS: Gebruik a.u.b interpuncties in je berichten hier. Dat maakt het wat beter leesbaar.)
zodat tickets
wel meer gebruikers tickets aan kunt maken als je me daar nog mee kunt helpen dan weet ik genoeg
Dus vertel eens wat meer over structuur en de workflow van je script.
Gewijzigd op 24/06/2019 02:38:23 door pascal klienstra
Heb je mijn query al kunnen testen?
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
CREATE TABLE `tickets` (
`id` int(11) AUTO_INCREMENT PRIMARY KEY,
`gebruikersID` varchar(255) NOT NULL UNIQUE,
`ticket_titel` varchar(255) NOT NULL,
`ticket_header` varchar(1024) NOT NULL,
`ticket_datum` date NOT NULL,
`ticket_dag` varchar(255) NOT NULL,
`ticket_plaats` varchar(255) NOT NULL,
`prijs` int(11) NOT NULL,
`aantal` int(11) NOT NULL,
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
CREATE TABLE `users` (
`id` int(11) NOT NULL AUTO_INCREMENT PRIMARY KEY,
`gebruiker` varchar(255) NOT NULL,
`plaats` varchar(255) NOT NULL,
`avatar` varchar(1024) NOT NULL,
`vrienden` varchar(255) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
is deze sql goed ? ik ga nu die query testen
- Wat is volgens jouw het nut van de 'ticket_'-prefix'es, odmat je al weet dat die velden in de ticket-tabel zitten. het maakt niet uit, maar het is wel opmerkelijk.
- Wat is ticket_dag voor veld? Kan je dat niet uit de datum extraheren?
- De prijs kan je beter in een DECIMAL(4,2) gieten. Want wat als de prijs nu 14,99 is? Daar kan INT niet mee overweg.
- Persoonlijk zou ik in de user-tabel de veldnaam gebruiker aanpassen naar naam of iets in die trant. Je beschrijft immers al gebruikers. Goede naamgeving is zeer belangrijk.
- Wat omschrijft het vrienden-veld?
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
CREATE TABLE `tickets` (
`id` int(11) AUTO_INCREMENT PRIMARY KEY,
`gebruikersID` varchar(255) NOT NULL INT,
`ticket_titel` varchar(255) NOT NULL,
`ticket_header` varchar(1024) NOT NULL,
`ticket_datum` date NOT NULL,
`ticket_dag` varchar(255) NOT NULL,
`ticket_plaats` varchar(255) NOT NULL,
`prijs` int(11) NOT NULL DECIMAL(4,2),
`aantal` int(11) NOT NULL,
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
CREATE TABLE `users` (
`id` int(11) NOT NULL AUTO_INCREMENT PRIMARY KEY,
`naam` varchar(255) NOT NULL,
`plaats` varchar(255) NOT NULL,
`avatar` varchar(1024) NOT NULL,
`vrienden` varchar(255) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
gebruikersid veranderen
ticket_dag geeft aan dat het bijvoorbeeld zaterdag is
user tabel naam heb ik veranderd in naam
het vrienden veld geeft alleen de cijfers aan hoeveel vrienden die heeft
De dag kan je prima in je query extraheren via DATE_FORMAT in je SQL-query:
(mogelijk moet je met locales in de weer om het Nederlands te krijgen)
Ook je vrienden zijn aantallen, dus een INT zou ook prima hierbij passen. Vooral als je ooit nog eens iets wilt optellen.
Gewijzigd op 24/06/2019 12:14:44 door - Ariën -
input tekst vield
gebruiker: gebruiker invullen
titel
header_img
prijs
hoe sla ik de gebruikersid op van de id van table gebruiker naam dat die wel overeenkomt ?
Gewijzigd op 24/06/2019 12:56:04 door - Ariën -
Indien de gebruikers op een of andere manier zelf tickets kunnen kopppelen (bijvoorbeeld door aanschaf ofzo) dan ligt het gebruikers-id al vast.
In beide gevallen zal dit in een soort van afgeschermd deel van de website moeten gebeuren, tenzij je rechtstreeks in de database werkt via PHPMyAdmin ofzo. Het beveiligen van dit soort functionaliteit is een complete studie op zich, vol met allerlei valkuilen.
Waarom gebruik je trouwens latin1? Misschien handiger om dit op zijn minst utf8 te laten zijn? Hoe is de character encoding van de rest van je website, dit zal toch ook UTF-8 zijn mag ik hopen, en niet ISO-8859-1 of equivalent?
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
CREATE TABLE `tickets` (
`id` int(11) AUTO_INCREMENT PRIMARY KEY,
`gebruikersID` int(11) NOT NULL,
`ticket_titel` varchar(255) NOT NULL,
`ticket_header` varchar(1024) NOT NULL,
`ticket_datum` date NOT NULL,
`ticket_dag` varchar(255) NOT NULL,
`ticket_plaats` varchar(255) NOT NULL,
`prijs` int(11) NOT NULL DECIMAL(4,2),
`aantal` int(11) NOT NULL,
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
CREATE TABLE `users` (
`id` int(11) NOT NULL AUTO_INCREMENT PRIMARY KEY,
`naam` varchar(255) NOT NULL,
`plaats` varchar(255) NOT NULL,
`avatar` varchar(1024) NOT NULL,
`vrienden` int(11) NOT NULL,
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
ik ga het testen nu ik laat van jullie weten als het gelukt is
Toevoeging op 25/06/2019 00:41:22:
Pascal klienstra op 25/06/2019 00:36:48:
heb nou als volg
CREATE TABLE `tickets` (
`id` int(11) AUTO_INCREMENT PRIMARY KEY,
`gebruikersID` int(11) NOT NULL,
`ticket_titel` varchar(255) NOT NULL,
`ticket_header` varchar(1024) NOT NULL,
`ticket_datum` date NOT NULL,
`ticket_dag` varchar(255) NOT NULL,
`ticket_plaats` varchar(255) NOT NULL,
`prijs` int(11) NOT NULL DECIMAL(4,2),
`aantal` int(11) NOT NULL,
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
CREATE TABLE `users` (
`id` int(11) NOT NULL AUTO_INCREMENT PRIMARY KEY,
`naam` varchar(255) NOT NULL,
`plaats` varchar(255) NOT NULL,
`avatar` varchar(1024) NOT NULL,
`vrienden` int(11) NOT NULL,
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
ik ga het testen nu ik laat van jullie weten als het gelukt is
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
CREATE TABLE `tickets` (
`id` int(11) AUTO_INCREMENT PRIMARY KEY,
`gebruikersID` int(11) NOT NULL,
`ticket_titel` varchar(255) NOT NULL,
`ticket_header` varchar(1024) NOT NULL,
`ticket_datum` date NOT NULL,
`ticket_dag` varchar(255) NOT NULL,
`ticket_plaats` varchar(255) NOT NULL,
`prijs` int(11) NOT NULL DECIMAL(4,2),
`aantal` int(11) NOT NULL,
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
CREATE TABLE `users` (
`id` int(11) NOT NULL AUTO_INCREMENT PRIMARY KEY,
`naam` varchar(255) NOT NULL,
`plaats` varchar(255) NOT NULL,
`avatar` varchar(1024) NOT NULL,
`vrienden` int(11) NOT NULL,
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
ik ga het testen nu ik laat van jullie weten als het gelukt is
dit doe ik verkeerd enige idee ?
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
Gewijzigd op 25/06/2019 00:38:15 door pascal klienstra
Wat lukt er niet aan?