Profiel systeem

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Ventilatiesysteem Productontwikkelaar HBO WO Verwa

Samengevat: Zij bieden flexibele ventilatiematerialen, geluidsdempers, rookgasafvoer producten en industrieslangen. Ben jij een technisch productontwikkelaar? Heb jij ervaring met het ontwikkelen van nieuwe producten? Vaste baan: Technisch Productontwikkelaar HBO WO €3.000 - €4.000 Zij bieden een variëteit aan flexibele ventilatiematerialen, geluiddempers, rookgasafvoer producten, industrieslangen en ventilatieslangen voor de scheepsbouw. Met slimme en innovatieve materialen zorgen wij voor een gezonde en frisse leefomgeving. Deze werkgever is een organisatie die volop in ontwikkeling is met hardwerkende collega's. Dit geeft goede ontwikkelingsmogelijkheden. De branche van dit bedrijf is Techniek en Engineering. Functie: Voor de vacature als Technisch Productontwikkelaar Ede Gld HBO WO ga

Bekijk vacature »

Pagina: 1 2 volgende »

Alex Dijk

Alex Dijk

20/11/2014 11:29:05
Quote Anchor link
Nu ik rustig aan PHP aan het leren ben kom ik verschillende uitdagingen tegen die ik vrijwel altijd weet op te lossen door alle tutorials en reeds gestelde vragen. Nu kom ik iets tegen waar ik niet zo snel een oplossing voor weet. Dit komt uiteraard door mijn gebrek aan kennis omtrent de mogelijkheden, maar daar krijg ik hier vast antwoord op. Ik zal proberen zo duidelijk mogelijk uit te leggen:

Goed, stel je hebt een inlog systeem waarbij je in de database de volgende gegevens in een tabel opslaat: id, gebruikersnaam en e-mail. Vervolgens wil je de gebruikers een mogelijkheid geven om een profiel te creëren met bepaalde vaste waardes zoals: leeftijd, land van herkomst, hobby's etc. En daarnaast een vrij vlak waarbij iets kort kunnen neerzetten.
Mijn gedachten waren om een nieuwe tabel aan te maken waarin die waardes kunnen worden opgeslagen. Alleen hoe zorg je ervoor dat de juiste persoon ook de juiste waardes kan aanpassen. Omdat er in die nieuwe tabel geen id zit. Of is het verstandig om geen profiel tabel aan te maken, en gewoon nieuwe kolommen te creëren in de bestaande tabel? Lijkt mij op te duur wat onoverzichtelijk worden.

Alvast bedankt!
 
PHP hulp

PHP hulp

25/11/2024 17:11:54
 
Peter K

Peter K

20/11/2014 12:51:07
Quote Anchor link
Alex,

Je kunt je nieuwe tabel bijvoorbeeld een kolom geven met de user_id.

Je hebt dus een tabel user:
user_id
gebruikersnaam
email

Tabel personalia:
personalia_id
user_user_id
leeftijd
hobby
land

In de kolom user_user_id vul je vervolgens het user_id in uit de tabel 'user'. Deze tabellen kun je ook nog aan elkaar koppelen in een later stadium.
 
- SanThe -

- SanThe -

20/11/2014 13:02:58
Quote Anchor link
@Peter: Dat lijkt mij niet goed genormaliseerd.

http://www.phphulp.nl/php/tutorial/overig/normaliseren/150/
 
Kevin J

Kevin J

20/11/2014 14:42:30
Quote Anchor link
Ik zou zelf aanraden alles in 1 tabel te doen, is makkelijker en overzichtelijker
 
Peter K

Peter K

21/11/2014 07:52:09
Quote Anchor link
@SanThe wel als je de wijzigingen wenst bij te houden.
 
Jan R

Jan R

21/11/2014 08:07:40
Quote Anchor link
Ik zou hobby's zeker in een afzonderlijke tabel stellen. via een 1 op veel relatie. Iemand kan toch ook geen of net veel hobby's hebben.

De gegevens welke altijd aanwezig zijn moeten inderdaad in de hoofdtabel. Echter leeftijd is voor mij geen goed veld. Geboortedatum is veel beter anders moet je dagelijks/wekelijks de gegevens aanpassen elke keer als er iemand verjaard.

Jan
 
Frank Nietbelangrijk

Frank Nietbelangrijk

21/11/2014 08:51:40
Quote Anchor link
Jan R op 21/11/2014 08:07:40:
Ik zou hobby's zeker in een afzonderlijke tabel stellen. via een 1 op veel relatie. Iemand kan toch ook geen of net veel hobby's hebben.

De gegevens welke altijd aanwezig zijn moeten inderdaad in de hoofdtabel. Echter leeftijd is voor mij geen goed veld. Geboortedatum is veel beter anders moet je dagelijks/wekelijks de gegevens aanpassen elke keer als er iemand verjaard.

Jan


Dat ligt er een beetje aan. Je kunt ook genoegen nemen met een textarea en kolomtype longtext. Dat biedt genoeg mogelijkheden om je hobby's te kunnen omschrijven. Wil de TS later nog nog gebruikers op hobby's kunnen filteren dan is het onvoldoende en zou er beter een aparte tabel voor aangemaakt kunnen worden zoals Jan beschrijft. In dat geval is het dan ook beter om een keuzelijst met hobby's aan de gebruiker voor te schotelen zodat er in de database telkens exact dezelfde waardes komen te staan voor mensen die dezelfde hobby hebben. Pas dan ben je later goed in staat om records te filteren
 
Obelix Idefix

Obelix Idefix

21/11/2014 13:41:18
Quote Anchor link
Alex Dijk op 20/11/2014 11:29:05:
Vervolgens wil je de gebruikers een mogelijkheid geven om een profiel te creëren met bepaalde vaste waardes zoals: leeftijd, land van herkomst, hobby's

Je hebt het over 'vaste waardes'.
Hobby's kunnen wijzigen en leeftijd wijzigt sowieso elk jaar ;-)
 
Frank Nietbelangrijk

Frank Nietbelangrijk

21/11/2014 14:16:56
Quote Anchor link
Leeftijden moet je helemaal niet opslaan in een database. Dat veranderd ieder jaar maal 300 gebruikers ;-)

Gewoon de geboortedatum opslaan en je kunt uitrekenen hoe oud ze zijn.
 
Alex Dijk

Alex Dijk

22/11/2014 11:47:38
Quote Anchor link
Bedankt voor de reacties!

Maar hoe zorg je er dan voor hoe je die twee tabellen met elkaar kunt koppelen?
En is dan het beste om die waardes te creëren bij registratie? Of pas als die gene zijn of haar profiel gaat invullen?
 
Daan Slagter

Daan Slagter

22/11/2014 14:52:18
Quote Anchor link
Peter K op 20/11/2014 12:51:07:
Alex,

Je kunt je nieuwe tabel bijvoorbeeld een kolom geven met de user_id.

Je hebt dus een tabel user:
user_id
gebruikersnaam
email

Tabel personalia:
personalia_id
user_user_id
leeftijd
hobby
land

In de kolom user_user_id vul je vervolgens het user_id in uit de tabel 'user'. Deze tabellen kun je ook nog aan elkaar koppelen in een later stadium.


Op de manier zoals peter zei kun je ze koppelen
 
Frank Nietbelangrijk

Frank Nietbelangrijk

22/11/2014 14:55:15
Quote Anchor link
Het koppelen doe je gewoon met de SELECT query.

Hieronder een klein voorbeeldje
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
SELECT
    id, users.name, users.email hobbies.hobby
FROM
    users
JOIN
    hobbies
ON
    users.id = hobbies.user_id
WHERE
    hobbies.hobby = 'programmeren';


of met aliasses
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
SELECT
    u.id, u.name, u.email, h.hobby
FROM
    users u
JOIN
    hobbies h
ON
    u.id = h.user_id
WHERE
    h.hobby = 'programmeren';


Bij de registratie heb je een minimum aan gegevens nodig. De rest kun je direct vragen bij registratie maar je kunt de gebruiker hier ook in een later stadium om vragen. (Datingsites zijn er goed in om je met enkel een username, wachtwoord en emailadres binnen te halen waarna ze alsnog het hemd van je lijf gaan vragen om zodoende de drempel voor registratie zo laag mogelijk te houden).
Gewijzigd op 22/11/2014 15:36:41 door Frank Nietbelangrijk
 
Alex Dijk

Alex Dijk

22/11/2014 15:09:12
Quote Anchor link
Oke, bedankt voor de reacties. Weer even genoeg materie om mee te spelen.

Groet!
 
Alex Dijk

Alex Dijk

27/11/2014 20:14:16
Quote Anchor link
Ik ben dus bezig om zo'n profiel te maken, maar ik loop vast op moment dat ik op de submit knop druk. Er wordt dan niks naar mijn database gezet. Iemand een idee waar ik een fout heb gemaakt?

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<?php
include_once 'core/db_connect.php';
include_once 'core/functions.php';
sec_session_start();

$sqlCommand = "SELECT * FROM gebruikers WHERE gebruikersnaam='" . $_SESSION['gebruikersnaam'] . "'";
$query = mysqli_query($mysqli, $sqlCommand) or die (mysqli_error($mysqli));
While ($row =mysqli_fetch_array($query)) {
    $pid = $row["id"];
    $gebruikersnaam = $row["gebruikersnaam"];

}

mysqli_free_result($query);

 ?>


Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
<form method="post">
    <Table  name="tabel" width="685"border="1">
        <tr>
            <td width"185">Leeftijd:</td>
            <td width"605"> <input  name="leeftijd" id="leeftijd" Size="3" maxlength="2"></td>
        </tr>                    
        <tr>
            <td width"185">Land:</td>
            <td width"605">             
                <select name="land" id="land">
                    <OPTION VALUE="Nederland">
                        Nederland
                    </OPTION>
                    <OPTION VALUE="Belgi">
                        Belgi&#235;
                    </OPTION>        
                </select>
            </td>
        </tr>
        <tr>
            <td  COLSPAN="2"><textarea name="beschrijving" id="beschrijving" cols="80" rows="20"></textarea></td>
        </tr>
        <tr>
            <td COLSPAN="2"align="center"> <input type="Submit" name"="submit" id="submit" value="Verander"><input name="pid" type="hidden" id="pid" value="<?php print $pid; ?>"/><input name="gebruikersnaam" type="hidden" id="gebruikersnaam" value="<?php print $gebruikersnaam; ?>"/></td>
        </tr>
    </Table>
    
</form>    
<?php

 if(isset($_POST['verander'])) {
    $pid            = $_POST["pid"];
    $gebruikersnaam    = $_POST["gebruikersnaam"];
     $leeftijd        = $_POST["leeftijd"];
    $land             = $_POST["land"];
    $beschrijving     = $_POST["beschrijving"];


        $query = mysqli_query($mysqli,"INSERT INTO profiel( 'gebruikersnaam', 'userid', 'leeftijd', 'land', 'beschrijving') VALUES ('$gebruikersnaam', '$pid','$leeftijd','$land','$beschrijving')")or die(mysqli_error($mysqli));
        
        
        echo("gelukt");
        exit();
        
            }
        


?>
 
- Ariën  -
Beheerder

- Ariën -

27/11/2014 20:19:30
Quote Anchor link
Welke melding zie je?
 
Frank Nietbelangrijk

Frank Nietbelangrijk

27/11/2014 20:28:37
Quote Anchor link
Er zitten wat kleine onjuistheden in je script:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
    <Table  name="tabel" width="685"border="1">


Table zou gewoon met kleine letters kunnen of allemaal met hoofdletters. er mist een spatie tussen width="685" en border="1".

Maak een afspraak met jezelf alle html elementen in kleine letters of in hoofdletters. Kleine letters hebben mijn persoonlijke voorkeur. In iedergeval doe je het nu telkens weer anders en dat komt wel erg rommelig over.
Zo maak je een <select> met daarin <OPTIONS>

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
<td width"185">


Hier mist een = teken. Bovendien hoort deze informatie allemaal in CSS te staan.

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
<td COLSPAN="2"align="center">


Hier mist wederom een spatie.

Dan je query:
kolomnamen mogen niet tussen single quotes staan. Alleen waardes wel.

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
INSERT INTO profiel
    (gebruikersnaam, userid, leeftijd, land, beschrijving)
VALUES
    ('$gebruikersnaam', '$pid', '$leeftijd', '$land', '$beschrijving')


Daarnaast mis ik je foutafhandeling. Hoe had je nu kunnen weten dat je query mislukt?
Door te testen wat mysql_query() teruggeeft.
Gewijzigd op 27/11/2014 20:33:09 door Frank Nietbelangrijk
 
Alex Dijk

Alex Dijk

27/11/2014 20:30:07
Quote Anchor link
Ik krijg dus geen melding... dus ik weet ook niet waar ik naar moet kijken.
 
Frank Nietbelangrijk

Frank Nietbelangrijk

27/11/2014 20:32:50
Quote Anchor link
Zie http://php.net/manual/en/mysqli.query.php en dan bij het kopje Return Values:

Returns FALSE on failure. For successful SELECT, SHOW, DESCRIBE or EXPLAIN queries mysqli_query() will return a mysqli_result object. For other successful queries mysqli_query() will return TRUE.
Gewijzigd op 27/11/2014 20:33:47 door Frank Nietbelangrijk
 
- SanThe -

- SanThe -

27/11/2014 20:42:42
Quote Anchor link
Eerste script:
Regel 4: Ken ik niet.
Regel 6: Query is lek. Gebruik mysqli_real_escape_string().
Regel 8: Leuk, maar je doet er niks mee.

Tweede script:
Regel 32-36: Waarom al die nieuwe $vars aanmaken, nergens voor nodig.
Regel 39: Query is lek. Gebruik mysqli_real_escape_string().
 
Frank Nietbelangrijk

Frank Nietbelangrijk

27/11/2014 21:08:51
Quote Anchor link
echo ook eens je $query.
 
- Ariën  -
Beheerder

- Ariën -

27/11/2014 21:29:37
Quote Anchor link
Frank Nietbelangrijk op 27/11/2014 21:08:51:
echo ook eens je $query.

Dan krijg je een result ID, waar je geen fluit mee kan.
Laten we het maar even op de string houden ;-).

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
<?php
$sql
= "INSERT INTO profiel( 'gebruikersnaam', 'userid', 'leeftijd', 'land', 'beschrijving') VALUES ('$gebruikersnaam', '$pid','$leeftijd','$land','$beschrijving')";
echo $sql;
$query = mysqli_query($mysqli,$sql)or die(mysqli_error($mysqli));
?>
 

Pagina: 1 2 volgende »



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.