beste allen,

ik heb een query met daarin de invoer van een formulier in seperate regels

[img]https://live.staticflickr.com/65535/49844771748_aec81da8bc.jpg[/img]

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.

[img]https://live.staticflickr.com/65535/49845314661_554ba7bc3b_w.jpg[/img]

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.


// 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>&nbsp&nbsp" . $row [field_value]."</td>";
echo "<td>&nbsp;&nbsp;&nbsp;&nbsp" . $row['COUNT(*)'] . "</td>";

echo "</tr>";

}
/* close connection */
$dbh=NULL;
?>
Kijk eens naar WHERE... IN (.......)
Zie ook deze link.


SELECT * FROM josnu_eb_field_values WHERE field_value IN ('NA','NB','NC','ND')
- Ariën - op 02/05/2020 13:41:37

Kijk eens naar WHERE... IN (.......)
Zie ook deze link.


SELECT * FROM josnu_eb_field_values WHERE field_value IN ('NA','NB','NC','ND')



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

foreach($dbh->query('SELECT field_value, COUNT(*) FROM josnu_eb_field_values GROUP BY field_value') as $row)


aangepast naar


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
Probeer dit eens :

foreach($dbh->query("SELECT * , COUNT(*) FROM josnu_eb_field_values WHERE field_value IN ('NA','NB','NC','ND')") as $row)


of dit :

foreach($dbh->query('SELECT * , COUNT(*) FROM josnu_eb_field_values WHERE field_value IN ("NA","NB","NC","ND")') as $row)

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.
- 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.


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,


$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();


iemand die me daar een goede richting op kan wijzen ?
Je had die COUNT() toch al?
Zou het niet veel logischer zijn om deze "separate regels", of liever gezegd, de regelnummers, aan te spreken?

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?
Dat klopt inderdaad

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.
Uhm, zoiets?

SELECT field_value, COUNT(field_value) AS aantal
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.
Bedankt Thomas,

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.

Reageren