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;
Ik ben hier vandaag mee aan de slag geweest en heb nu dit als resultaat:
Helaas werkt het de popup nog niet.
Als ik dit

 style="display: none"

Bij de resultaten weghaal dan geeft hij het script wel netjes weer op de pagina.
Dus verwacht dat het hierin moet zitten, maar kom er niet uit waar ik dat zou moeten terug vinden.
Wellicht roep ik een verkeerde externe .css of javascript op.

F12 in mijn browser geeft geen foutmelding aan.

externe javascript

<link rel="stylesheet" href="//code.jquery.com/ui/1.10.4/themes/smoothness/jquery-ui.css">
<script src="//code.jquery.com/jquery-1.10.2.js"></script>
<script src="//code.jquery.com/ui/1.10.4/jquery-ui.js"></script>


javascript

$("#dialog").dialog({

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

$("#select-button").click(function (e) {
    e.preventDefault();
    $("#dialog").dialog("open");
});


Resultaat

<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>	
<div id="dialog" title="Resultaten selecteren"  style="display: none">
Er zijn 18 producten gevonden.<br/>
			resultaten<br/>
				</div>


J C op 09/06/2014 17:11:44

Als ik dit

 style="display: none"

Bij de resultaten weghaal dan geeft hij het script wel netjes weer op de pagina.


None => betekent geen.
Dus dan is het niet te zien.
Logisch toch.
Maar dan vraag ik me af waarom harry hogeveen het in eerste instantie er wel in heeft gezet. (zie een aantal posts eerder).
Als ik die regel weghaal, dan werkt de popup nog steeds niet, alles wordt dan wel gewoon in het document weergegeven.
Of je zet het javascript gedeelte na de div, of zoals in de voorbeelden binnen $(document).ready()
Dank je wel, daarmee is het gelukt, de popup wordt laten zien.
Ik zit nog wel nu met een ander probleem.
De eerste keer dat ik op zoek druk geeft hij aan dat er niets is opgegeven, als ik dan nog een keer druk, werkt het wel goed.

Toevoeging op 09/06/2014 22:03:21:


$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>";



    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';
		}
		
	$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();
  $( "#dialog" ).dialog( "open" );

	});});
	</script>';
	$main .= $resultaten;
	$statement->close();
	$main .='</div>';
Je zal dan wel het php script via ajax moeten aanroepen:
[code lang="js"]
$("#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');
});
)};
[/code]

ok bedankt, is die url hetzelfde als de pagina waar het script op staat?

Ik vind het javascript nog een moeilijk item.
Het werkt na deze toeviging niet meer.


$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: "producten.php",
				data: $("#form").serialize(),
				type: "POST",
				dataType: "html"
			})
			.done(function(html) {
					$("#dialog").html(html);
					$("#dialog").dialog("open");
			)};
		)};
	});
	</script>';
	$main .= $resultaten;
	$statement->close();
	$main .='</div>';
Juist niet, je roept hiermee een script aan die je wilt laten draaien als men op de #select-button drukt.
Maar alles staat op deze pagina.

Dit is het hele script:


<?PHP

include_once('./includes/getkenmerk.php');
$kenmerk = $list['bk_boekingen_kenmerk'];
if($_GET['pagina']=='bw-boeking')
{

}
elseif($_GET['pagina']=='nw-boeking')
{

}

$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();
		
	// 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';
		}
		
	$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: "producten.php",
				data: $("#form").serialize(),
				type: "POST",
				dataType: "html"
			})
			.done(function(html) {
					$("#dialog").html(html);
					$("#dialog").dialog("open");
			)};
		)};
	});
	</script>';
	$main .= $resultaten;
	$statement->close();
	$main .='</div>';
	}
?>
Het stukje tussen regel 74 en regel 126 zet je dan in een apart script en dan echo je $resultaat.
Anders heeft heel die dialog geen zin.

Reageren