SQL probleempje

Status
Niet open voor verdere reacties.

l.degroot01

Gebruiker
Lid geworden
18 jan 2003
Berichten
161
PHP:
                        <?php
                        if (isset($_POST['zoek'])) {
                            if ($_POST['begindatum'] == "" OR $_POST['einddatum'] == "") {
                                print("<font color='red'><b>U dient beide datumvelden in te vullen!</b.</font><br/>");
                            } else {
                                $SQL = "SELECT v.naam, count(e.organiserendeVerenigingId) FROM vereniging v JOIN evenement e ON v.verenigingId = e.organiserendeVerenigingId WHERE e.begindatum BETWEEN " . $_POST['begindatum'] . " AND " . $_POST['einddatum'] . " AND e.einddatum BETWEEN " . $_POST['begindatum'] . " AND " . $_POST['einddatum'] . "";
                                $result = mysql_query($SQL);

                                while ($row = mysql_fetch_assoc($result)) {
                                    print("<tr><td>");
                                    print($row['naam']);
                                    print("</td><td>");
                                    print($row['count(e.organiserendeVerenigingId)']);
                                    print("</td></tr>");
                                }
                            }
                        }


                        //  if (isset($_POST["zoek"])) {  //set variabele als "zoek" geset is
                        //     $SQL = "SELECT v.naam, count(e.organiserendeVerenigingId) FROM vereniging v JOIN evenement e ON v.verenigingId = e.organiserendeVerenigingId WHERE e.begindatum BETWEEN " . $_POST['begindatum'] . " AND " . $_POST['einddatum'] . " AND e.einddatum BETWEEN" . $_POST['begindatum'] . "AND " . $_POST['einddatum'] . "";  //Query
                        //     $result = mysql_query($SQL);
                        //    while ($row = mysql_fetch_assoc($result)) { //Vul tabel met gegevens zolang er gegevens voorhanden zijn
                        //        echo $row["v.naam"];
                        //print "<tr><th class='tableheading'>" . $db_field['naam'] . "</th>";
                        // print "<td align='center'>" . $db_field['count(count(e.organiserendeVerenigingId))'] . "</td></tr>";
                        // print(mysql_error()); //debug
                        // }
                        //  }
                        ?>

Ik krijg geen output vanuit de query, terwijl er in de database wel degelijk gegevens staan. Dit is mijn resultaat:

sql.png


Mijn volledige code is niet relevant vermoed ik maar zal ik hieronder toch tonen.

Code:
<!--

**CHANGELOG**
7-12-2010 - Debuggen SQL Error.
-->

<html>
    <head>
        <link href="new.css" rel="stylesheet" type="text/css">
    </head>
    <?php
    include("inc_logged_in.php");
    include("connect.php");
    ?>
    <body>
        <div class="container">
            <?php
            include("header.php");
            ?>
            <div class="content">
                <div class="centercontent">
                    <h2>Overzicht aantal evenementen per vereniging</h2>
                    <div align="center" class="pagina"/>
                    <form action="overzichteventspervereniging.php" method="POST">
                        <table class="tabellpv">
                            <tr>
                                <th colspan="2" align="center"> Periode </th>
                            </tr>
                            <tr>
                                <td>begindatum<input type="text" name="begindatum"/>(jjjj-mm-dd)</td>
                                <td>einddatum<input type="text" name="einddatum"/>(jjjj-mm-dd)</td>
                                <td><input type="Submit" name="zoek" value="Zoek!"></td>
                            </tr>
                        </table></form><br /><table width="500">
                        <tr>
                            <th>Naam vereniging</th>
                            <th>Aantal evenementen</th>
                            <th>Aantal deelnemers</th>
                            <th>Aantal inschrijvingen</th>
                        </tr>
                        <?php
                        if (isset($_POST['zoek'])) {
                            if ($_POST['begindatum'] == "" OR $_POST['einddatum'] == "") {
                                print("<font color='red'><b>U dient beide datumvelden in te vullen!</b.</font><br/>");
                            } else {
                                $SQL = "SELECT v.naam, count(e.organiserendeVerenigingId) FROM vereniging v JOIN evenement e ON v.verenigingId = e.organiserendeVerenigingId WHERE e.begindatum BETWEEN " . $_POST['begindatum'] . " AND " . $_POST['einddatum'] . " AND e.einddatum BETWEEN " . $_POST['begindatum'] . " AND " . $_POST['einddatum'] . "";
                                $result = mysql_query($SQL);

                                while ($row = mysql_fetch_assoc($result)) {
                                    print("<tr><td>");
                                    print($row['naam']);
                                    print("</td><td>");
                                    print($row['count(e.organiserendeVerenigingId)']);
                                    print("</td></tr>");
                                }
                            }
                        }


                        //  if (isset($_POST["zoek"])) {  //set variabele als "zoek" geset is
                        //     $SQL = "SELECT v.naam, count(e.organiserendeVerenigingId) FROM vereniging v JOIN evenement e ON v.verenigingId = e.organiserendeVerenigingId WHERE e.begindatum BETWEEN " . $_POST['begindatum'] . " AND " . $_POST['einddatum'] . " AND e.einddatum BETWEEN" . $_POST['begindatum'] . "AND " . $_POST['einddatum'] . "";  //Query
                        //     $result = mysql_query($SQL);
                        //    while ($row = mysql_fetch_assoc($result)) { //Vul tabel met gegevens zolang er gegevens voorhanden zijn
                        //        echo $row["v.naam"];
                        //print "<tr><th class='tableheading'>" . $db_field['naam'] . "</th>";
                        // print "<td align='center'>" . $db_field['count(count(e.organiserendeVerenigingId))'] . "</td></tr>";
                        // print(mysql_error()); //debug
                        // }
                        //  }
                        ?>
                    </table>
                </div></div></div>

    </body>

</html>
 
Ik zie een 0... dus het lijkt er op dat je gewoon geen rijen terugkrijgt.

Zet eens dit bovenaan je code:
PHP:
error_reporting( E_ALL );

En zet eens dit onder je $result:

PHP:
echo mysql_error();

Een van die twee gaat je waarschijnlijk een hint opleveren over waar het fout gaat.
 
Ik zie een 0... dus het lijkt er op dat je gewoon geen rijen terugkrijgt.

Zet eens dit bovenaan je code:
PHP:
error_reporting( E_ALL );

En zet eens dit onder je $result:

PHP:
echo mysql_error();

Een van die twee gaat je waarschijnlijk een hint opleveren over waar het fout gaat.

Nee dit werkt niet, krijg gewoon precies dezelfde output.
 
in de mysql dient een groupby te zitten anders levert het maar 1 row op

Dat hoeft toch niet als je een tabel wil vullen met gegevens?

Mijn huidige php code

PHP:
                        <?php
                        if (isset($_POST['zoek'])) {
                            if ($_POST['begindatum'] == "" OR $_POST['einddatum'] == "") {
                                print("<font color='red'><b>U dient beide datumvelden in te vullen!</b.</font><br/>");
                            } else {
                                $SQL = "SELECT v.naam, e.deelnemers, e.inschrijvingen, count(e.organiserendeVerenigingId) FROM vereniging v JOIN evenement e ON v.verenigingId = e.organiserendeVerenigingId WHERE e.begindatum BETWEEN " . $_POST['begindatum'] . " AND " . $_POST['einddatum'] . " AND e.einddatum BETWEEN " . $_POST['begindatum'] . " AND " . $_POST['einddatum'] . "";
                                $result = mysql_query($SQL);

                                while ($row = mysql_fetch_assoc($result)) {
                                    print("<tr align='center'><td>");
                                    print($row['naam']);
                                    print("</td><td>");
                                    print($row['count(e.organiserendeVerenigingId)']);
                                    print("</td><td>");
                                    print($row['deelnemers']);
                                    print("</td><td>");
                                    print($row['inschrijvingen']);
                                    print("</td></tr>");
                                }
                            }
                        }


                        //  if (isset($_POST["zoek"])) {  //set variabele als "zoek" geset is
                        //     $SQL = "SELECT v.naam, count(e.organiserendeVerenigingId) FROM vereniging v JOIN evenement e ON v.verenigingId = e.organiserendeVerenigingId WHERE e.begindatum BETWEEN " . $_POST['begindatum'] . " AND " . $_POST['einddatum'] . " AND e.einddatum BETWEEN" . $_POST['begindatum'] . "AND " . $_POST['einddatum'] . "";  //Query
                        //     $result = mysql_query($SQL);
                        //    while ($row = mysql_fetch_assoc($result)) { //Vul tabel met gegevens zolang er gegevens voorhanden zijn
                        //        echo $row["v.naam"];
                        //print "<tr><th class='tableheading'>" . $db_field['naam'] . "</th>";
                        // print "<td align='center'>" . $db_field['count(count(e.organiserendeVerenigingId))'] . "</td></tr>";
                        // print(mysql_error()); //debug
                        // }
                        //  }
                        ?>

Het probleem zit hem in iedergeval in de query, want als ik de query versimpel werkt het wel, maar dan heb ik niet alle gegevens, ziet iemand de fout?
 
Laatst bewerkt:
bekijk eens mysql tools en start querybrowser om connectie te maken met je database
er zit een handige debug in voor je query
 
Mighty heeft gelijk, je moet een GROUPBY erin zetten waarschijnlijk. Voer je query eens handmatig uit in phpMyAdmin, waarschijnlijk krijg je gewoon geen informatie terug, of niet wat je verwacht.
 
Mighty heeft gelijk, je moet een GROUPBY erin zetten waarschijnlijk. Voer je query eens handmatig uit in phpMyAdmin, waarschijnlijk krijg je gewoon geen informatie terug, of niet wat je verwacht.

PHPMyAdmin keurt de query wel goed maar krijg idd daar ook geen resultaten, ik ga de query maar eens even opnieuw samenstellen denk ik.

Ook de GROUP BY eronder biedt geen resultaat

Code:
SELECT v.naam, e.deelnemers, e.inschrijvingen, COUNT( e.organiserendeVerenigingId ) 
FROM vereniging v
JOIN evenement e ON v.verenigingId = e.organiserendeVerenigingId
WHERE e.begindatum
BETWEEN 2009 -01 -01
AND 2011 -12 -12
AND e.einddatum
BETWEEN 2009 -01 -01
AND 2011 -12 -12
GROUP BY v.naam
 
Laatst bewerkt:
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan