[PHP/MySQL] Tabellen combineren

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

Anoniem: 55737

Topicstarter
Hallo voor studie doeleinden ben ik een website aan het maken waarop mensen kunnen inloggen en een vragenlijst kunnen invullen.

Vervolgens moet de administrator van de vragenlijst kunnen inloggen.
De admin moet vervolgens kunnen selecteren op man/vrouw of experiment/test groep.

Op basis van deze keuzes moet er een tabel/array komen. Deze moet worden afgebeeld op de pagina en exporteerbaar zijn naar SPSS (csv is voldoende).

Vraag

MySQL:
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
ik heb de volgende twee tabellen:
mysql> select * from user;
+---------+----------+------------------------------------------+------------+-----------------------------+
| user_id | username | passwd                                   | experiment | email                       |
+---------+----------+------------------------------------------+------------+-----------------------------+
|      1  | koen     | f3d7ffe3c8daea8805b82190e4fd45e8436b0f11 |          0 | koen.vanrhee@student.uva.nl |
|      2  | user2    | 2aa60a8ff7fcd473d321e0146afd9e26df395147 |          0 | koen.vanrhee@student.uva.nl |
|      3  | user3    | 1119cfd37ee247357e034a08d844eea25f6fd20f |          1 | koen.vanrhee@student.uva.nl |
|      4  | tester   | ab4d8d2a5f480a137067da17100271cd176607a1 |          0 | niels.bom@gmail.com         |
+---------+----------+------------------------------------------+------------+-----------------------------+
4 rows in set (0.00 sec)

mysql> select * from answer;
+-----+---------+---------------+----------+--------+----------------+
| id  | user_id | questionnaire | question | answer | timestamp      |
+-----+---------+---------------+----------+--------+----------------+
| 208 |       4 | test_vragen   | 41sv3c   | 3      | 20060626214903 |
| 207 |       4 | test_vragen   | 40cv6i   | 3      | 20060626214903 |
| 206 |       4 | test_vragen   | 39ti6i   | 5      | 20060626214903 |
| 205 |       4 | test_vragen   | 38ri3c   | 4      | 20060626214903 |
| 204 |       4 | test_vragen   | 37vv3c   | 2      | 20060626214903 |
| 203 |       4 | test_vragen   | 36lr6i   | 2      | 20060626214903 |
| 202 |       4 | test_vragen   | 35sv6i   | 2      | 20060626214903 |
| 201 |       4 | test_vragen   | 34ti3c   | 4      | 20060626214903 |
| 200 |       4 | test_vragen   | 33cv3c   | 3      | 20060626214903 |
| 199 |       4 | test_vragen   | 32ri6i   | 2      | 20060626214903 |
| 198 |       4 | test_vragen   | 31vv6i   | 1      | 20060626214903 |
| 197 |       4 | test_vragen   | 30lr3c   | 1      | 20060626214903 |
| 196 |       4 | test_vragen   | 29sv2c   | 2      | 20060626214903 |
| 195 |       4 | test_vragen   | 28ti5i   | 5      | 20060626214903 |
| 194 |       4 | test_vragen   | 27cv5i   | 1      | 20060626214903 |
| 193 |       4 | test_vragen   | 26ri2c   | 3      | 20060626214903 |

daar wil ik een nieuwe tabel van maken of een array in php


+---------+------------+-----------------------------+----------+----------+----------+----------+----------+----------
| user_id | experiment | email                       | 41sv3c   | 40cv6i   | 39ti6i   | 38ri3c   | 37vv3c   |......
+---------+------------+-----------------------------+----------+----------+----------+----------+----------+----------
|       1 |         0  |koen.vanrhee@student.uva.nl  | 3        | 3        | 5        | 4        | 2        | ........


Ik kom er absoluut niet uit, hoe ik deze tabellen moet combineren tot de nieuwe tabel.
Heeft iemand suggesties?

Acties:
  • 0 Henk 'm!

  • whoami
  • Registratie: December 2000
  • Laatst online: 16:43
Je moet geen nieuwe tabel maken, maar een query uitvoeren.
Zoek eens op JOIN bv.

Je zal je resultaten dan wel niet allemaal naast elkaar krijgen, maar dat is dan de taak van je programma-code (in dit geval dus PHP). Met SQL kan je alle gegevens ophalen, je moet de formattering dan maar in PHP doen.

https://fgheysels.github.io/


Acties:
  • 0 Henk 'm!

Anoniem: 55737

Topicstarter
Oke, geen nieuwe tabel in SQL, maar om het kunnen exporteren zal het toch op z'n minst in een array in PHP moeten.

Ik zal eens zoeken op join, bedankt voor de tip.

Acties:
  • 0 Henk 'm!

Anoniem: 99022

code:
1
SELECT * FROM `user` INNER JOIN `answer` USING `user_id`

Probeer dat maar eens, de rest moet jezelf toch echt kunnen (uitzoeken)

Acties:
  • 0 Henk 'm!

  • pietje63
  • Registratie: Juli 2001
  • Laatst online: 14:37

pietje63

RTFM

Even gokje, ongetest enzo
PHP:
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
?>
<table>
  <tr>
    <th>
      user_id
    </th>
    <th>
      experiment
(..)
  </tr>
<?
sql_use= "select `user_id`, `experiment`, `email` from `user` order by `experiment` ";
$query_use = mysql_query($sql_use) or die(mysql_error()."<br>".$sql_use);
 while ($users= mysql_fetch_array($query_use))
  {
  $email = users['email'];
  $user_id = $users['user_id'];
  $experiment = $users['experiment'];
  echo ("<tr>");
  echo ("   <td>".$user_id."</td>");
  echo ("   <td>".$experiment."</td>");
  echo ("   <td>".$email."</td>"); 

sql_ans = "select `question`, `answer` from `answer` where `user_id` = '".$user_id."' order by `answer` ";
$query_ans = mysql_query($sql_ans) or die(mysql_error()."<br>".$sql_ans);
 while ($output= mysql_fetch_array($query_ans))
  {
  echo ("   <td>"$output['question']."<br>".$output['answer']."</td>"); 
  }// einde answers tabel
  echo ("</tr>");
}// einde users tabel
?>


Hangt er een beetje vanaf of iedereen dezelfde vragen enzo krijgt hoe je het (html technisch) wegwerkt waar je dat neerzet

De grootste Nederlandstalige database met informatie over computers met zoekfunctie!!


Acties:
  • 0 Henk 'm!

  • mjax
  • Registratie: September 2000
  • Laatst online: 26-05 13:47
Quick-and-dirty...

PHP:
1
2
3
4
5
6
7
8
9
10
$hash = array();
$result = mysql_query("select user.user_id, experiment, email, question, answer from user inner join answer using (user_id)");
while($row = mysql_fetch_assoc($result)) {
    $hash[$row['user_id']] = array_merge($hash[$row['user_id']], $row);
    $hash[$row['user_id']][$row['question']] = $row['answer'];
}
$fp = fopen('output.txt', 'w');
fputs($fp, explode("\t", array_keys(current($hash)))."\n");
foreach($hash as $row) fputs($fp, explode("\t", $row)."\n");
fclose($fp);


Ongetest, maar zou een tabgescheiden txt bestand moeten opleveren dat je in Excel kunt verwerken.

[ Voor 14% gewijzigd door mjax op 28-06-2006 16:38 ]

Pagina: 1