In de echo alleen bepaalde waarde op het scherm tonen
ik heb een query met daarin de invoer van een formulier in seperate regels
ik kan hier een teller op loslaten en alle zelfde waardes worden bij elkaar opgeteld.
als ik deze naar het scherm voer met Echo levert dit een hele waslijst met informatie op waar ik eigenlijk niet op zit te wachten.
ik wil eigenlijk alleen de 4 (NA,NB,NC,ND) op het scherm zien.
Hoe kan ik onderstaande code aanpassen zodat ik kan selecteren wat ik wil zien.
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
// Create connection
$dbh = new PDO("mysql:host=$servername;dbname=$my_db", $username, $password);
foreach($dbh->query('SELECT field_value, COUNT(*)
FROM josnu_eb_field_values
GROUP BY field_value') as $row)
{
echo "<tr>";
echo "<td>  " . $row [field_value]."</td>";
echo "<td>  " . $row['COUNT(*)'] . "</td>";
echo "</tr>";
}
/* close connection */
$dbh=NULL;
?>
$dbh = new PDO("mysql:host=$servername;dbname=$my_db", $username, $password);
foreach($dbh->query('SELECT field_value, COUNT(*)
FROM josnu_eb_field_values
GROUP BY field_value') as $row)
{
echo "<tr>";
echo "<td>  " . $row [field_value]."</td>";
echo "<td>  " . $row['COUNT(*)'] . "</td>";
echo "</tr>";
}
/* close connection */
$dbh=NULL;
?>
Gewijzigd op 02/05/2020 13:28:45 door Manfred vd waarsenburg
- Ariën - op 02/05/2020 13:41:37:
bedankt voor de info, echter krijg ik het niet aan de gang en levert het de volgende fout op :
Fout: 0 syntax error, unexpected 'NA' (T_STRING), expecting ')'
Ik heb nu onderstaande stukje code
Code (php)
1
foreach($dbh->query('SELECT field_value, COUNT(*) FROM josnu_eb_field_values GROUP BY field_value') as $row)
aangepast naar
Code (php)
1
foreach($dbh->query('SELECT * , COUNT(*) FROM josnu_eb_field_values WHERE field_value IN ('NA','NB','NC','ND')') as $row)
ik heb al meerder pogingen gedaan maar krijg steeds dezelfde fout melding
Code (php)
1
foreach($dbh->query("SELECT * , COUNT(*) FROM josnu_eb_field_values WHERE field_value IN ('NA','NB','NC','ND')") as $row)
of dit :
Gooi dat dan minimaal door fetch_assoc heen, zodat je een array hebt. En als je alles wilt, zul je dit met while() moeten regelen i.p.v. foreach.
Aha, dat doet PDO dus weer meteen in de functie zelf. Dat had ik even niet in de gaten.
Gewijzigd op 02/05/2020 14:42:08 door - Ariën -
- Ariën - op 02/05/2020 14:35:09:Een query met een niet direct bruikbare result/object in de foreach gooien?
Gooi dat dan minimaal door fetch_assoc heen, zodat je een array hebt. En als je alles wilt, zul je dit met while() moeten regelen i.p.v. foreach.
Aha, dat doet PDO dus weer meteen in de functie zelf. Dat had ik even niet in de gaten.
Gooi dat dan minimaal door fetch_assoc heen, zodat je een array hebt. En als je alles wilt, zul je dit met while() moeten regelen i.p.v. foreach.
Aha, dat doet PDO dus weer meteen in de functie zelf. Dat had ik even niet in de gaten.
Beste Arien,
Bedankt, inmiddels al een stukje opgeschoten.
krijg je alleen nog maar de juiste regels.
nu nog de count inbouwen om de types bij elkaar te tellen,
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
$mysqli = new mysqli("localhost", $username, $password, $my_db);
/* check connection */
if ($mysqli->connect_errno) {
printf("Connect failed: %s\n", $mysqli->connect_error);
exit();
}
$query = "SELECT * FROM josnu_eb_field_values WHERE field_value IN ('NA','NB','NC','ND') ";
if ($result = $mysqli->query($query)) {
/* fetch associative array */
while ($row = $result->fetch_assoc()) {
printf ("%s\n", $row["field_value"]);
}
/* free result set */
$result->free();
}
/* close connection */
$mysqli->close();
/* check connection */
if ($mysqli->connect_errno) {
printf("Connect failed: %s\n", $mysqli->connect_error);
exit();
}
$query = "SELECT * FROM josnu_eb_field_values WHERE field_value IN ('NA','NB','NC','ND') ";
if ($result = $mysqli->query($query)) {
/* fetch associative array */
while ($row = $result->fetch_assoc()) {
printf ("%s\n", $row["field_value"]);
}
/* free result set */
$result->free();
}
/* close connection */
$mysqli->close();
iemand die me daar een goede richting op kan wijzen ?
Je had die COUNT() toch al?
Daarvoor zouden we eerst de indeling van je databasetabel moeten begrijpen?
Wat betekent bijvoorbeeld 13, 23, NB?
Is dat het 13e ingevulde formulier, invoerveld 23 met waarde NB?
Als dat zo is, dan zou je toch simpelweg een selectie kunnen maken op grond van de invoervelden die je wilt hebben, en niet zozeer welke specifieke waarden deze bevatten?
Het 13e ingevulde formulier, invoerveld 23 met waarde NB, dit zou ook NA/NC of ND kunnen zijn.
Zou je een voorstel kunnen doen, misschien is dat iets waar ik later ook nog voordeel uit kan halen.
Code (php)
1
2
3
4
2
3
4
SELECT field_value, COUNT(field_value) AS aantal
FROM josnu_eb_field_values
WHERE <invoerveld_kolomnaam> = 23
GROUP BY field_value
FROM josnu_eb_field_values
WHERE <invoerveld_kolomnaam> = 23
GROUP BY field_value
(waarbij je uiteraard <invoerveld_kolomnaam> vervangt door de daadwerkelijke kolomnaam)
En als je in meerdere kolommen geinteresseerd bent, gebruik je WHERE <invoerveld_kolomnaam> IN (x, y, z), waarbij x,y,z de kolomnummers zijn. Mogelijk is het dan ook logisch dat je die dan ook in het SELECT-statement opneemt, en of hier op sorteert.
Gewijzigd op 02/05/2020 17:58:08 door Thomas van den Heuvel
ik heb deze getest en dat werkt inderdaad iets simpeler als eerst de dingen aanroepen die je wil tellen.
Ik heb er bijvoorbeeld eentje bij zitten met de keuze uit 50 stuks, dan is deze methode simpeler in te richten.