Door
Michael Visser
op 29-09-2017 17:58
gewijzigd op 30-09-2017 11:33
6.578 views
Hallo allemaal,
ik ben bezig met een tutorial popup systeempje alleen vroeg ik me af hoe ik nu precies een extern scriptje kan inladen
<?php
if ($conn->connect_error) {
die("Connection failed: " . $conn->connect_error);
}
$sql="select Value from tabletest where uid='" . $uid. "' ";
$result = $conn->query($sql);
if ($result->num_rows > 0) {
$result=$result->fetch_assoc()["Value"];
}
print($result);
if($result==1)
{
echo "<script> loadModal()</script>";
}
?>
Het gaat om het gedeelte echo "<script> loadModal()</script>"; , dit komt in mijn index als iemand inlogt komt er een popup maar het externe scriptje heet popup.php hoe krijg ik die in de echo hierboven ? alvast bedankt
Ik raad aan om mysql_error() gebruiken. Die vertelt prima wat er fout is. Uiteraard raad ik aan om deze meldingen niet zomaar voor het publiek te tonen, dus een mooie functie zou wel handig zijn waarmee je met een configuratie-setting een debug-modus aanzet.
Eigenlijk raad ik zelfs aan om direct maar te beginnen naar de ombouw naar mysqli, want als je hosting overschakelt op PHP7, dan zal je script direct niet meer werken.
ik ben blij dat er iemand reageerd zoals jullie maar dit is niet het andwoord wat ik verwacht had , overschakelen naar php7 zal niet kunnen het is mijn eigen server , dus scripts blijven werken , dan maar geen popup krijg het niet werken en aangezien er geen correct antwoord gegeven kan worden kan ik niet verder helaas...
ik heb de code toegevoegd maar nog steeds zie ik niets net zoals net , in de bron zie ik wel dat hij popup.php inlaad maar er is niets zichtbaar code hierboven zie ik in de broncode
[size=xsmall]Toevoeging op 01/10/2017 21:47:01:[/size]
ik zie zeg maar een witte achtergrond met het script wat normaal inlaad na het inloggen
In je jquery.ready() functie deze php regel invoegen. afhankelijk van $showmodal true/false wordt de modal wel of niet getoond. Ik heb het getest met de html die je hierboven gaf.
normaal heb ik een image als background op de website en als ik dan in wil loggen voor de eerste keer zie ik dat er iets is verandert maar de popup komt niet te voorschijn ook met
Zie ik het niet , zou je mij anders jou code willen geven aangezien je het getest heb misschien houd nog iets anders het tegen maar dan weet ik wel 100% zeker dat die van jou werkt.
als ik mysqli wil gebruiken moet ik alles gaan ombouwen wat ik zeer zeker wil gaan doen maar heb nu niet de tijd om 400 scriptjes om te bouwen :)
Reden te meer om functies/methoden die met een database communiceren niet te hardcoden in code. Je doet er verstandig aan om op zijn minst een soort van wrapper(-class) te gebruiken om zo indirect met een databasetype te communiceren zodat als de functies/methoden die je gebruikt ooit veranderen (mysql --> mysqli) dat je dan enkel de implementatie van de wrapper(-class) hoeft te wijzigen, en niet 400 scripts door hoef te ploegen.
Ik zou hier eigenlijk vandaag nog mee beginnen, en ja, dat zul je dan dus wel eenmalig moeten doen. En tegelijkertijd zou je het ontwerp van je website/applicatie wellicht nog eens onder de loep kunnen nemen.
BTW als je een modal (een inline popup) gebruikt voor het geven van een boodschap over het ingelogd zijn van iemand zou je misschien het hele loginproces via AJAX-calls kunnen laten verlopen zodat de pagina nooit ververst hoeft te worden.
Of eens gaan nadenken over een andere oplossing. Op het moment dat je inlogt vindt er immers een toestandsovergang plaats (niet ingelogd --> wel ingelogd). Vaak verdient het dan de voorkeur om op een of andere manier een pagina-refresh uit te voeren. In welk geval je niet echt een (inline) popup nodig hebt. Ook zou je eigenlijk gebruik moeten maken van het POST/redirect/GET principe zodat alle stappen netjes gescheiden worden:
---GET (de loginpagina wordt opgevraagd)---
1. het formulier wordt verzonden naar een verwerkstap
---POST---
2. hier vindt de verwerking van het formulier plaats
is de login correct: log iemand in + extra acties (zoals ophogen teller), REDIRECT na afloop naar stap 3
is de login incorrect: REDIRECT naar stap 1 met foutboodschap
---GET---
ingeval stap 2 succesvol was, toon landingspagina voor ingelogd persoon
Zo zijn alle acties netjes apart gecompartimenteerd en voorkom je dus situaties waarin dubbelposts mogelijk zijn, wat mogelijk ongewenste gevolgen heeft voor het ophogen van een teller...