In de echo alleen bepaalde waarde op het scherm tonen

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Manfred vd waarsenburg

Manfred vd waarsenburg

02/05/2020 13:25:15
Quote Anchor link
beste allen,

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

Afbeelding

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.

Afbeelding

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)
PHP script in nieuw venster Selecteer het PHP script
1
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>&nbsp&nbsp" . $row [field_value]."</td>";
echo "<td>&nbsp;&nbsp;&nbsp;&nbsp" . $row['COUNT(*)'] . "</td>";

echo "</tr>";

}
/* close connection */
$dbh=NULL;
?>

Gewijzigd op 02/05/2020 13:28:45 door Manfred vd waarsenburg
 
PHP hulp

PHP hulp

29/03/2024 08:07:52
 
- Ariën  -
Beheerder

- Ariën -

02/05/2020 13:41:37
Quote Anchor link
Kijk eens naar WHERE... IN (.......)
Zie ook deze link.

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
SELECT * FROM josnu_eb_field_values WHERE field_value IN ('NA','NB','NC','ND')
 
Manfred vd waarsenburg

Manfred vd waarsenburg

02/05/2020 14:12:21
Quote Anchor link
- Ariën - op 02/05/2020 13:41:37:
Kijk eens naar WHERE... IN (.......)
Zie ook deze link.

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
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
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
foreach($dbh->query('SELECT field_value, COUNT(*) FROM josnu_eb_field_values GROUP BY field_value') as $row)


aangepast naar

Code (php)
PHP script in nieuw venster Selecteer het PHP script
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
 
Adoptive Solution

Adoptive Solution

02/05/2020 14:22:36
Quote Anchor link
Probeer dit eens :

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
foreach($dbh->query("SELECT * , COUNT(*) FROM josnu_eb_field_values WHERE field_value IN ('NA','NB','NC','ND')") as $row)


of dit :

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
foreach($dbh->query('SELECT * , COUNT(*) FROM josnu_eb_field_values WHERE field_value IN ("NA","NB","NC","ND")') as $row)
 
- Ariën  -
Beheerder

- Ariën -

02/05/2020 14:35:09
Quote Anchor link
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.
Gewijzigd op 02/05/2020 14:42:08 door - Ariën -
 
Manfred vd waarsenburg

Manfred vd waarsenburg

02/05/2020 15:53:37
Quote Anchor link
- 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,

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
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();


iemand die me daar een goede richting op kan wijzen ?
 
- Ariën  -
Beheerder

- Ariën -

02/05/2020 16:09:47
Quote Anchor link
Je had die COUNT() toch al?
 
Thomas van den Heuvel

Thomas van den Heuvel

02/05/2020 16:38:54
Quote Anchor link
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?
 
Manfred vd waarsenburg

Manfred vd waarsenburg

02/05/2020 16:43:06
Quote Anchor link
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.
 
Thomas van den Heuvel

Thomas van den Heuvel

02/05/2020 17:55:53
Quote Anchor link
Uhm, zoiets?

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
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.
Gewijzigd op 02/05/2020 17:58:08 door Thomas van den Heuvel
 
Manfred vd waarsenburg

Manfred vd waarsenburg

02/05/2020 19:48:11
Quote Anchor link
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.
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.