Probleem: zoekscript in php en mySQL via inputvelden

Status
Niet open voor verdere reacties.

brecht27

Gebruiker
Lid geworden
26 nov 2011
Berichten
17
Ik ben op zoek naar een script waar je in het ene input veld een waarde typt die moet gezocht worden in de mysql database. In het 2de veld moet het resultaat verschijnen. Het derde is een zoekknop. Zie hieronder:

PHP:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Untitled Document</title>
</head>

<body>
<form method="post">
<input type="text" value="Waarde om op te zoeken" name="zoekstring" />&nbsp;<input type="text" value="Resultaat" />&nbsp;<input type="submit" value="Zoeken" />
</form>



<?php

//Hier de code

?>

</body>
</html>

De php code moet nog geschreven worden uiteraard, maar wist niet goed hoe te beginnen...
En dit liefst allemaal op dezelfde pagina, dus zonder een resultaten pagina te maken.
Ik weet niet of het kan?

Nu heb ik ook een code om velden erbij in te voegen. Zie hieronder:

PHP:
<html>
<head>
<title></title>
<script language="javascript">
fields = 0;
function addInput() {
if (fields != 20) {
document.getElementById('text').innerHTML += "<input type='text' value='Waarde om te zoeken' />";
document.getElementById('text').innerHTML += "<input type='text' value='Resultaat' />";
document.getElementById('text').innerHTML += "<input type='button' value='Zoeken' /><br />";
fields += 1;
} else {
document.getElementById('text').innerHTML += "<br />Only 20 fields allowed.";
document.form.add.disabled=true;
}
}
</script>
</head>
<body>
<form name="form">
<input type="button" onclick="addInput()" name="add" value="Add fields" />
</form>
<div id="text">

</div>
</body>
</html>


Ik hoop dat iemand mij kan helpen om die scripts samen te voegen tot een geheel en dat de uitleg een beetje duidelijk was. Ik heb op google al vanalles zitten zoeken maar niks concreets dat ik kan vinden om mij te helpen.
 
Laatst bewerkt:
Hoi brecht27,

ik denk dat je probleem niet zozeer bij het PHP gedeelte ligt maar bij het javascript. Als je even een 2e pagina schrijft voor je resultaten en deze hier post wil ik wel even kijken of het met behulp van jquery (=een javascript class) een ajax formulier ervan kan maken voor je.
 
Bedankt voor je snelle reactie, Barry127.

Eigenlijk is de bedoeling dat het linkse inputveld moet ingevuld worden met een zoekterm, daarna kan op de knop 'zoeken' gedrukt worden en daarna komt in het rechterinputveld het resultaat tevoorschijn (waarden staan in de database).
Ondertussen heb ik hier wel al het een en ander kunnen aanpassen. Zie hieronder:

PHP:
<html>
<head>
<title>test</title>
<script language="javascript">
function addInput() {
document.getElementById('addbox1').innerHTML += '<br /><input type="text" name="prodnummer[]" />';
document.getElementById('addbox2').innerHTML += '<br /><input type="text" name="prodnaam[]" />';
}
</script>
</head>
<body>
<form id="pricecheckform" name="pricecheckform" method="post" action="<?php echo $_SERVER['PHP_SELF'];?>">
<table width="75%"border="0">
  <tr>
    <td>Productnummer</td>
    <td>Productnaam</td>
  </tr>
  <tr>
    <td id="addbox1"><input type="text" name="prodnummer[]" /></td>
    <td id="addbox2"><input type="text" name="prodnaam[]" /></td>
    <td><input name="zoek" type="submit" value="Zoek" /></td>
  </tr>
  <tr>
    <td></td>
  </tr>
</table>
</form>
<input type="button" onclick="addInput()" name="add" value="Add fields" />

</body>
</html>


Ik denk dat wel beter daarop verder werken.
Nu weet ik niet goed wat ik op die resultaten pagina moet schrijven omdat alle velden nu ook op 1 blad staan. Of moet ik inderdaad een resultaten.php pagina hebben als ik op de zoekknop druk?
 
Hoi Brecht,

even zo uit mijn hoofd:

PHP:
<?php
//zet onderstaande in je <head>:
?>
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js"></script>
<?php
//zet dit ergens op je pagina:
?>
<div id="hiddendiv" style="display: none;"></div>
<?php
//verander deze code naar:
?>
<tr>
    <td><div id="addbox1"><input type="text" name="prodnummer[]" /></div></td>
    <td><div id="addbox2"><input type="text" name="prodnaam[]" /></div></td>
    <td><input name="zoek" type="submit" value="Zoek" /></td>
  </tr>
<?php
//maak de zoek knop als volgt:
?>
<input type="button" onclick="$('#hiddendiv').load('resultaat.php');" name="add" value="Add fields" />
<?php
//maak een bestand resultaat.php waarin alleen de php staat om je resultaten uit de database te halen en vervolgens de javascript om je resultaatbox met deze resultaten te vullen:

/* resultaat.php */

//hier je database code

$prodnummer = 'hier de resultaten voor prodnaam';
$prodnaam = 'hier de resultaten voor prodnaam';

//laatste regels van resultaat.php:
?>
<script>
$("#addbox1").html = '<?php echo $prodnummer;?>';
$("#addbox2").html = '<?php echo $prodnaam;?>';
</script>

Voor meer uitleg over de jquery javascript codes zie http://www.jquery.com
 
Barry127,

Nogmaals bedankt voor je snelle reactie, maar ik kan er niet aan uit wat je juist bedoeld. Kan je iets duidelijker zijn in je code?
 
Hallo Brecht,

ik zie net dat er een foutje in de jquery van mijn code staat, hier onder de gewijzigde versie met verdere details.

Ik maak voor het interactief laden van je resultaatveld gebruik van jquery. Dit is een javascript base die gratis te gebruiken is (zie de bovengenoemde website).

je maakt 2 pagina's. zoek.php en resultaat.php

In zoek.php komt je formulier en worden je resultaten interactief geladen. resultaat.php gebruik je op de achtergrond om de resultaten op te halen en interactief in zoek.php te laden.

Hier onder de 2 pagina's:

zoek.php
PHP:
<html>
<head>
<title>test</title>
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js"></script> <?php /* Jquery script laden, je kunt het script ook via de website downloaden en zelf op je server zetten */?>
<script type="text/javascript">
function addInput() {
var vrZoekterm = $('#zoekterm').val; <?php /*de waarde van je zoekveld in een var zetten */ ?>
$('#hiddendiv').load('resultaat.php?term=' + vrZoekterm); <?php /* resultaat.php kan met $_GET['term'] de zoekterm binnenhalen */
}
</script>
</head>
<body>
<div id="hiddendiv" style="display: none;"></div> <?php /* Een verborgen element waar we resultaat.php in gaan laden */
<form id="pricecheckform" name="pricecheckform" method="post" action="<?php echo $_SERVER['PHP_SELF'];?>">
<table width="75%"border="0">
  <tr>
    <td>Productnummer</td>
    <td>Productnaam</td>
  </tr>
  <tr> <?php /* let bij onderstaande velden op dat je ook id= gebruikt! */ ?>
    <td id="addbox1"><input type="text" name="prodnummer" id="prodnummer" /></td> 
    <td id="addbox2"><input type="text" name="prodnaam" id="prodnaam" /></td>
    <td><input name="zoek" type="text" id="zoekterm" name="zoekterm" /></td>
  </tr>
  <tr>
    <td></td>
  </tr>
</table>
</form>
<input type="button" onclick="addInput()" name="add" value="Add fields" /> <?php /* met deze knop het script addinput laden */?>
 
</body>
</html>

resultaat.php
PHP:
<?php
$term = htmlentities('$_GET['term']);

//hier kun je je database query uitvoeren met $term

$prodnummer = 'hier de resultaten voor prodnaam'; //zorg dat in deze variabelen je prodnummer komt te staan
$prodnaam = 'hier de resultaten voor prodnaam'; //zorg dat in deze variabelen je prodnaam komt te staan
 
//lmet onderstaande javascript zetten we de waarde in je textvelden.
?>
<script>
$("#prodnummer").val('<?php echo $prodnummer;?>)';
$("#prodnaam").val('<?php echo $prodnaam;?>)';
</script>
?>

Er kunnen typfouten in de code staan en ik heb niet alle controles op de variabelen uitgevoerd maar met het bovenstaande moet je het kunnen redden
 
Beste Barry127,

Er is nog het een en ander niet helemaal juist. Het script werkt niet zoals het moet.
Op de zoek.php pagina ben ik mijn zoekknop ook 'kwijtgeraakt'.
Hieronder de code die ik erbij heb geschreven zoals ik dacht dat het zou zijn. Misschien staat daar ook een fout in?

zoek.php

PHP:
<html>
<head>
<title>test</title>
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js"></script> <?php /* Jquery script laden, je kunt het script ook via de website downloaden en zelf op je server zetten */?>
<script type="text/javascript">
function addInput() {
var vrZoekterm = $('#zoekterm').val; <?php /*de waarde van je zoekveld in een var zetten */ ?>
$('#hiddendiv').load('resultaat.php?term=' + vrZoekterm); <?php /* resultaat.php kan met $_GET['term'] de zoekterm binnenhalen */ ?>
}
</script>
</head>


<body>
<div id="hiddendiv" style="display: none;"></div> <?php /* Een verborgen element waar we resultaat.php in gaan laden */ ?>
<form id="pricecheckform" name="pricecheckform" method="post" action="<?php echo $_SERVER['PHP_SELF'];?>">
<table width="75%"border="0">
  <tr>
    <td>Productnummer</td>
    <td>Productnaam</td>
  </tr>
  <tr> <?php /* let bij onderstaande velden op dat je ook id= gebruikt! */ ?>
    <td id="addbox1"><input type="text" name="prodnummer" id="prodnummer" /></td> 
    <td id="addbox2"><input type="text" name="prodnaam" id="prodnaam" /></td>
    <td><input name="zoek" type="text" id="zoekterm" name="zoekterm" /></td>
  </tr>
  <tr>
    <td></td>
  </tr>
</table>
</form>
<input type="button" onClick="addInput()" name="add" value="Add fields" /> <?php /* met deze knop het script addinput laden */?>
 
</body>
</html>


resultaat.php

PHP:
<?php
$term = htmlentities('$_GET['term']');
 
//hier kun je je database query uitvoeren met $term




	require ('config.php');
	
         $conn = mysql_connect($host,$user,$pass) or die (mysql_error());
         mysql_select_db("jobysan_werbonnen") or die (mysql_error());
       
		 $sql = 'SELECT * WHERE productnummer = "' . $term .'"';
		 $res = mysql_query($sql) or die (mysql_error());



while($row = mysql_fetch_assoc($res))
     		{ 

$prodnummer = "echo $row['productnummer'];"; //zorg dat in deze variabelen je prodnummer komt te staan
$prodnaam = "echo $row['productnaam'];"; //zorg dat in deze variabelen je prodnaam komt te staan
 
			}



//met onderstaande javascript zetten we de waarde in je textvelden.

?>


<script>
$("#prodnummer").val('<?php echo $prodnummer;?>)';
$("#prodnaam").val('<?php echo $prodnaam;?>)';
</script>
 
Hoi Brecht volgens mij zit hier je fout:

PHP:
 $sql = 'SELECT * WHERE productnummer = "' . $term .'"';

$term = 'een variabelen en geen nummer dus waarschijnlijk wil je de kolom productnaam gebruiken'; 

//er zit tevens een fout in je query, hieronder zoals ik hem zou schrijven:

$sql = 'SELECT * FROM `sql_tabel_naam` WHERE `productnaam` LIKE \'%' . $term . '%\'';

/*
Zet FROM `tabel_naam` in de Query zodat het uit de juiste tabel wordt geselecteerd.
Ik gebruik i.p.v. '='  'LIKE' Dan kan je ook de wildcard (%) gebruiken als je nu bijv. op 'emmer'  zoekt vindt de query ook de productnaam 'pedaalemmer'.
*/
 
Barry 127,

Zal ik straks even proberen. Maar waar is mijn zoekknop in zoek.php? Ik kan toch geen gegevens opzoeken zonder die submit knop? Of kan het ook op een andere manier?
 
Hieronder de aangepaste code voor zoek.php en resultaat.php, maar het werkt nog steeds niet.

* De zoekknop is nog steeds verdwenen op de zoek.php pagina
* Als je klikt op 'Add fields' op de zoek.php pagina zit alles geblokkeerd en er worden geen nieuwe regels toegevoegd.
* Zijn de $productnaam en $productnummer waarden juist op de resultaat.php pagina?


zoek.php

PHP:
<html>
<head>
<title>test</title>
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js"></script> <?php /* Jquery script laden, je kunt het script ook via de website downloaden en zelf op je server zetten */?>
<script type="text/javascript">
function addInput() {
var vrZoekterm = $('#zoekterm').val; <?php /*de waarde van je zoekveld in een var zetten */ ?>
$('#hiddendiv').load('resultaat.php?term=' + vrZoekterm); <?php /* resultaat.php kan met $_GET['term'] de zoekterm binnenhalen */ ?>
}
</script>
</head>
 
 
<body>
<div id="hiddendiv" style="display: none;"></div> <?php /* Een verborgen element waar we resultaat.php in gaan laden */ ?>
<form id="pricecheckform" name="pricecheckform" method="post" action="<?php echo $_SERVER['PHP_SELF'];?>">
<table width="75%"border="0">
  <tr>
    <td>Productnummer</td>
    <td>Productnaam</td>
  </tr>
  <tr> <?php /* let bij onderstaande velden op dat je ook id= gebruikt! */ ?>
    <td id="addbox1"><input type="text" name="prodnummer" id="prodnummer" /></td> 
    <td id="addbox2"><input type="text" name="prodnaam" id="prodnaam" /></td>
    <td><input name="zoek" type="text" id="zoekterm" name="zoekterm" /></td>
  </tr>
  <tr>
    <td></td>
  </tr>
</table>
</form>
<input type="button" onClick="addInput()" name="add" value="Add fields" /> <?php /* met deze knop het script addinput laden */?>
 
</body>
</html>

resultaat.php

PHP:
<?php
$term = $_GET['term'];
 
//hier kun je je database query uitvoeren met $term




	require ('config.php');
	
         $conn = mysql_connect($host,$user,$pass) or die (mysql_error());
         mysql_select_db("jobysan_werbonnen") or die (mysql_error());
       
		 $sql = 'SELECT * FROM werkbonnen WHERE productnummer LIKE \'%' . $term . '%\'';
		 $res = mysql_query($sql) or die (mysql_error());



while($row = mysql_fetch_assoc($res))
     		{ 

$prodnummer = "echo $row['productnummer'];"; //zorg dat in deze variabelen je prodnummer komt te staan
$prodnaam = "echo $row['productnaam'];"; //zorg dat in deze variabelen je prodnaam komt te staan
 
			}



//met onderstaande javascript zetten we de waarde in je textvelden.

?>


<script>
$("#prodnummer").val('<?php echo $prodnummer;?>)';
$("#prodnaam").val('<?php echo $prodnaam;?>)';
</script>
 
Laatst bewerkt:
onClick="addInput();"

ik let op de ; achter de haakjes dat was ik vergeten. resultaat.php wordt met javascript (AJAX) geladen daarom is er geen submit nodig. Je kan resultaat.php testen door in de browser naar resultaat.php?term=fietsband (of een andere term natuurlijk) te gaan.

Dan moet je alleen i.p.v. het javascript even echo $prodnummer; in het script zetten. Werkt resultaat.php dan gaan we verder kijken naar zoek.php. Laat het maar even weten.
 
Parse error: syntax error, unexpected T_ENCAPSED_AND_WHITESPACE, expecting T_STRING or T_VARIABLE or T_NUM_STRING in /home/jobysan/public_html/testen/input/resultaat.php on line 22


Dit is de foutmelding die ik krijg op resultaat.php. Ik test met resultaat.php?term=100 omdat die waarde in mijn database zit.
 
Maak van regel 22 eens
PHP:
$prodnummer = $row['productnummer'];
Ditzelfde, mutatis mutandis, voor regel 23.
 
Laatst bewerkt:
Met de aanpassing van supersnail werkt resultaat.php nu wel. Dus kunnen we doorgaan naar de volgende stap!
Nu kunnen we de file zoek.php misschien aanpassen?
 
Laatst bewerkt:
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan