Database gegevens in tabel

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

28/01/2004 07:57:00
Quote Anchor link
Hallo.

Ik zit met hetvolgende probleem:
Ik heb een database met 2 tabellen.
In die tabellen staan namen. Deels dezelfde, maar er zijn ook die alleen in de eerste tabel voorkomen.
Ik wil graag een tabel afdrukken op een pagina, waarin alle namen naast elkaar worden afgedrukt. Dezelfde namen naast elkaar en naast de namen die alleen in de eerste tabel voorkomen een lege cel in de af te drukken tabel op het scherm.
Is dit mogelijk en zo ja, hoe dan?
Wat ik tot dusverre heb gezien is een tabel waarin de namen naast elkaar staan, maar waar de namen van de eerste tabel niet allemaal in staan omdat alleen alle namen van de tweede tabel zijn afgedrukt (bijv. 100) en de rest (bijv 50 van de 150) van de eerste tabel is niet afgedrukt.
De andere variant: alle namen worden afgedrukt, maar niet naast elkaar. Eerst (bijv. 150) in de linker cel en rechts niets en na de namen uit de eerste tabel, de namen uit de tweede tabel in de rechter cel. Niet ernaast maar eronder.
 
PHP hulp

PHP hulp

25/11/2024 02:55:11
 
Arend a

Arend a

28/01/2004 13:07:00
Quote Anchor link
Kan je even met een linkje laten zien, en is het geen optie om beide namen in een tabel te zetten? Kan je misschein iets duidelijker uit leggen wat je probeerd te doen? bijvoorbeeld: Waar is het voor?

Hoe zien je mysql tabellen er uit, en wat heb je tot nog toe?
 

28/01/2004 13:28:00
Quote Anchor link
De info in de database is nogal gevoelig, dus die geef ik liever niet vrij, tenminste niet in dit forum. Is er een mogelijkheid om persoonlijk contact op te nemen?
 
Brian Bull

Brian Bull

28/01/2004 13:41:00
Quote Anchor link
probeer eens de info weer te geven als
+-------+
+Naam +
+-------+
+Jan +
+Josse +
+-------+

enz...
moet niet de echt info zijn verzin iets
doe met 1,2,3,.. en a,b,c,... ge begrijpt wel wa ik bedoel ;)
 
Elwin - Fratsloos

Elwin - Fratsloos

28/01/2004 14:06:00
Quote Anchor link
Offtopic:

Quote:
De info in de database is nogal gevoelig, dus ...

Dus daar mag je niet tegen schelden...


Je moet echt meer info geven, de eerste keer dat ik deze topic las dacht ik echt dat het aan mij lag dat ik het niet snapte... en dan reageer ik maar niet...
Anderen hebben dat wellicht ook...

Elwin
 

28/01/2004 23:24:00
Quote Anchor link
Nog eens proberen.

Ik heb dus een database met daarin 2 tabellen met namen:
tabel 1: tabel 2:
+++++++ ++++++++
+ naam1 + + naam 2 +
+++++++ ++++++++
+ Jan + + Jan +
+ Karel + + Simon +
+ Simon + ++++++++
+++++++

Wat ik wil is een tabel maken in een HTML bestand dat er als volgt uitziet:

++++++++++++++++++
+ Naam1 + Naam2 +
++++++++++++++++++
+ Jan + Jan +
+ Karel + +
+ Simon + Simon +
++++++++++++++++++

De reden waarom is nu niet belangrijk.
Ik weet hoe ik de volgende tabellen moet maken:
while (list($naam1) = mysql_fetch_row ($result)AND list($naam2) = mysql_fetch_row ($result1)){
echo("<tr><td></td><td> $naam1 </td><td> $naam2 </td></tr>\n");
}
Dit geeft:

++++++++++++++++++
+ Naam1 + Naam2 +
++++++++++++++++++
+ Jan + Jan +
+ Karel + Simon +
++++++++++++++++++

Maar hier valt Simon dus weg (links) en dat is niet de bedoeling.

Een andere variant is:
while (list($naam1) = mysql_fetch_row ($result) OR list($naam2) = mysql_fetch_row ($result1)){
echo("<tr><td></td><td> $naam1 </td><td> $naam2 </td></tr>\n");
}
Dat geeft:
+++++++++++++++++++
+ Naam1 + Naam2 +
+++++++++++++++++++
+ Jan +
+ Karel +
+ Simon +
+++++++++++++++++++
+ Jan +
+ Simon +
+++++++++

Het enige verschil tussen deze codes is AND of OR tussen de LIST() opdrachten.
Ik hoop dat het zo iets duidelijker is. Misschien is het wel helemaal niet mogelijk, zoals ik het wil, ik ben net begonnen met PHP en MYSQL, maar ik stel de vraag toch maar.

Voor alle duidelijkheid, de codes kloppen want ik heb de namen uit de database gehaald en die kloppen. Daar ligt het dus niet aan. Het probleem zit hem in de manier waarop ik ze opvraag en de bewerkingen die ik er op loslaat.

Ik hoop dat iemand mij nu kan helpen. Mocht er nog iets onduidelijk zijn, laat het mij weten en ik zal proberen het te verduidelijken.
 

29/01/2004 11:01:00
Quote Anchor link
Het was misschien niet helemaal duidelijk, maar het gaat hier om 1 database, met 2 tabellen ("users 1" en "users 2") en in een tabel 1 veld met de naam "Naam1" en in de andere een veld met naam "Naam2". Dus maak ik gebruik van 2 query's, te weten

$query="SELECT * FROM users 1";
$query1="SELECT * FROM users 2";
 
Elwin - Fratsloos

Elwin - Fratsloos

29/01/2004 14:38:00
Quote Anchor link
Probeer het eens zo (gaat alleen werken als er in de tabel users2 geen namen staan die niet in users1 staan):

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
<?php
/* Ik ga er even vanuit dat de bovenkant van je tabel gemaakt is en dat je nu de resultaten kan laten zien.. Dus ergerns open je <table> en een rij met twee kolommen en je sluit die rij ook nog ergens...
*/

$query0 = mysql_query("SELECT * FROM users1");

while ($result0 = mysql_fetch_row($query0))
{

   echo "<tr>\n"; // Nieuwe rij
   echo "<td>$result0[0]</td>\n"; // $result0[0], die tweede 0 kan ook een één zijn, ligt aan je tabel
   echo "<td>"; // Open je tweede kolom
   // Kijken of de naam ook in de tweede kolom voorkomt

   $query1 = mysql_query("SELECT * FROM users2 WHERE naam = '$result0[0]'"); // En die $result0[0] is dus dezelfde variabele als hierboven...
   $num = mysql_num_rows($query1); // Tellen hoeveel namen er gevonden zijn

   if ($num != "1")    // Ik ga er maar weer vanuit dat je maximaal één record wilt hebben
   {
       echo "&nbsp;</td>\n"; // Vul je tweede kolom met eerste optie en sluit af
   } else {
       $result1 = mysql_fetch_row($query1);
       echo "$result1[0]</td>\n"; // Die variabele kan natuurlijk ook een ander nummer hebben | Vul je tweede kolom met tweede optie en sluit af
   }
   echo "</tr>\n"; // De rij nog ff afsluiten
}

// En hier ergens nog even je tabel afsluiten...
?>


Elwin
 

29/01/2004 23:40:00
Quote Anchor link
Fantastisch. Het werkt precies zoals ik wilde. Nu moet ik precies proberen te begrijpen wat waar precies gebeurt. Maar daar kom ik wel uit. Hartstikke bedankt voor de moeite. Nu weet ik waar ik terecht kan wanneer ik weer problemen hebt. Ik hoop dat je dan weer kunt en wilt helpen. Nogmaals bedankt.
 
Elwin - Fratsloos

Elwin - Fratsloos

30/01/2004 13:26:00
Quote Anchor link
Willen wel... kunnen is een vraag.. :D

Maar wat er gebeurt in het script is vrij duidelijk:
1) Je haalt alle namen op uit de eerste tabel
2) Per resultaat (elke rij uit je query) maak je een rij in je tabel
3) Dan zet je in de eerste kolom van die rij de waarde die je met je query hebt opgehaald
4) Vervolgens haal je de gegevens uit de tweede database-tabel op waar de naam gelijk is aan de naam die we hebben
5) Dan tel je of er precies één resultaat is
6) Zo nee dan maak je een lege cel in de tweede kolom. Zo ja dan zet je die naam (uit stap 4) in de cel van de tweede kolom
7) Je sluit de gamaakte rij af

En stappen 2 t/m 7 worden voor elk resultaat uit je eerste rij herhaald...

Elwin
 

30/01/2004 23:04:00
Quote Anchor link
Nou, Elwin ik heb nog iets moeilijkers bedacht.

Nou is er een derde tabel in de database met daarin twee velden: een gebruiker en een code.
Elke gebruiker kan meerdere codes hebben. Bij elke naam1 (zie voorgaande) hoort 1 gebruiker. De ene naam1 is heeft echter 4 verschillende codes en de ander heeft er maar een. Voorbeeld van de gewenste tabel:

++++++++++++++++++++++++++++
+gebruiker+code+ naam1 +naam2 +
++++++++++++++++++++++++++++
+ 1 + 1 + Jan + Jan +
+ 1 + 2 + Jan + Jan +
+ 2 + 2 + Erik + +
+ 3 + 1 + Simon + Simon +
++++++++++++++++++++++++++++
Ik hoop dat je dit begrijpt.
Tabel 1 heeft "rechten", daarin zitten de velden "gebruikers" en "code". En de tabellen "naam1" en "naam2" blijven bestaan.
Weet je hier ook een oplossing voor? Ik hoop dat ik op je hulp kan rekenen.
 
Arend a

Arend a

31/01/2004 01:11:00
Quote Anchor link
Waarom twee tabellen? Wat als iemand van naam veranderd? Waarom kan je niet een tabel maken met ongeveer de volgende instelling:

gebruikerid int auto_increment,
naam varchar(200),
in_tabel1 tinyint(1),
in_tabel2 tinyint(1)


of in plaats van de laatste twee
tabelcode int(1)

Waarbij tabelcode 1 = tabel 1, tabelcode 2 = tabel 2, tabelcode 3 tabel 1&2, dit laat ik aan jouw fantasie over. Ik snap de grap niet van dezelfde info in twee tabellen zetten. Dit ziet er slecht en slap uit.

Grtz,

Arend
 

31/01/2004 08:38:00
Quote Anchor link
Met alle respect, jij hoeft ook niet te snappen waarom ik bepaalde info in één tabel zou willen hebben. Ik zou graag de bovengenoemde tabel willen. Als dat werkt met jouw code vind ik het goed, zo niet dan heb ik er niets aan. Dit is verder niet kwaad bedoeld, maar ik zou graag zelf bepalen wat ik in welke tabel wil hebben en waarom.

Met vriendelijke groet.
 

31/01/2004 08:48:00
Quote Anchor link
Vergeet het bovenstaande bericht. Ik snap nu ineens wat je bedoelt. Ik weet neit of je wel eens hebt gewerkt met PostNuke, maar die maakt een database aan met heel erg veel gegevens en tabellen. Eén tabel met gebruikersnamen voor de site en één voor het forum. In principe staan in beide dezelfde namen, wanneer mensen zich aan hebben gemeld voor toegang tot de site en het forum hebben bezocht. Zolang mensen niet het forum bezocht hebben staat hun naam echter alleen in de eerste tabel. Om nou een beetje overzicht te houden wil ik de relevante info voor mezelf in één overzicht hebben, dus:
Wie heeft welke gebruikersnaam (staat dus in de eerste tabel, die met aanmeldingen voor de site), heet die persoon het forum bezocht (staat in de tweede tabel, die voor het forum), welke rechten heeft die persoon (staat in een andere tabel) en nog meer van dit soort gegevens.
De reden dat ik er niet meer uitkom is dan ook dat het overzicht heel snel verloren gaat, wanneer ik steeds die database door moet spitten voor 200+ namen. Ik hoop dat je het nu een beetje snapt. Nogmaals, vergeet alsjeblieft bovenstaand bericht, ik had je bericht verkeer begrepen. Sorry.

Met vriendelijke groet
 
Arend a

Arend a

31/01/2004 12:23:00
Quote Anchor link
Ik weet niet wat je bedoeld met 'steeds die database moet spitten voor 200+ namen'? Maar in principe doet mysql dat voor je als je goede queries schrijft, en dat je de juiste index'es hebt.


gebruikerid int auto_increment,
gebruikersnaam varchar(200),
gebruikerswachtwoord varchar(20),
forum_bezocht tinyint(1),
kolommen_met_rechten,

Wanneer je overzicht wilt houden kan je het zelfde als "SELECT * FROM `tabel2`" gelijkstellen aan "SELECT * FROM `gebruikers` WHERE forum_bezocht = 1".

Dit is beter, omdat het minder ruimte inneemt, sneller is en je slaat niet twee keer dezelfde gegevens op. Bovendien kan je je vraagstelling dan simpel uitvoeren met -één- query.

Grtz,

Arend
 



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.