[PHP] $PHP_SELF verwerkt niet goed?

Pagina: 1
Acties:

  • Renegade
  • Registratie: December 2000
  • Laatst online: 14-10-2020
Ik ben bezig met een simpele test, de code die ik gebruik is als volgt:
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
<?
include "db.inc";
connectie();


print("De vraag was&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; : $vraag<BR><BR>");
print("Antwoord A was: $antwoord_a<BR>");
print("Antwoord B was: $antwoord_b<BR>");
print("Antwoord C was: $antwoord_c<BR>");
print("Antwoord D was: $antwoord_d<BR>");

print("Zijn de hierboven ingevoerde vragen juist?");

print('<FORM METHOD="post" ACTION="<?php print("$PHP_SELF"); ?>">');
print("<input type=\"submit\" value=\"Juist\">\n");
print("</form>\n");

print("<?php\n");
print("\$sql= \"insert into tabel_vraag (vraag, antw_a, antw_b, antw_c, antw_d) VALUES('\$vraag','\$antwoord_a','\$antwoord_b','\$antwoord_c','\$antwoord_d')\";\n");
print("mysql_query(\$sql) or die (\"Het opslaan van de waarden is niet gelukt\");\n");
print("?>\n");
?>

De kneep zit 'm in het feit dat ik wil dat de weergegeven resultaten worden opgeslagen in de tabel nadat iemand op de "juist" knop klikt. Normaal lijkt me dat prima geschikt voor een PHP_SELF, maar deze code accepteert ie dus niet.

Wat gaat er fout?

HAI
CAN HAS STDIO?
VISIBLE "HAI WORLD!"
KTHXBYE
@BasRaayman op twitter


  • RdeTuinman
  • Registratie: Mei 2001
  • Laatst online: 16-08 07:25
Je bent al binnen de php tags, dus regel vervangen door zoiets:
PHP:
1
2
3
<?
print('<FORM METHOD=\"post\" ACTION=\"$PHP_SELF\">');
?>

en die sql zooi moet je ook niet binnen print zetten maar gewoon:
PHP:
1
2
3
4
<?
$sql = [...]
mysql_query($sql) or die(...);
?>

  • Renegade
  • Registratie: December 2000
  • Laatst online: 14-10-2020
Op vrijdag 26 oktober 2001 11:33 schreef RdeTuinman het volgende:
Je bent al binnen de php tags, dus regel vervangen door zoiets:
PHP:
1
2
3
<?
print('<FORM METHOD=\"post\" ACTION=\"$PHP_SELF\">');
?>
Dat hoeft toch niet doordat het ding binnen single quotes staat :?

HAI
CAN HAS STDIO?
VISIBLE "HAI WORLD!"
KTHXBYE
@BasRaayman op twitter


  • RdeTuinman
  • Registratie: Mei 2001
  • Laatst online: 16-08 07:25
Op vrijdag 26 oktober 2001 11:36 schreef Renegade het volgende:

[..]

Dat hoeft toch niet doordat het ding binnen single quotes staat :?
ja maar nu heb je:
PHP:
1
2
3
4
5
6
7
<?
// blaat
  <?
     //nog een keer php tags?
  ?>
// blaat
?>

Die extra tags horen/hoeven daar niet...

Dus die print moet weg voor $PHP_SELF ;)

  • Renegade
  • Registratie: December 2000
  • Laatst online: 14-10-2020
Op vrijdag 26 oktober 2001 11:40 schreef RdeTuinman het volgende:

[..]

ja maar nu heb je:
PHP:
1
2
3
4
5
6
7
<?
// blaat
  <?
     //nog een keer php tags?
  ?>
// blaat
?>

Die extra tags horen/hoeven daar niet...

Dus die print moet weg voor $PHP_SELF ;)
Op zich lijkt me dat stug, want PHP output HTML terug naar de browser, omdat ie dat doet wil ik een stukje PHP in de output terugsturen. In die output hoef ik niet opnieuw te escapen. Toch...? :P ;)

Iig wel bedankt voor je hulp :)

HAI
CAN HAS STDIO?
VISIBLE "HAI WORLD!"
KTHXBYE
@BasRaayman op twitter


  • RdeTuinman
  • Registratie: Mei 2001
  • Laatst online: 16-08 07:25
Ok, nu zonder te escapen :)
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
<?
include "db.inc";
connectie();


print("De vraag was&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; : $vraag<BR><BR>");
print("Antwoord A was: $antwoord_a<BR>");
print("Antwoord B was: $antwoord_b<BR>");
print("Antwoord C was: $antwoord_c<BR>");
print("Antwoord D was: $antwoord_d<BR>");

print("Zijn de hierboven ingevoerde vragen juist?");

print('<FORM METHOD="post" ACTION="$PHP_SELF">');
print("<input type=\"submit\" value=\"Juist\">\n");
print("</form>\n");

$sql= "insert into tabel_vraag (vraag, antw_a, antw_b, antw_c, antw_d) VALUES('$vraag','$antwoord_a','$antwoord_b','$antwoord_c','$antwoord_d')";
mysql_query($sql) or die ("Het opslaan van de waarden is niet gelukt");
?>

Zoals je zelf al zegt, output PHP HTML naar de browser. Maar die $PHP_SELF is een variabele in PHP. Deze wordt dus ingevuld door PHP.

En als je die $sql print, wordt dit ook afgedrukt in je browser en niet uitgevoerd. Tenminste, ik denk dat het uitgevoerd moet worden. ;)

Probeer het eens...

  • Renegade
  • Registratie: December 2000
  • Laatst online: 14-10-2020
Helaas, ten 1e voert ie nu meteen de waarden in de database in, en niet zoals ik wil pas nadat er op OK is geklikt. Ten 2e probeert ie me nu naar de pagina http://127.0.0.1/PHP_SELF door te sturen nadat er op ok is geklikt.

HAI
CAN HAS STDIO?
VISIBLE "HAI WORLD!"
KTHXBYE
@BasRaayman op twitter


  • RdeTuinman
  • Registratie: Mei 2001
  • Laatst online: 16-08 07:25
Voor de derde keer type ik dit, omdat de database problemen had, of mn computer vastliep... :(

Maargoed,

Eerst even dat laatste probleem. Het komt toch niet helemaal lekker uit met die quotjes. Probeer dit eens:
PHP:
1
2
3
<?
echo "<FORM METHOD=\"post\" ACTION=\"" . $PHP_SELF . "\">";
?>

Nu dat eerste probleem. Zodra je dit script opvraagt, wordt het helemaal uitgevoerd. Dus ook je query.

Door nu in je form het volgende te zetten:
code:
1
<input type="hidden" name="verzonden" value="ja">

wordt na het submitten van je form $verzonden op 'ja' gezet.

Door nu rond je query dit te zetten:
PHP:
1
2
3
4
5
6
7
<?
if ($verzonden == "ja") // of netter if (isset($verzonden))
{
        $sql = ...
        mysql_query ...
}
?>

Nu wordt de query alleen uitgevoerd als je hebt verzonden.


PS alles uit mn hoofd, dus er kan best een foutje in zitten

  • Renegade
  • Registratie: December 2000
  • Laatst online: 14-10-2020
Dit werkt (althans bijna :) )
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
<?
include "db.inc";
connectie();

print("De vraag was : $vraag<BR><BR>");

print("Antwoord A was: $antwoord_a<BR>");
print("Antwoord B was: $antwoord_b<BR>");
print("Antwoord C was: $antwoord_c<BR>");
print("Antwoord D was: $antwoord_d<BR>");

print("Zijn de hierboven ingevoerde vragen juist?");

echo "<FORM METHOD=\"post\" ACTION=\"" . $PHP_SELF . "\">";
print("<input type=\"submit\" value=\"Juist\">\n");
print("<input type=\"hidden\" name=\"verzonden\" value=\"ja\">");
print("</form>\n");

if (isset($verzonden)) :
     $sql= "insert into tabel_vraag (vraag, antw_a, antw_b, antw_c, antw_d) VALUES('$vraag','$antwoord_a','$antwoord_b','$antwoord_c','$antwoord_d')";
     mysql_query($sql) or die ("Het opslaan van de waarden is niet gelukt");

endif;
?>

Maar de ingevoerde gegevens worden nu niet in MySQL geplaatst??

HAI
CAN HAS STDIO?
VISIBLE "HAI WORLD!"
KTHXBYE
@BasRaayman op twitter


  • RdeTuinman
  • Registratie: Mei 2001
  • Laatst online: 16-08 07:25
Wat is dit nu weer voor constructie?? (heb ik tenminste nog nooit gezien...)
Op vrijdag 26 oktober 2001 15:15 schreef Renegade het volgende:
PHP:
1
2
3
4
5
6
7
<?
if (isset($verzonden)) :
     $sql= "insert into tabel_vraag (vraag, antw_a, antw_b, antw_c, antw_d) VALUES('$vraag','$antwoord_a','$antwoord_b','$antwoord_c','$antwoord_d')";
     mysql_query($sql) or die ("Het opslaan van de waarden is niet gelukt");

endif;
?>
Nu even echt :P :
PHP:
1
2
3
4
5
6
7
8
<?
if (isset($verzonden))
{
     $sql= "insert into tabel_vraag (vraag, antw_a, antw_b, antw_c, antw_d) VALUES('$vraag','$antwoord_a','$antwoord_b','$antwoord_c','$antwoord_d')";
     mysql_query($sql) or die ("Het opslaan van de waarden is niet gelukt");

}
?>

edit:

oh ik zie het al, $antwoord_X worden niet meegegeven

ff w88

  • D2k
  • Registratie: Januari 2001
  • Laatst online: 31-08 10:19

D2k

<ot>
moge rob
</ot>

die die msg kan je beter " or die(mysql_error()); " voor nemen
dan zie je wat er fout gaat bij het inserten namelijk

Doet iets met Cloud (MS/IBM)


  • RdeTuinman
  • Registratie: Mei 2001
  • Laatst online: 16-08 07:25
Ik weet of dit nog wel zo netjes is, maarja:
PHP:
1
2
3
4
5
6
<?
print("<input type=\"hidden\" name=\"antwoord_a\" value=\"".$antwoord_a."\">");
print("<input type=\"hidden\" name=\"antwoord_b\" value=\"".$antwoord_b."\">");
print("<input type=\"hidden\" name=\"antwoord_c\" value=\"".$antwoord_c."\">");
print("<input type=\"hidden\" name=\"antwoord_d\" value=\"".$antwoord_d."\">");
?>

Even toevoegen aan form...

edit:

Oh, mogge Den!

  • TiG
  • Registratie: Maart 2001
  • Laatst online: 29-06 14:19

TiG

print('<FORM METHOD="post" ACTION="$PHP_SELF">');
Dit werkt niet jongens :)
Variabelen, newlines, enz. worden alleen vervangen als iets tussen dubbele aanhalingstekens staat. het moet dus zijn:
PHP:
1
2
3
<?
print "<FORM METHOD=\"post\" ACTION=\"$PHP_SELF\">";
?>

U gaat door voor de retorische vraag...


  • D2k
  • Registratie: Januari 2001
  • Laatst online: 31-08 10:19

D2k

Op vrijdag 26 oktober 2001 15:26 schreef RdeTuinman het volgende:
Ik weet of dit nog wel zo netjes is, maarja:
PHP:
1
2
3
4
5
6
<?
print("<input type=\"hidden\" name=\"antwoord_a\" value=\"".$antwoord_a."\">");
print("<input type=\"hidden\" name=\"antwoord_b\" value=\"".$antwoord_b."\">");
print("<input type=\"hidden\" name=\"antwoord_c\" value=\"".$antwoord_c."\">");
print("<input type=\"hidden\" name=\"antwoord_d\" value=\"".$antwoord_d."\">");
?>

Even toevoegen aan form...
wat dacht de starter ervan eerst eens gewoon html te gaan leren en dan php?
lijkt mij een beter volgorde :)
edit:

Oh, mogge Den!
<ot>
ga jij nou maar weer C++ >:)
</ot>

Doet iets met Cloud (MS/IBM)


  • RdeTuinman
  • Registratie: Mei 2001
  • Laatst online: 16-08 07:25
<ot>
ga jij nou maar weer C++ >:)
</ot>
<ot reply>
Nee, want dan blijft er nix meer voor jou over :9
</ot reply>

  • Renegade
  • Registratie: December 2000
  • Laatst online: 14-10-2020
Op vrijdag 26 oktober 2001 15:30 schreef D2k het volgende:

[..]

wat dacht de starter ervan eerst eens gewoon html te gaan leren en dan php?
lijkt mij een beter volgorde :)
De starter kent zelfs een behoorlijk stukje HTML, maar was zo gespitst op PHP dat ie dat helemaal vergeten was |:( :P

IIG werkt het nu :)

THanks iedereen.

HAI
CAN HAS STDIO?
VISIBLE "HAI WORLD!"
KTHXBYE
@BasRaayman op twitter

Pagina: 1