Vraag & Antwoord

Webprogrammeren & scripting

[PHP][MySQL] tel aantal velden met waarde

6 antwoorden
  • Ik heb een table met devolgende structuur:[code:1:b5e66d7d94]CREATE TABLE `cd_tracks` ( `id` int(10) unsigned NOT NULL auto_increment, `recordid` varchar(45) NOT NULL default '', `disc` varchar(99) NOT NULL default '', `track01` varchar(45) NOT NULL default '', `track02` varchar(45) NOT NULL default '', `track03` varchar(45) NOT NULL default '', `track04` varchar(45) NOT NULL default '', `track05` varchar(45) NOT NULL default '', `track06` varchar(45) NOT NULL default '', `track07` varchar(45) NOT NULL default '', `track08` varchar(45) NOT NULL default '', `track09` varchar(45) NOT NULL default '', `track10` varchar(45) NOT NULL default '', `track11` varchar(45) NOT NULL default '', `track12` varchar(45) NOT NULL default '', `track13` varchar(45) NOT NULL default '', `track14` varchar(45) NOT NULL default '', `track15` varchar(45) NOT NULL default '', `track16` varchar(45) NOT NULL default '', `track17` varchar(45) NOT NULL default '', `track18` varchar(45) NOT NULL default '', `track19` varchar(45) NOT NULL default '', `track20` varchar(45) NOT NULL default '', PRIMARY KEY (`id`) )[/code:1:b5e66d7d94]Hoe krijg ik het nu voormekaar om het aantal ingevulde cellen track** te tellen? Dus hoeveel van de velden waarvan de naam begint met track een waarde hebben anders dan "".
  • Niet getest, maar je zult zoiets moeten doen: [code:1:7899fda0eb] $where_clause = "NOT("; for($i = 1; $i <20; $i++) {$where_clause .= "track$i ='' OR ";} $where_clause .= "track$i = '' )"; $sql = 'SELECT COUNT(*) FROM cd_tracks WHERE' .$where_clause; [/code:1:7899fda0eb]
  • bedankt voor het script, MAAR... Hij telt in de verkeerde richting... Ik moet zegmaar per RecordID zien hoeveel velden er wel en/of niet zijn ingevuld. Hoe kan ik dat het beste aanpakken
  • Je kunt beter de tabel splitsen in een "disc" en een "track" tabel. Zie [URL=http://www.phphulp.nl/php/tutorials/3/150/259/?PHPSESSID=d7157d53fee3f2c9c15c4cad000d177e]hier[/URL] een tutorial over normaliseren. wimb
  • heb ik ook, maar door de recordid en disc mee te geven koppel ik ze aan mekaar...[code:1:d4c85b352b] -- -- Tabel structuur voor tabel `cd_albums` -- CREATE TABLE `cd_albums` ( `id` tinyint(11) NOT NULL auto_increment, `album` varchar(99) NOT NULL default '', `artiest` varchar(99) NOT NULL default '', `recordid` varchar(99) NOT NULL default '', `isbn` varchar(99) NOT NULL default '', `omschrijving` varchar(255) NOT NULL default '', `label` varchar(99) NOT NULL default '', `disc` varchar(99) NOT NULL default '', `trackscount` varchar(99) NOT NULL default '', PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=latin1; -- -------------------------------------------------------- -- -- Tabel structuur voor tabel `cd_categorie` -- CREATE TABLE `cd_categorie` ( `id` int(10) unsigned NOT NULL auto_increment, `recordid` varchar(45) NOT NULL default '', `disc` varchar(99) NOT NULL default '', `track01` varchar(45) NOT NULL default '', `track02` varchar(45) NOT NULL default '', `track03` varchar(45) NOT NULL default '', `track04` varchar(45) NOT NULL default '', `track05` varchar(45) NOT NULL default '', `track06` varchar(45) NOT NULL default '', `track07` varchar(45) NOT NULL default '', `track08` varchar(45) NOT NULL default '', `track09` varchar(45) NOT NULL default '', `track10` varchar(45) NOT NULL default '', `track11` varchar(45) NOT NULL default '', `track12` varchar(45) NOT NULL default '', `track13` varchar(45) NOT NULL default '', `track14` varchar(45) NOT NULL default '', `track15` varchar(45) NOT NULL default '', `track16` varchar(45) NOT NULL default '', `track17` varchar(45) NOT NULL default '', `track18` varchar(45) NOT NULL default '', `track19` varchar(45) NOT NULL default '', `track20` varchar(45) NOT NULL default '', PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=latin1; -- -------------------------------------------------------- -- -- Tabel structuur voor tabel `cd_tracks` -- CREATE TABLE `cd_tracks` ( `id` int(10) unsigned NOT NULL auto_increment, `recordid` varchar(45) NOT NULL default '', `disc` varchar(99) NOT NULL default '', `track01` varchar(45) NOT NULL default '', `track02` varchar(45) NOT NULL default '', `track03` varchar(45) NOT NULL default '', `track04` varchar(45) NOT NULL default '', `track05` varchar(45) NOT NULL default '', `track06` varchar(45) NOT NULL default '', `track07` varchar(45) NOT NULL default '', `track08` varchar(45) NOT NULL default '', `track09` varchar(45) NOT NULL default '', `track10` varchar(45) NOT NULL default '', `track11` varchar(45) NOT NULL default '', `track12` varchar(45) NOT NULL default '', `track13` varchar(45) NOT NULL default '', `track14` varchar(45) NOT NULL default '', `track15` varchar(45) NOT NULL default '', `track16` varchar(45) NOT NULL default '', `track17` varchar(45) NOT NULL default '', `track18` varchar(45) NOT NULL default '', `track19` varchar(45) NOT NULL default '', `track20` varchar(45) NOT NULL default '', PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=latin1; [/code:1:d4c85b352b]
  • Je database design is sowieso erg fout, bedenk je maar eens wat er moet gebeuren voor een cd met 21 tracks. Pas als je geen kolommen hoeft toe te voegen voor meer tracks dan 20 kom je in de richting van een goed design...

Beantwoord deze vraag

Weet jij het antwoord op deze vraag? Registreer of meld je aan met je account

Dit is een gearchiveerde pagina. Antwoorden is niet meer mogelijk.