Ga naar inhoud

Probleem met querie


anoniem

Aanbevolen berichten

Ik heb een probleem met een querie die een aantal gegevens moet opvragen vanuit een DB. Op de zoekpagina heb ik een pull-down menu gemaakt met de naam "zoek_in_gesch" en een tekstveld (1 regel) met de naam "zoek". Gegevens worden doorgestuurd naar een nieuwe pagina die de querie moet uitvoeren. Deze code heb ik gebruikt voor de pagina's die de gegevens moet weergeven: [quote:e03fbcf79e] <?php include("includedbp.inc"); $global_dbh = mysql_connect("$hostname", "$user", "$password"); if (!$global_dbh) die ("Fout bij verbinden met database"); mysql_select_db($database, $global_dbh); $query = "SELECT bedr_naam, naam, datum, maand, jaar, partij FROM $table_name WHERE $zoek_in_gesch = $zoek"; $result_id = mysql_query($query); $row = mysql_fetch_row ($result_id); $string = (t_string="($row->$bedr_naam $row->$naam $row->$datum $row->$maand $row->$jaar $row->$partij<br>)"); print "$string"; ?> [/quote:e03fbcf79e] Ook heb ik al het volgende geprobeerd: [quote:e03fbcf79e] <?php include("includedbp.inc"); $global_dbh = mysql_connect("$hostname", "$user", "$password"); if (!$global_dbh) die ("Fout bij verbinden met database"); mysql_select_db($database, $global_dbh); function display_db_query($table_name) { $query_string = "SELECT bedr_naam, naam, datum, maand, jaar, partij FROM $table_name WHERE $zoek_in_gesch = $zoek"; $result_id = mysql_query($query_string); $column_count = mysql_num_fields($result_id); print<"table border=0>n"); while ($row = mysql_fetch_row($result_id)) { print("<tr align=left valign=top>"); for ($column_num = 0; $column_num < $column_count; $column_num++) print("<td>$row[$column_num]</td>n"); print("</tr>n"); } print("</table>n"); } ?> <table><tr><td> <?php display_db_table("partijgesch", $global_dbh); ?> </td></tr></table> [/quote:e03fbcf79e] Weet iemand waar ik een fout heb gemaakt of weet iemand een andere goede code die ik eventueel kan gebruiken? Alvast bedankt, Arjen. [ Dit Bericht is bewerkt door: arjenv op 2002-01-29 20:32 ] [ Dit Bericht is bewerkt door: arjenv op 2002-01-30 00:03 ]
Link naar reactie
Als je zoekt in stringvelden, moet je zoekterm tussen quotes staan in de query: $result = mysql($dbname, "SELECT * FROM Boeken WHERE Titel Like '%$zoekterm%' OR Auteur Like '%$zoekterm%' ORDER BY Boeken.Auteur_Achternaam, Boeken.Titel;"); De %% staan er om ook op gedeeltes van velden te zoeken. Let verder op dat als de zoekterm een ' bevat, dat dan je query niet meer loopt. Verhelp je door eerst slashes aan je zoekterm toe te voegen, met de functie addSlashes(string).
Link naar reactie
Ben al weer een paar stappen verder. De foutmelding van regel 15 (vorige bericht)is opgelost. Nu zit ik alleen met de volgende fout, en deze is voor mij totaal onbekend. Fatal error: Call to undefined function: display_db_table() in zoek_resultaat.inc on line 30 Mocht iemand weten wat dit inhoud en hoe ik dit op kan lossen, dan graag. PS het gaat om de tweede quote van het eerste bericht. De naam van de tabel is "partijgesch"
Link naar reactie
De foutmelding geeft het al aan: de functie is niet gedeclareerd. M.a.w. je roept de functie [i:6b3d17256c]display_db_[b:6b3d17256c]table[/b:6b3d17256c][/i:6b3d17256c] aan terwijl in je code de functie als [i:6b3d17256c]display_db_[b:6b3d17256c]query[/b:6b3d17256c][/i:6b3d17256c] staat. Er klopt b.t.w. nog wel meer niet aan de functie; - global vars die niet als zodanig gedeclareerd zijn, - vars die meegestuurd worden aan de functie maar niet gebruikt worden. [ Dit Bericht is bewerkt door: Annie op 2002-01-30 01:07 ]
Link naar reactie
OK, Nou heb ik dus de volgende code: [quote:d3ee8027d4] <?php include("includedbp.inc"); $global_dbh = mysql_connect("$hostname", "$user", "$password"); if (!$global_dbh) die ("Fout bij verbinden met database"); mysql_select_db($database, $global_dbh); function display_db_query($table_name) { $query_string = "SELECT bedr_naam, naam, datum, maand, jaar, partij FROM $table_name WHERE $zoek_in_gesch = '%$zoek%'"; $result_id = mysql_query($query_string); $column_count = mysql_num_fields($result_id); print("<table border=0>n"); while ($row = mysql_fetch_row($result_id)) { print("<tr align=left valign=top>"); for ($column_num = 0; $column_num < $column_count; $column_num++) print("<td>$row[$column_num]</td>n"); print("</tr>n"); } print("</table>n"); } ?> <table><tr><td> <?php display_db_query("partijgesch", $global_dbh); ?> </td></tr></table> [/quote:d3ee8027d4] Met dank aan de reacties. Alleen het werkt nog steeds niet. Ik ben echt totaal nieuw op dit vlak, dus alle hulp is welkom.
Link naar reactie
Zoals ik al zei in m'n edit: kijk eens naar de scope van je variabelen. Lees ook even de manual door over het gebruik van vars binnen PHP, dat moet een hoop duidelijk maken. Als het dan nog niet duidelijk is dan kan je natuurlijk altijd nog vragen stellen. http://www.php.net/manual/en/language.variables.scope.php tip: echo een query eerst naar het scherm voor je 'm uitvoert op de database. Dan kan je zien hoe deze gevuld is (of juist niet :wink:) door je variabelen. En dan kan je vaak beter beoordelen waarom een query niet de resultaten geeft die je eigenlijk verwacht.
Link naar reactie
Ik heb het een en ander nog eens doorgelezen, maar ik heb ondertussen nog steeds geen werkend script. Heb bij webmonkey ook zo'n tutorial afgewerkt en de code voor de db ook gebruikt voor mijn script, maar bij het opvragen blijf ik een melding krijgen dat alles niet werkt, en ik denk haast dat het in de mysql_fetch_array zit. Ik zou alleen echt niet weten hoe of wat ik moet doen om het script werkend te krijgen. Annie: Heb eerst een echo gedaan van de query voordat ie naar de db gestuurd word, en hij is gewoon goed gevuld door de variabelen. [ Dit Bericht is bewerkt door: arjenv op 2002-02-03 01:33 ]
Link naar reactie
[quote:a2057845fa] Op 03-02-2002 1:30, schreef arjenv: Annie: Heb eerst een echo gedaan van de query voordat ie naar de db gestuurd word, en hij is gewoon goed gevuld door de variabelen. [/quote:a2057845fa] En heb je deze query ook al eens uitgeprobeerd op de database (dus niet via het script)? Laat anders nog eens wat code zien wat je nu hebt.
Link naar reactie
Hij werkt! :grin: Heb de code nogmaals overgeschreven met een aantal andere select statements(?) en het where gedeelte niet als = maar als like en nou krijg ik eindelijk output. denk dat ik ook ergens een typefout had staan. :oops: Nogmaals bedankt voor alle reacties. Ps, hier ff het script dat nu werkt, misschien dat iemand er nog wat aan heeft: [code:1:88e7f0a522] <?php print("Dit zijn de resultaten voor uw zoekactie naar: <b>$zoek</b><br>"); include("includedbp.inc"); $db = mysql_connect("$hostname", "$user", "$password"); if (!$db) die ("Fout bij verbinden met database"); mysql_select_db("$database"); $query = "SELECT bedr_naam, naam, dag, maand, jaar, partij FROM partijgesch WHERE $zoek_in_gesch like '%$zoek%'"; echo "$query"; $result = mysql_query($query); if ($myrow = mysql_fetch_array($result)) { echo "<table border=1>n"; echo "<tr><td>Bedrijfsnaam</td><td>Naam</td><td>Datum</td><td>Partij</td></tr>n"; do { printf("<tr><td>%s</td><td>%s</td><td>%s-%s-%s</td><td>%s</td></tr>n", $myrow["bedr_naam"], $myrow["naam"], $myrow["dag"], $myrow["maand"], $myrow["jaar"], $myrow["partij"]); } while ($myrow = mysql_fetch_array($result)); echo "</table>n"; } else { echo "Sorry, geen data gevonden voor zoekopdracht: $zoek !"; } ?> [/code:1:88e7f0a522]
Link naar reactie

Om een reactie te plaatsen, moet je eerst inloggen

Gast
Reageer op dit topic

×   Geplakt als verrijkte tekst.   Herstel opmaak

  Er zijn maximaal 75 emoji toegestaan.

×   Je link werd automatisch ingevoegd.   Tonen als normale link

×   Je vorige inhoud werd hersteld.   Leeg de tekstverwerker

×   Je kunt afbeeldingen niet direct plakken. Upload of voeg afbeeldingen vanaf een URL in

×
×
  • Nieuwe aanmaken...