Ga naar inhoud

php via formulier gegeven uit database halen


Aanbevolen berichten

Ik krijg het niet voor elkaar om via een zoekformulier gegevens uit een database te halen. In de database staan typenummer, pdfnaam en plaats. Als je in het formulier een typenummer invult, dan zou er het bijbehorende pdf formulier, via bv een link, moeten komen. Ik heb nu onderstaande code, maar zodra je op de submit knop drukt, krijg je alle gegevens uit de database. [code:1:a5e85ea325]<form action="<?echo $_SERVER["PHP_SELF"];?> " method="post"> Artikel: <input type="text" name="intoets"> <input type="submit" name="verstuurd" value="Zoek typenummer"> </form> <?php include ("config.inc"); $tabel = "csi"; if(!empty($_POST)) { if ($_POST['intoets']=="$typenummer") { // open database connectie. $connectie = mysql_connect($hostname, $gebruiker, $wachtwoord) or die ("Kan geen verbinding opbouwen!"); // selecteer database. mysql_select_db($database) or die ("Kan geen database selecteren!"); // Het opzetten van een vraagstelling $query = "SELECT * from $tabel"; // Het uitvoeren van een vraagstelling $resultaat = mysql_query($query) or die ("Fout in query:$query. " . mysql_error()); // Laat gegevens op het scherm zien while ( $rij = mysql_fetch_array($resultaat) ) { // Vanuit array toewijzen van variabelen van de array $rij $typenummer = $rij["typenummer"]; $pdfnaam = $rij["pdfnaam"]; $plaats = $rij["plaats"]; echo "Zoekresultaat:<a href=\"pdf/$plaats/$pdfnaam.pdf\" target=\"_blank\"> $typenummer</a>"; } } else { ?> Artikel bestaat niet <a href="<?echo $_SERVER["PHP_SELF"];?>">Zoek opnieuw</a> <?php } } ?> [/code:1:a5e85ea325] Ik weet het, ik ben nog maar een beginner met php, maar kan iemand mij opweg helpen.
Link naar reactie
[quote:d86dbf293d]zodra je op de submit knop drukt, krijg je alle gegevens $query = "SELECT * from $tabel"; [/quote:d86dbf293d] Om met de woorden van Johan C. te spreken: "Da's logisch" Met een select * worden alle gegevens uit die tabel opgehaald. Je moet minimaal een "where"-clausule toevoegen. Dit limiteerd het resultaat tot de opgegeven vergelijking. 't wordt dan zoiets als [code:1:d86dbf293d]"SELECT * from $tabel where typenummer = " . $_POST['intoets'][/code:1:d86dbf293d]
Link naar reactie
Bedankt voor je sneller reactie, maar nu krijg ik een SQL error [quote:8c7bf22615]Fout in query:SELECT * from csi WHERE typenummer = . You have an error in your SQL syntax near '' at line 1[/quote:8c7bf22615] Misschien moet ik het op een andere manier benaderen. Ik wil dus eigenlijk een zoekformulier waar men een typenummer intoest en dan de bijbehorende gebruiksaanwijzing in pdf formaat wordt geopend in een nieuw scherm. Er zijn een paar hondererd type nummers en 50 tot 100 gebruiksaanwijzingen.
Link naar reactie
Ik dacht:[code:1:2aaa42fe40]$query = "SELECT * FROM $tabel WHERE typenummer = " . $_POST['intoets'];[/code:1:2aaa42fe40]veranderen in:[code:1:2aaa42fe40]$query = "SELECT * FROM $tabel WHERE typenummer='$_POST['intoets']'";[/code:1:2aaa42fe40]of:[code:1:2aaa42fe40]$query = "SELECT * FROM $tabel WHERE typenummer=$_POST['intoets']";[/code:1:2aaa42fe40]ffff uitprobleren.
Link naar reactie
Bedankt Jossan, ik heb nu de volgende code: [code:1:6039211976] <form action="<?echo $_SERVER["PHP_SELF"];?> " method="post"> Artikel: <input type="text" name="intoets"> <input type="submit" name="verstuurd" value="Zoek typenummer"> </form> <?php include ("config.inc"); $tabel = "csi"; $intoets = $_POST['intoets']; // open database connectie. $connectie = mysql_connect($hostname, $gebruiker, $wachtwoord) or die ("Kan geen verbinding opbouwen!"); // selecteer database. mysql_select_db($database) or die ("Kan geen database selecteren!"); // Het opzetten van een vraagstelling $query = ("SELECT * FROM $tabel WHERE typenummer='$intoets'"); // Het uitvoeren van een vraagstelling $resultaat = mysql_query($query) or die ("Fout in query:$query. " . mysql_error()); // Laat gegevens op het scherm zien while ( $rij = mysql_fetch_array($resultaat) ) { // Vanuit array toewijzen van variabelen van de array $rij $typenummer = $rij["typenummer"]; $pdfnaam = $rij["pdfnaam"]; $plaats = $rij["plaats"]; } echo "Zoekresultaat:<a href=\"pdf/$plaats/$pdfnaam.pdf\" target=\"_blank\"> $typenummer</a><br />"; ?> [/code:1:6039211976] Maar hoe kan ik het nu zo maken dat de eerste keer als de pagina geladen wordt er geen zoekresultaten zijn te zien en als er niets is ingevuld en toch gesubmit wordt er een foutmelding komt.
Link naar reactie
Kijken of er daadwerkelijk iets 'gepost' is. Dus kijken of de variabele $_POST leeg is. Indien dat het geval is, komen ze op de pagina en hebben ze nergens op gedrukt. Om te kijken of ze het veld hebben ingevuld kun je kijken of dat veld een waarde heeft. Dus of $_POST['intoets'] niet leeg is. Lijken me eigenlijk de basisdingetjes... -Anne
Link naar reactie
Ik zou het zoiets oplossen: [code:1:a06338fb18]if (isset($_POST['intoets'])) { // intoets gevuld /** --bijbehorende actie (database openen)-- */ if /** hier kijken of record in database aanwezig is */ { // intoets geldig /** --bijbehorende actie (met betreffende record)-- */ } } else { // intoets ongeldig /** --bijbehorende actie (b.v. melding op scherm)-- */ }[/code:1:a06338fb18]Ik denk dat je er verder wel uitkomt. :wink:
Link naar reactie
[quote:ecc58bb751="termin8or"]Er staat me iets bij dat isset problemen op kan leveren, omdat de POST variabelen altijd een waarde hebben geloof ik. Misschien is het beter om er !empty van te maken ;)[/quote:ecc58bb751]Bedankt Anne, Dat zou inderdaad kunnen. (Ik ben zelf ook nog maar 2 maanden met PHP bezig :roll: ) Heb ik er ook van geleerd! Jos
Link naar reactie
Bedankt allemaal voor het meedenken. Ik heb het nu werkend m.b.v. jullie tips, nadenken en zoeken. Ik heb nu deze code werkend. [code:1:4c8f66d529] <form action="<?echo $_SERVER["PHP_SELF"];?> " method="post"> Artikel: <input type="text" name="intoets"> <input type="submit" name="verstuurd" value="Zoek typenummer"> </form> <?php if ($_POST['verstuurd']) { include ("config.inc"); $tabel = "csi"; $intoets = $_POST['intoets']; // open database connectie. $connectie = mysql_connect($hostname, $gebruiker, $wachtwoord) or die ("Kan geen verbinding opbouwen!"); // selecteer database. mysql_select_db($database) or die ("Kan geen database selecteren!"); // Het opzetten van een vraagstelling $query = ("SELECT * FROM $tabel WHERE typenummer LIKE '$intoets'"); // Het uitvoeren van een vraagstelling $resultaat = mysql_query($query) or die ("Fout in query:$query. " . mysql_error()); // Laat gegevens op het scherm zien while ( $rij = mysql_fetch_array($resultaat) ) { // Vanuit array toewijzen van variabelen van de array $rij $typenummer = $rij["typenummer"]; $pdfnaam = $rij["pdfnaam"]; $plaats = $rij["plaats"]; } if ($_POST['intoets']=="$typenummer") { echo ("Zoekresultaat: <a href=\"pdf/" . $plaats . "/" . $pdfnaam . ".pdf\" target=\"_blank\">" . $typenummer . "</a><br />"); } else { ?> Typenummer bestaat niet, let goed op hoofd letters en kleine letters. <a href="<?echo $_SERVER["PHP_SELF"];?>"><br />Zoek opnieuw</a> <?php } } ?>[/code:1:4c8f66d529]
Link naar reactie
Graag gedaan. Ik zag dat je nu [code:1:502cbc5b97]// Het opzetten van een vraagstelling $query = ("SELECT * FROM $tabel WHERE typenummer LIKE '$intoets'");[/code:1:502cbc5b97]gebruikt, terwijl je eerst[code:1:502cbc5b97]// Het opzetten van een vraagstelling $query = ("SELECT * FROM $tabel WHERE typenummer='$intoets'");[/code:1:502cbc5b97]gebruikte. Kan je me vertellen wat het verschil is tussen [typenummer LIKE '$intoets'] en [typenummer='$intoets']? Dan kan ik daar ook wat van leren.
Link naar reactie
Ik weet het verschil ook niet meer zo precies, ik was op zoek naar een manier om hoofd- en kleine letters invoer geen verschil te laten maken bij het zoeken in de database, maar daar kwam ik niet helemaal uit. Tijdens het uitproberen had ik dit ergens gelezen en heb het maar laten staan, want er is voor mij iig geen verschil te merken.
Link naar reactie
[quote:427b9bb7ed]Kan je me vertellen wat het verschil is tussen [typenummer LIKE '$intoets'] en [typenummer='$intoets']?[/quote:427b9bb7ed] In bovenstaande code is er geen verschil tussen :) Maar wanneer 'like' juist wordt toegepast werkt het als een soort zoekstring met jokers (je kent ze nog wel van dos: dir *.bat) Even afhankelijk van de server waarmee gewerkt wordt is een juiste schrijfwijze: select * from tabel where naam like '%piet%' '%piet%' levert piet, pietjepuk, kanariepiet en kanariepietje '%piet' levert piet en kanariepiet 'piet%' levert piet en pietjepuk 'piet' levert alleen piet op Zoals verschillen de mogelijkheden per database-type. Zo kan er soms gebruik gemaakt worden van de _ voor een enkel teken en van [ ] om een serie karakters op te geven.
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...