Hoe maak ik dit script sneller???

Status
Niet open voor verdere reacties.
Een groot verschil in functionaliteit zit er niet. Maar ik vind het er persoonlijk (En er waggelt er hier op HM nog eentje rond die het ook vind) netter uitzien als je functies ****** van variablen.

Verder moet je onthouden, alles wat je in de browser outgeput moet worden, moet je met echo, print of print_r doen. Anders zal je niks zien

edit: woot, schijt word gecensureerd? :confused:
 
Ow, das duidelijker...zal er proberen om te denken, maar verbeter mij alsjeblieft als ik weer eens een script post waar ik het niet doe...dan komt het er vanzelf wel in...

Nu geef ik mijn bovenkamer maar weer wat rust...:rolleyes:
de radertjes daarboven beginnen af te remmen...:D

Bedankt weer voor je hulp vandaag, en wellicht tot morgen ;)
 
Geplaatst door masterprut
Een groot verschil in functionaliteit zit er niet.
Uhm ... Op de manier waarop het net gebruikt werd écht wel :D
PHP:
echo "$_GET["iets"]";
En
PHP:
echo $_GET["iets"];
worden beide geaccepteerd door PHP (waar ik niet echt een voorstander van ben). Het verschil tussen deze twee is overzichtelijkheid. Variabelen hebben tenslotte hun eigen kleur binnenin PHP, wanneer je script foutmeldingen geeft moet je gaan zoeken waar de fout is. Dan is het fijn om wat kleurcodes te hebben, aan de hand van deze codes kun je vaak sneller het probleem vinden door een onregelmatigheid in de kleur. Echter, bij de eerste manier van echo-en krijgt de variabele geen speciale kleur.
Wat masterprut zegt is dan ook fout, aangezien hitme007 geen van bovenstaande codes gebruikte. Hij gebruikte
PHP:
echo " . $_GET["table"] . " ;
Met een ' of " begin en sluit je in PHP een string. Begin je deze string met een ", dan controleert PHP of er binnen die string ook variabelen voorkomen. Vandaar dat
PHP:
echo  "$blaat";
niet '$blaat' als output print, hij print de waarde van de variabele blaat (er even vanuit gaande dat deze bestaat).
Begin je de string met een ', zoals dit:
PHP:
echo '$blaat';
Dan krijg je wel letterlijk '$blaat' als output :)
Máár, PHP heeft een teken geïmplementeerd die ervoor zorgt dat je strings kunt scheiden van variabelen (en functies). Hierdoor krijgen ze ook een mooi uniek kleurtje :p
Dit teken is de punt '.'.
Wat jij in jouw geposte script doet, is een " openen, dan wil je overgaan op variabelen / functies, waarop je vervolgens de string wil sluiten. Zo werkt dat dus niet :)
Hoe jouw scriptje wel zou werken:
PHP:
echo "" . $_GET["table"] . "" ;
Hierbij zijn beide "" overbodig, je opent een string en sluit hem meteen daarna weer, laat ze dan gewoon weg ...
PHP:
echo $_GET["table"];
Je kan dit een nogal vaag verhaal vinden, het is ook nogal vaag uitleggen :o:D

@masterprut: Er zijn wel meer functies waarmee je output kunt printen, jij kent die alleen niet ;)
printf(), sprintf(), echo, print, print_r(), phpinfo(), etc :p

Succes :thumb:
 
Je kan dit een nogal vaag verhaal vinden, het is ook nogal vaag uitleggen :o:D

Prima, van dit soort verhalen leer ik juist een hoop :D

thx m8

Maarrrr, ik begrijp uit jou verhaal dat dit:
PHP:
echo $_GET["test"];
en dit
PHP:
echo $_GET['test'];
en dit
PHP:
echo $_GET[test];
dus niet hetzelfde is, maar bij mij doet het t allebij :confused:

(FF) hebben jullie een goede phpeditor voor mij, ik doe het nu nog met notepad...
 
Laatst bewerkt:
thx...

volgende probleem:

line 53 klopt niet, ik heb al verschillende mogelijkheden geprobeerd maar kom er niet uit....

help mij eens een handje :)

PHP:
<?
@session_start();
if($_COOKIE["adminin"] != "Yes" && $_SESSION["adminin"] != "Yes"){
header("Location: login.php");
exit();
}
?>

<?

require("config.php");

$query = mysql_query("SELECT * FROM " . $_GET['table'] . " WHERE id='" . $_GET['id'] . "'");
if(!$submit){

while($object = mysql_fetch_object($query)){
?>
<form method="$_POST" action="<? echo $_SERVER['REQUEST_URI'] ?>">
  <input type="hidden" name="submit" value="1">
  Naam:<br>
  <input type="text" name="$_POST['naam']" size="30" value="<? echo $object->naam ?>"><br>
  Adres:<br>
  <input type="text" name="$_POST['adres']" size="30" value="<? echo $object->adres ?>"><br>
  Postcode:<br>
  <input type="text" name="$_POST['postcode']" size="30" value="<? echo $object->postcode ?>"><br>
  Woonplaats:<br>
  <input type="text" name="$_POST['woonplaats']" size="30" value="<? echo $object->woonplaats ?>"><br>
  Telefoon:<br>
  <input type="text" name="$_POST['telefoon']" size="30" value="<? echo $object->telefoon ?>"><br>
  E-mail adres:<br>
  <input type="text" name="$_POST['email']" size="30" value="<? echo $object->email ?>"><br><br>
<?
if($object->dirigent=="JA"){
$dirigenta = " selected";
}
else{
$dirigentb = " selected";
}
?>
  Dirigent:<br>
  <select size="1" name="$_POST['dirigent']">
  <option value="JA"<? echo $dirigenta ?>>JA</option>
  <option value="NEE"<? echo $dirigentb ?>>NEE</option>
  </select><br><br>
  <input type="submit" value="Opslaan"> <input type="reset" value="Reset"></p>
</form>
<?
}
}

else{

mysql_query("UPDATE " . $_GET['table'] . " SET naam="$_POST['naam']", adres="$_POST['adres']", postcode="$_POST['postcode']", woonplaats="$_POST['woonplaats']", telefoon="$_POST['telefoon']", email="$_POST['email']", dirigent="$_POST['dirigent']" WHERE id='" . $_GET['id'] . "'") or die(mysql_error());

echo " succesvol geupdate <br><br> <a href=\"./index.php?table=$table\">Terug naar Index</a> ";
}

?>
 
- Waarom open je php, sluit je en open je het meteen weer.
- Hoe wilt je PHP variablen weergeven in HTML als PHP niet geactiveerd is.
- En bij de query op regel 53 heb je de variablen nu van de functie gescheiden, maar mis je de . ;)
- En op verschillende plekken heb je in HTML, de PHP waardes. Bv
PHP:
<select size="1" name="$_POST['dirigent']">

PHP is gesloten. De naa van dat element is dood gewoon $_POST['dirigent']. Geen waarde word er gegeven.

En meer van dat soort kleine foutjes zitten er. Je kunt dat verhelpen door bij de variablen die je in PHP wilt, tussen de PHP tags te zetten. Dan word PHP geopent voor die ene variable en meteen weer gesloten.

Succes :thumb:
 
Als ik het volgende gedeelte tussen de <? ?> tags wil hebben...

wat doe ik dan fout?

PHP:
<?
<form method=\"$_POST\" action=\"echo $_SERVER['REQUEST_URI']\">
  <input type=\"hidden\" name=\"submit\" value=\"1\">
  Naam:<br>
  <input type=\"text\" name=\"$_POST['naam']\" size=\"30\" value=\"echo $object->naam\"><br>
  Adres:<br>
  <input type=\"text\" name=\"$_POST['adres']\" size=\"30\" value=\"echo $object->adres\"><br>
  Postcode:<br>
  <input type=\"text\" name=\"$_POST['postcode']\" size=\"30\" value=\"echo $object->postcode\"><br>
  Woonplaats:<br>
  <input type=\"text\" name=\"$_POST['woonplaats']\" size=\"30\" value=\"echo $object->woonplaats\"><br>
  Telefoon:<br>
  <input type=\"text\" name=\"$_POST['telefoon']\" size=\"30\" value=\"echo $object->telefoon\"><br>
  E-mail adres:<br>
  <input type=\"text\" name=\"$_POST['email']\" size=\"30\" value=\"echo $object->email\"><br><br>
?>

Heb maar weer een nieuw topic geopend anders wordt het zo onoverzichtelijk, he... graag replyen in het nieuwe topic...
:thumb:
 
Laatst bewerkt:
Geplaatst door hitme007
Maarrrr, ik begrijp uit jou verhaal dat dit:
PHP:
echo $_GET["test"];

en dit
PHP:
echo $_GET['test'];

en dit
PHP:
echo $_GET[test];

dus niet hetzelfde is, maar bij mij doet het t allebij :confused:
echo $_GET["test $var test"], binnenin die "" zoekt de PHP parser of er variabelen instaan, zo ja, dan zal hij die proberen te parsen.
echo $_GET['test $var test'] zoekt niet naar variabelen binnenin die '', en is daarom ook ietsjes sneller dan met "".
echo $_GET[test] is een slordige en foute manier van scripten, die ' en " zijn niet voor niets uitgevonden. Waarom PHP überhaubt toestaat of zonder ' of " sleutels op te roepen snap ik ook niet :confused:

Als voor je laatst geposte script, die is niet al te best :p
Masterprut's commentaar is nog maar 't begin van de problemen, je script is nu hartstikke onveilig.

Allereerst die cookies sessies.
Allereerst check je niet of $_COOKIE["adminin"] bestaat, hetzelfde met $_SESSION["adminin"]. Gebruik isset().
Verder, je geeft $_COOKIE["adminin"] en $_SESSION["adminin"] de waarde "Yes" als je ingelogd bent. Héél onveilig. Wat je beter kan doen is het adminwachtwoord in de cookie en sessie noteren, en vergelijken of deze waarden kloppen.
Daarna gebruik je header(), zet voor deze header() ff een @, als men gaat rotzooien enzo kun je een irritante error krijgen (headers already sent blablabla). Een @ verhelpt dit :)

Verder:
  • Gebruik de functie slashes() die ik in mijn vorige posts definieerde,
  • Gebruik niet if(!$submit), gebruik if(isset($_POST["waarde"]) == TRUE) voor elk invoerveld.
  • Je HTML is ook nogal verkeerd ... :D
    Code:
    <form method="$_POST">
    Maak daar maak gerust
    Code:
    <form method="POST">
    van, PHP veranderd dit zelf wel in $_POST ;)
  • Hetzelfde voor je invoervelden, die hoef je ook niet $_POST["naam"] te noemen, als je ze gewoon de naam 'naam' of 'email' geeft, voegt PHP ze automatisch aan $_GET of $_POST toe, afhankelijk van de method die je opgegeven hebt :)
  • Gebruik erroropvanging bij je query's
  • Je gebruikt zowel $dirigenta als $dirigentb, terwijl je in de if() en else óf $dirigenta óf $dirigentb aanmaakt, niet beide. Op een goed geconfigureerde server leidt dit tot een foutmelding.

Zet error_reporting(E_ALL); bovenaan al je scripts, vooral in de leer, ontwikkel en testfase !!!
Of verander je php.ini instellingen.
Dan zie je veeeeel sneller wat er fout gaat ;)

Succes :thumb:
 
ok, hier de geupdate versie:

PHP:
<?

error_reporting(E_ALL); 

@session_start();
if($_COOKIE["adminin"] != "Yes" && $_SESSION["adminin"] != "Yes"){
@header("Location: login.php");
exit();
}

require("config.php");

function slashes($tekst)
{
  if(get_magic_quotes_gpc() == FALSE)
  {
  $tekst = addslashes($tekst);
  }
return $tekst;
}

if(isset($_GET["table"]) == FALSE)
{
die("Geen tabel opgegeven !");
}


$query = mysql_query("SELECT * FROM " . slashes($_GET['table']) . " WHERE id='" . slashes($_GET['id']) . "'");
if(!$submit){

while($object = mysql_fetch_object($query)){
?>
<form method="POST" action="<? echo $_SERVER['REQUEST_URI'] ?>">
  <input type="hidden" name="submit" value="1">
  Naam:<br>
  <input type="text" name="naam" size="30" value="<? echo $object->naam ?>"><br>
  Adres:<br>
  <input type="text" name="adres" size="30" value="<? echo $object->adres ?>"><br>
  Postcode:<br>
  <input type="text" name="postcode" size="30" value="<? echo $object->postcode ?>"><br>
  Woonplaats:<br>
  <input type="text" name="woonplaats" size="30" value="<? echo $object->woonplaats ?>"><br>
  Telefoon:<br>
  <input type="text" name="telefoon" size="30" value="<? echo $object->telefoon ?>"><br>
  E-mail adres:<br>
  <input type="text" name="email" size="30" value="<? echo $object->email ?>"><br><br>
<?
if($object->dirigent=="JA"){
$dirigenta = " selected";
$dirigentb = "";
}
else{
$dirigenta = "";
$dirigentb = " selected";
}
?>
  Dirigent:<br>
  <select size="1" name="dirigent">
  <option value="JA"<? echo $dirigenta ?>>JA</option>
  <option value="NEE"<? echo $dirigentb ?>>NEE</option>
  </select><br><br>
  <input type="submit" value="Opslaan"> <input type="reset" value="Reset"></p>
</form>
<?
}
}

else{

mysql_query("UPDATE " . slashes($_GET['table']) . " SET naam='" . $_POST['naam'] . "', adres='" . $_POST['adres'] . "', postcode = '" . $_POST['postcode'] . "', woonplaats = '" . $_POST['woonplaats'] . "', telefoon = '" . $_POST['telefoon'] . "', email = '" . $_POST['email'] . "', dirigent = '" . $_POST['dirigent'] . "' WHERE id='" . slashes($_GET['id']) . "'") or die(mysql_error());

echo " succesvol geupdate <br><br> <a href=\"index.php?table=" . $_GET['table'] . "\">Terug naar Index</a> ";
}

?>

geeft alleen nog de volgende melding:
Notice: Undefined variable: submit in /var/www/knkprivate/@test/admin/wijzig.php on line 29

overigens doet hij het wel prima...

Nu wil ik nog die isset functie gebruiken, maar kun je uitleggen wat deze doet en hoe ik em moet toepassen?
 
Welkom in de wereld van Notices :p
isset()
isset -- Controleer of een variabele bestaat
PHP:
$var = "blaat";
  if(isset($var) == TRUE)
  {
  echo "\$var bestaat";
  }

$var = array("test" => "testjes","nog een test" => "verzin maar iets leuks");
  if(isset($var["nog een test"]) == TRUE)
  {
  echo "De sleutel 'nog een test' bestaat in de array van \$var";
  }
Succes :thumb:
 
thx again...

als volgt aangepast:

geen fouten en notices meer :) :

nog aanmerkingen???

PHP:
<?

error_reporting(E_ALL); 

require("config.php");

@session_start();
if(isset($_COOKIE["adminin"]) != "Yes" && isset($_SESSION["adminin"]) != "Yes"){
@header("Location: login.php");
exit();
}

function slashes($tekst)
{
  if(get_magic_quotes_gpc() == FALSE)
  {
  $tekst = addslashes($tekst);
  }
return $tekst;
}

if(isset($_GET["table"]) == FALSE)
{
die("Geen tabel opgegeven !");
}


$query = mysql_query("SELECT * FROM " . slashes($_GET['table']) . " WHERE id='" . slashes($_GET['id']) . "'");
if(isset($_POST['submit']) == FALSE){

while($object = mysql_fetch_object($query)){
?>
<form method="POST" action="<? echo $_SERVER['REQUEST_URI'] ?>">
  <input type="hidden" name="submit" value="1">
  Naam:<br>
  <input type="text" name="naam" size="30" value="<? echo $object->naam ?>"><br>
  Adres:<br>
  <input type="text" name="adres" size="30" value="<? echo $object->adres ?>"><br>
  Postcode:<br>
  <input type="text" name="postcode" size="30" value="<? echo $object->postcode ?>"><br>
  Woonplaats:<br>
  <input type="text" name="woonplaats" size="30" value="<? echo $object->woonplaats ?>"><br>
  Telefoon:<br>
  <input type="text" name="telefoon" size="30" value="<? echo $object->telefoon ?>"><br>
  E-mail adres:<br>
  <input type="text" name="email" size="30" value="<? echo $object->email ?>"><br><br>
<?
if($object->dirigent=="JA"){
$dirigenta = " selected";
$dirigentb = "";
}
else{
$dirigenta = "";
$dirigentb = " selected";
}
?>
  Dirigent:<br>
  <select size="1" name="dirigent">
  <option value="JA"<? echo $dirigenta ?>>JA</option>
  <option value="NEE"<? echo $dirigentb ?>>NEE</option>
  </select><br><br>
  <input type="submit" value="Opslaan"> <input type="reset" value="Reset"></p>
</form>
<?
}
}

else{

mysql_query("UPDATE " . slashes($_GET['table']) . " SET naam='" . $_POST['naam'] . "', adres='" . $_POST['adres'] . "', postcode = '" . $_POST['postcode'] . "', woonplaats = '" . $_POST['woonplaats'] . "', telefoon = '" . $_POST['telefoon'] . "', email = '" . $_POST['email'] . "', dirigent = '" . $_POST['dirigent'] . "' WHERE id='" . slashes($_GET['id']) . "'") or die(mysql_error());

echo " succesvol geupdate <br><br> <a href=\"index.php?table=" . $_GET['table'] . "\">Terug naar Index</a> ";
}

?>
 
Ziet er goed uit :thumb:
Nou ok, eentje dan :p

PHP:
if(isset($_COOKIE["adminin"]) != "Yes" && isset($_SESSION["adminin"]) != "Yes"){

Er hoeft er maar een niet te ontbreken, en je bent nog steeds ingelogd. Als je && vervangt door ||. && betekent EN (logisch :D) en || betkent OF

:thumb:
 
Als ik dat doe werkt mijn script niet meer :(

zal wel in mijn loginscript zitten....kom ik later nog wel op terug...nu even de rest van de scripts aanpassen

Voor verbeteren van login script maak ik wel een nieuwe topic...

thx for now :thumb:
 
Laatst bewerkt:
Masterprut wat maak je me nou :8-0:
Je zou beter moeten weten.
PHP:
if(isset($_COOKIE["adminin"]) != "Yes" && isset($_SESSION["adminin"]) != "Yes"){
Je checkt door of isset($_COOKIE["adminin"]) niet de waarde "Yes" teruggeeft. Zou je de functie van isset erbij pakken:
bool isset ( mixed var [, mixed var [, ...]])
Geeft TRUE terug als var bestaat, en anders FALSE.
Geeft dus TRUE of FALSE terug. Als jij dan gaat lopen checken of dit niet gelijk is aan "Yes", dan klopt dat dus. isset() geeft nooit de waarde "Yes" terug, waardoor hij altijd zal uitvoeren wat er na deze { komt. Als het goed is zal hij je dan ook constant naar login.php redirecten :)
Dus een nieuw topic hoeft nog niet, fix eerst deze maar :p

Succes :thumb:
 
Raar dattie het wel doet ... Zoals ik je code hier bekijk hoort hij 't dus absoluut niet moeten doen :)
Magoed, zolang 't maar werkt he ;)
 
ALARM< TOTAL BLACKOUT :p

ok, help me eens een handje...kom er even niet meer uit :8-0:

ik heb dit(???):

PHP:
@session_start();
if(isset($_COOKIE["adminin"]) == FALSE && isset($_SESSION["adminin"]) == FALSE){
@header("Location: login.php");
exit();
}

if(isset($_COOKIE["adminin"]) == TRUE || isset($_SESSION["adminin"]) == TRUE){
	if($_COOKIE["adminin"] == "Yes" || $_SESSION["adminin"] == "Yes"){
	}
}

function slashes($tekst)
{
  if(get_magic_quotes_gpc() == FALSE)
  {
  $tek
 
PHP:
@session_start();
if(isset($_COOKIE["adminin"]) == FALSE && isset($_SESSION["adminin"]) == FALSE){
@header("Location: login.php");
exit();
}

if(isset($_COOKIE["adminin"]) == TRUE || isset($_SESSION["adminin"]) == TRUE){
}

Op deze manier doet hij het wel, maar nu moet ie natuurlijk nog controleren of de waarde van adminin gelijk is aan "Yes"

... maar dat wil mij niet echt lukken...geef eens een hint :D
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan