login  Naam:   Wachtwoord: 
Registreer je!
 Forum

Dezelfde input naast elkaar

Offline JeroenI - 07/04/2011 19:02 (laatste wijziging 07/04/2011 19:16)
Avatar van JeroenIPHP interesse Goedenavond,

Even een vraag waar ik niet uit kom.
Ik heb een tabel in de database met records staan waarin dezelfde waarde zitten, bijvoorbeeld 1, 3, 7, etc.

Nu wil ik, dat alles wat in het record 1 bevat, naast elkaar komt, en alles wat in het record 3 bevat, daaronder ook weer naast elkaar.

Is dit mogelijk via SQL?

Alvast bedankt!

16 antwoorden

Gesponsorde links
Offline valles10 - 07/04/2011 19:38 (laatste wijziging 07/04/2011 19:46)
Avatar van valles10 HTML interesse Ik begrijp de vraag niet...

een database met records waarin dezelfde waarden zitten. 1,3,7 zijn niet hetzelfde?
Kan je een voorbeeld geven van wat je wilt bereiken?

ID | naam | randomnummer
1 sam 7
2 stijn 13
3 Gerard 7

is het dan de bedoeling dat je bv het randomnummer kan invullen, en dat je bij 7 sam en gerard ziet?
Offline JeroenI - 07/04/2011 19:50 (laatste wijziging 07/04/2011 19:50)
Avatar van JeroenI PHP interesse Ja precies, ik wil dan in dit geval Sam en Gerard naast elkaar hebben en die andere eronder.
Offline valles10 - 07/04/2011 20:04
Avatar van valles10 HTML interesse
  1. <?php
  2.  
  3. //connectie met db...
  4.  
  5.  
  6. // gebruikers mét randomnummer 7
  7. $res = mysql_query("SELECT * FROM tabelnaam WHERE randomnummer =7") or die(mysql_error());
  8. while($r = mysql_fetch_array($res)){
  9. echo $r['naam']." - ";
  10. }
  11. echo "<br />";
  12. //gebruikers die alles behalve 7 als randomnummer hebben
  13. $res = mysql_query("SELECT * FROM tabelnaam WHERE randomnummer <>7") or die(mysql_error());
  14. while($r = mysql_fetch_array($res)){
  15. echo $r['naam']." - ";
  16. }
  17.  
  18. ?>

Er zijn nog manieren om dit te doen, maar dit is het duidelijkste ;)
Offline JeroenI - 07/04/2011 20:13
Avatar van JeroenI PHP interesse Ja maar die getallen kunnen dus uiteindelijk automatisch oplopen tot wel 100 zoniet meer, om ze dan voor alle 100 zo apart te plaatsen lijkt mij een beetje veel regeltjes... Is er geen logischere manier??

Alvast bedankt!
Offline valles10 - 07/04/2011 20:19
Avatar van valles10 HTML interesse Wat wil je eigenlijk uiteindelijk bekomen?
Offline JeroenI - 07/04/2011 20:55
Avatar van JeroenI PHP interesse Dat ik alles netjes op orde heb volgens die dubbele cijfertjes...
Offline valles10 - 07/04/2011 21:02
Avatar van valles10 HTML interesse maar wat wil je op orde? en welke dubbele cijfers? kan je een voorbeeld geven in tekstvorm?
Offline JeroenI - 07/04/2011 21:33
Avatar van JeroenI PHP interesse Ehm, naja eigenlijk precies zoals jij zei

ID - Naam - Code
1 - Piet - 1
2 - Jan - 3
3 - Klaas - 2
4 - Johan - 1

Moet zo worden weergegeven op de site:
Piet Johan
Klaas
Jan

Snap je ?
Offline valles10 - 07/04/2011 21:37
Avatar van valles10 HTML interesse voor elke 'code' een nieuwe lijn dus?
Offline JeroenI - 07/04/2011 21:43
Avatar van JeroenI PHP interesse Klopt als een trein
Offline valles10 - 08/04/2011 16:13
Avatar van valles10 HTML interesse dan moet je een query uitvoeren, en ALLES ophalen. zet dit in een 2d array. $arr[$r['code']][] = $r['value'];

je zet dus elke code in die array, vervolgens loop je gwn door de array. Dat is het beste denk ik.
Offline JeroenI - 08/04/2011 19:48 (laatste wijziging 08/04/2011 20:12)
Avatar van JeroenI PHP interesse Huh, hoe haal je die array dan goed binnen ? Dus m.a.w., hoe echo je de array als je bijvoorbeeld niet weet hoeveel records dezelfde input hebben ?

Trouwens, kan ik niet alles eerst via GROUP in mysql binnen halen en dan vervolgens in een while lus 1 voor 1 binnen slepen, of gaat hij dan erg delayen ?
Offline valles10 - 09/04/2011 08:22 (laatste wijziging 09/04/2011 08:22)
Avatar van valles10 HTML interesse GROUP BY gaat het niet echt veel verbeteren...

in je array ga je dan zoiets krijgen:

$array['1']['0'] zal 'sam' zijn
$array['3']['0'] zal 'nico' zijn
$array['1']['1'] zal 'jeroen' zijn.

de eerste index is de code, de tweede index, is de index van die array met 'code' in.

je kan count($array[3]) doen om te tellen hoeveel namen er in die groep met code 3 zitten, hiermee kan je ze dus ook echoën. (met een for-loop)

Maar nu zit ikzelf vast, hoe kan je die eerste values (dus voor 'code' in te vullen door loopen?)

  1. $arrays = count($array);
  2. for($i = 0;$i<$arrays;$i++){
  3. $codes = count($array[$i]);
  4. for($ii = 0;$i<$codes;$ii++){
  5. echo $array[$i][$ii];
  6. }
  7. }


het probleem is wel dat je codes dan wel in volgorde zouden moeten zitten, dat is dus ook niet goed. Wat je wel zou kunnen doen is nog een derde array maken, met daarin de code die wel op volgorde zit. Als je deze array doorloopt, kan je het wel hierboven inzetten.
Bedankt door: JeroenI
Offline JeroenI - 09/04/2011 17:19
Avatar van JeroenI PHP interesse Ik ga er even mee spelen en laat weten of het gelukt is.

Bedankt voor je hulp!
Offline Joost - 09/04/2011 21:35
Avatar van Joost PHP expert
  1. <?php
  2.  
  3. $sql = mysql_query("SELECT code, name FROM tabel ORDER BY code ASC");
  4. $lastCode = null;
  5.  
  6. while($fetch = mysql_fetch_assoc($sql)){
  7. if(!is_null($lastCode) && $fetch['code'] != $lastCode){
  8. echo "<br />";
  9. }
  10. $lastCode = $fetch['code'];
  11. echo $fetch['name'];
  12. }
  13.  
  14. ?>
Bedankt door: valles10
Offline valles10 - 10/04/2011 09:25
Avatar van valles10 HTML interesse
Joost schreef:
[..code..]

Slim gezien!
Dit zal werken Jeroen
Gesponsorde links
Je moet ingelogd zijn om een reactie te kunnen posten.
Actieve forumberichten
© 2002-2024 Sitemasters.be - Regels - Laadtijd: 0.32s