Hallo,

Ik wil de resultaten van een query weergeven in een popup.
Vanwege het script kan dit denk ik niet via een <a href>

Dit is het script wat ik tot nu toe heb.
Ik hoop dat iemand mij kan helpen met een script.

  $main .= "
    Hier kun je de producten toevoegen.<br/> 

    <form action='' id='new_message' method='post'>
		<span class='formInput'>zoek:</span>
		<input type='text' name='zoekproduct' />
		<input id='popup' type='submit' name='searchBtn' value='zoek!' /></p>
    </form>"; 


			  // Als een zoekwoord wordt ingegeven:
    if(isset($_POST['searchBtn']))
	{
// Zoekfunctie:
    $statement = $db->prepare("
    SELECT 
		producten.productlink,
		prod_omschrijving.producttitel
    FROM
		producten
	INNER JOIN
		prod_omschrijving 
	ON
		producten.idproduct=prod_omschrijving.idproduct
    WHERE
		producten.productlink LIKE '%?%'
	OR
		prod_omschrijving.producttitel like '%?%'
    ");
	$statement->execute(array($_POST['zoekproduct'], $_POST['zoekproduct']));

			if (mysql_num_rows($lijstsql)>1)
			{
			$resultaten .= 'Er zijn '.mysql_num_rows($lijstsql).' producten gevonden.';
				while ($result = $statement->fetchObject())
				{
				$resultaten.= $result->producttitel;
				$resultaten.='<br/>';
				}
			}
			else
			{
			$resultaten	.='Er zijn geen resultaten gevonden';
			}
		
	}
echo $resultaten;
Maar als je regel 74 weggehaald, dan voert hij die popupp toch ook uit als er nog niet op zoeken is gedrukt?

Dit wordt hem dan volgens mij, in deze opzet werkt hij nog niet.


<?php
$main .="
<form action='' method='post'>
		<span class='formInput'>zoek:</span>
		<input type='text' name='zoekproduct' id='zoekproduct'/>
		<input id='select-button' type='submit' name='searchBtn' value='zoek!' />
    </form>";
	
$qry ="
		SELECT
			bk_producten.product_id,
			bk_producten.aantal,
			producten.productlink
		FROM
			jcslnl_admin.bk_producten
		INNER JOIN
			jcslnl_webshop.producten 
		ON
			bk_producten.product_id=producten.idproduct
		WHERE
			boeking_id		= ?
	";
	
	$statement = $connection->prepare($qry);
	$statement->error;
	$statement->bind_param('s', $kenmerk);
	$statement->execute();
	$result = $statement->get_result();

		if(($result->num_rows)>=1)
		{
			while ($row = $result->fetch_assoc())
			{
			$main .= $row['productlink'].'<br/>';
			}
		}
	$statement->close();
		

	$main .='   
	<div id="dialog" title="Resultaten selecteren" style="display: none">
	<script type="text/javascript">
	$(document).ready(function() {
		$("#dialog").dialog({

			autoOpen: false,
			show: {
				effect: "blind",
				duration: 1000
			},
			hide: {
				effect: "blind",
				duration: 1000
			}
		});

		$("#select-button").click(function(e) {
			e.preventDefault();
			$.ajax({
				url: "search.php",
				data: $("#form").serialize(),
				type: "POST",
				dataType: "html"
			})
			.done(function(html) {
					$("#dialog").html(html);
					$("#dialog").dialog("open");
			)};
		)};
	});
	</script>';
	
	$main .='</div>';
	
?>


search.php

<?php
	// Als een zoekwoord wordt ingegeven:
    if(isset($_POST['searchBtn']))
	{
	// Zoekfunctie:
	$statement = $connectionwebshop->prepare("
	SELECT 
		producten.idproduct,
		producten.productlink,
		prod_omschrijving.producttitel
	FROM
		producten
	INNER JOIN
		prod_omschrijving 
	ON
		producten.idproduct=prod_omschrijving.idproduct
	INNER JOIN
		prod_categorie
	ON
		producten.idproduct=prod_categorie.idproduct
	WHERE
		(producten.productlink LIKE ?
	OR
		prod_omschrijving.producttitel like ?
	OR
		producten.productcode like ?)
	AND
		prod_categorie.idcategorieen != 8001
	GROUP BY
		idproduct
	ORDER BY
		prod_omschrijving.producttitel
	");
	$statement->error;
	$zoekproductresult ='%'.$_POST['zoekproduct'].'%';
	
	$statement->bind_param('sss', $zoekproductresult, $zoekproductresult, $zoekproductresult);
	$statement->execute();
	$result = $statement->get_result();

		if(($result->num_rows)>=1)
		{
		$resultaten = 'Er zijn '.($result->num_rows).' producten gevonden.<br/>
		';
			while ($row = $result->fetch_assoc())
			{
			$resultaten.= '<a href="?pagina=bw-boeking&amp;do=producten&amp;kenmerk='.$kenmerk.'&amp;addproduct='.$row['idproduct'].'">'.$row['producttitel'].'</a>';
			$resultaten.='<br/>
			';
			}
		}
		else
		{
		$resultaten	='Er zijn geen resultaten gevonden';
		}
$statement->close();
	}
	echo $resultaten;
	?>
Nee hoor. $("#iets").click() maakt een eventListener aan voor als er op een knop met id iets geklikt wordt
OK logisch eigenlijk.

Enig idee wat ik nu nog fout doe?

search.php staat in dezelfde map als producten.php (Het hoofdbestand)
Zolang jij niet vertelt wat er fout gaat, kan ik geen idee hebben ;-)

Even tussendoor een ander advies:
Scheid php en html, dus niet alle html en javascript door php laten echoën.
Hji doet niets als ik op zoek druk.
f12 geeft ook geen foutmeldingen

Toch wel Syntach error:

 $("#select-button").click(function(e) {
e.preventDefault();
$.ajax({
url: "search.php",
data: $("#form").serialize(),
type: "POST",
dataType: "html"
})
.done(function(html) {
$("#dialog").html(html);
$("#dialog").dialog("open");
)}; 

moet de laatste )} niets andersom?

Ik heb het veranderd foutmelding is weg, maar het script werkt nog niet.

Ik hou dit over:

<script type="text/javascript">
	$(document).ready(function() {
		$("#dialog").dialog({

			autoOpen: false,
			show: {
				effect: "blind",
				duration: 1000
			},
			hide: {
				effect: "blind",
				duration: 1000
			}
		});

		$("#select-button").click(function(e) {
			e.preventDefault();
			$.ajax({
				url: "search.php",
				data: $("#form").serialize(),
				type: "POST",
				dataType: "html"
			})
			.done(function(html) {
					$("#dialog").html(html);
					$("#dialog").dialog("open");
			});
		});
	});
	</script>';
Wat werkt er dan nog niet? Wordt de dialoog zichtbaar zonder dat er iets in komt te staan? Dan zijn de gegevens waarschijnlijk niet goed opgehaald door ajax.
In ieder geval moet het form een id hebben, anders werkt het serializen niet en wordt er dus een lege post verstuurt.

Ik heb ook nog een callback toegevoegd aan mijn code van gisteren voor het geval er een error respons komt.
Sorry voor de late reactie, was erg druk met werk.

Wat voor id zou ik moeten meegeven?

Ik heb nu dit:

Hoofdpagina:

<?PHP

include_once('./includes/getkenmerk.php');
$kenmerk = $list['bk_boekingen_kenmerk'];

$maintitel ='Producten '.$list['bk_boekingen_naam'].' - '.$kenmerk;
  $main .= '
    Hier kun je de producten toevoegen.<br/> 
';
if(isset($_GET['addproduct']))
	{
	$statement = $connection->prepare("
		INSERT INTO
			bk_producten
		SET
			boeking_id		= ?,
			product_id		= ?,
			aantal			= '1'
	");
	$statement->error;
	$statement->bind_param('ss', $kenmerk, $_GET['addproduct']);
	$statement->execute();
	$statement->close();
	
	header("Location: ?pagina=bw-boeking&do=producten&kenmerk=".$kenmerk);
	}

$main .="
<form action='' method='post'>
		<span class='formInput'>zoek:</span>
		<input type='text' name='zoekproduct' id='zoekproduct'/>
		<input id='select-button' type='submit' name='searchBtn' value='zoek!' />
    </form>";
	
$qry ="
		SELECT
			bk_producten.product_id,
			bk_producten.aantal,
			producten.productlink
		FROM
			jcslnl_admin.bk_producten
		INNER JOIN
			jcslnl_webshop.producten 
		ON
			bk_producten.product_id=producten.idproduct
		WHERE
			boeking_id		= ?
	";
	
	$statement = $connection->prepare($qry);
	$statement->error;
	$statement->bind_param('s', $kenmerk);
	$statement->execute();
	$result = $statement->get_result();

		if(($result->num_rows)>=1)
		{
			while ($row = $result->fetch_assoc())
			{
			$main .= $row['productlink'].'<br/>';
			}
		}
	$statement->close();
		

	$main .='   
	<div id="dialog" title="Resultaten selecteren" style="display: none">
	<script type="text/javascript">
	$(document).ready(function() {
		$("#dialog").dialog({

			autoOpen: false,
			show: {
				effect: "blind",
				duration: 1000
			},
			hide: {
				effect: "blind",
				duration: 1000
			}
		});

		$("#select-button").click(function(e) {
			e.preventDefault();
			$.ajax({
				url: "search.php",
				data: $("#form").serialize(),
				type: "POST",
				dataType: "html"
			})
			.done(function(html) {
					$("#dialog").html(html);
					$("#dialog").dialog("open");
			});
			.fail(function(){
            alert("failed");
			});
		});
	});
	</script>';
	
	$main .='</div>';
	
?>


search.php (in dezelfde map als bovenstaand script)

<?php
	// Als een zoekwoord wordt ingegeven:
    if(isset($_POST['searchBtn']))
	{
	// Zoekfunctie:
	$statement = $connectionwebshop->prepare("
	SELECT 
		producten.idproduct,
		producten.productlink,
		prod_omschrijving.producttitel
	FROM
		producten
	INNER JOIN
		prod_omschrijving 
	ON
		producten.idproduct=prod_omschrijving.idproduct
	INNER JOIN
		prod_categorie
	ON
		producten.idproduct=prod_categorie.idproduct
	WHERE
		(producten.productlink LIKE ?
	OR
		prod_omschrijving.producttitel like ?
	OR
		producten.productcode like ?)
	AND
		prod_categorie.idcategorieen != 8001
	GROUP BY
		idproduct
	ORDER BY
		prod_omschrijving.producttitel
	");
	$statement->error;
	$zoekproductresult ='%'.$_POST['zoekproduct'].'%';
	
	$statement->bind_param('sss', $zoekproductresult, $zoekproductresult, $zoekproductresult);
	$statement->execute();
	$result = $statement->get_result();

		if(($result->num_rows)>=1)
		{
		$resultaten = 'Er zijn '.($result->num_rows).' producten gevonden.<br/>
		';
			while ($row = $result->fetch_assoc())
			{
			$resultaten.= '<a href="?pagina=bw-boeking&amp;do=producten&amp;kenmerk='.$kenmerk.'&amp;addproduct='.$row['idproduct'].'">'.$row['producttitel'].'</a>';
			$resultaten.='<br/>
			';
			}
		}
		else
		{
		$resultaten	='Er zijn geen resultaten gevonden';
		}
	$statement->close();
	}
	
	echo $resultaten;
	?>
even een subtiele kick geven.
Ger van Steenderen op 10/06/2014 11:52:31

In ieder geval moet het form een id hebben, anders werkt het serializen niet en wordt er dus een lege post verstuurt.


Reageren