J
J C
09-06-2014 17:11
gewijzigd op 09-06-2014 17:23
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>
Link gekopieerd
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.
Link gekopieerd
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.
Link gekopieerd
Of je zet het javascript gedeelte na de div, of zoals in de voorbeelden binnen $(document).ready()
Link gekopieerd
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&do=producten&kenmerk='.$kenmerk.'&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>';
Link gekopieerd
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]
Link gekopieerd
J
J C
09-06-2014 22:30
gewijzigd op 09-06-2014 22:34
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>';
Link gekopieerd
Juist niet, je roept hiermee een script aan die je wilt laten draaien als men op de #select-button drukt.
Link gekopieerd
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&do=producten&kenmerk='.$kenmerk.'&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>';
}
?>
Link gekopieerd
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.
Link gekopieerd