drukknop iets laten doen.

Status
Niet open voor verdere reacties.

JB'tje

Gebruiker
Lid geworden
31 mei 2004
Berichten
556
hallo,

ik wil een drukknop maken die werkt.maar tot nu toe snap ik er helemaal nix van, heb verschillende scripts bekeken en ook op php.net gekeken en gelezen.
ik weet dat ik $_get of $_POST moet gebruiken, maar hoe??
kan iemand mij uitleggen hoe het werkt met z'n drukknop??

JB'tje :(
 
PHP:
<?
  if(isset($_GET["gedrukt"]) == TRUE)
  {
  echo "Er is op de knop gedrukt !";
  }
  else
  {
  echo "<input type=\"button\" value=\"Druk hier es op\" onclick=\"window.location.href='" . $_SERVER["PHP_SELF"] . "?gedrukt'\">";
  }
?>
Om een snel voorbeeldje te geven :)

Succes :thumb:
 
dank je JPeetje,

ik snap het voorbeeld, en kan er mee overweg.

ik ga nu maar weer proberen wat in elkaar te zetten met een drukknop

JB'tje
 
Laatst bewerkt:
Wil je meerdere formulieren, kun je beter iets als dit gebruiken:

PHP:
<?

if(isset($_POST['knop']) == FALSE)
{
  echo "<form method=\"POST\">"; // Formulier starten
  echo "<input type=\"text\" name=\"waarde\">"; // Tekstveldje
  echo "<input type=\"submit\" value=\"Go !\" name=\"knop\">"; // Knopje aanmaken
  echo "</form>"; // Formulier eindigen
}
else
{
  echo "In het tekstveld is de volgende waarde opgegeven: " . htmlspecialchars($_POST['waarde']); // Weergeven van de waarde van het tekstveld 'waarde'
  echo "Klik <a href=\"" . $_SERVER['PHP_SELF'] . "\">hier</a> om het nog een keer te doen"; // Link naar zichzelf geven.
}

?>

Je ziet, je start een formulier met <form>. Als je geen method opgeeft, neemt ie standaard de GET method.

Zie ook, htmlspecialchars

:)
 
Ja ik had ook wel een uploadvoorbeeld kunnen geven, waar je bij <form> ook nog een enctype moet opgeven, maar daar vraagt JB toch niet om ... :p
 
ja, JPeetje ik vroeg er inderdaat niet om....
maar dat is eigenlijk wel PRECIES wat ik nodig had.....
alleen, nu moet er dus gedrukt worden, en dan moet die weer naar hetzelfde scherm (alleen een getal in de database moet veranderd zijn)
hoe doe ik dat, want bij het script van masterprut ga ja naar "In het tekstveld is de volgende waarde opgegeven: Klik hier om het nog een keer te doen"
nu moet je dat niet zien, maar gewoon weer de site, MET drukknop...
ik ga maar weer eens iets proberen.

@ masterprut, HEEEEL erg bedankt voor het script. was precies wat ik nodig had

JB'tje
 
Gokje, ik ben ook nog noob hoor :p
Als het fout is wordt het wel weer verbeterd door masterprut of JP :d

@header("Location: " . $_SERVER["PHP_SELF"] . ");
exit();

in plaats van

PHP:
echo "In het tekstveld is de volgende waarde opgegeven: " . htmlspecialchars($_POST['waarde']);
echo "Klik <a href=\"" . $_SERVER['PHP_SELF'] . "\">hier</a> om het nog een keer te doen";
 
Laatst bewerkt:
ik heb nu misschien een domme vraag (heb ik altijd) maar ik kan er niet uitkomen (bij php.net en bij scripts ook niet) hoe ik nou een gegeven ophaal, daar +1 bij doe, en weer terug schrijf.
het ophalen lukt wel, maar het erbij optellen en terugschrijfen.... :) ik gebruit nu iets als

PHP:
<?PHP
(mysql_query("REPLACE username  FROM leden WHERE userid = "1" VALUE (????????) "));
?>

ik wil $soldaten op die ???? zetten, maar dan werkt het script niet.
 
Laatst bewerkt:
PHP:
<?PHP
mysql_query("UPDATE  leden SET username="$soldaten+1" WHERE userid = '1' ");
?>
zoiets???

geedit: type fout hersteld
 
Laatst bewerkt:
ik zal morgen proberen of ik er iets mee kan, het ziet er wel logies uit... :) ahouwel die + volgens mij een . moet zijn.

JB'tje
 
Maar als ik het goed begrijp:

je haalt de waarde op van username, maakt daar $soldaten van, telt daar 1 bij op, en schrijft het dan weer terug???

probeer het dan eens zo:
PHP:
<?PHP
mysql_query("UPDATE  leden SET username="username+1" WHERE userid = '1' ");
?>

(masterprut, JP or anyone else...verbeter me aljeblieft als ik er helemaal naast zit :p)
 
Hartstikke leuk dat jullie elkaar hebben, maar jullie schieten er bijde niks mee op. Vooral omdat jullie beide de antwoorden niet weten en maar iets gaan gokken of raden.

@ JB'tje
Bv. de 'replace' syntax. Waarom gebruik je die. Je wilt dat er per klik eentje bij opgeteld word. Gebruik dan een query als

PHP:
UPDATE tabel SET kolomnaam (kolomnaam + 1) WHERE kolomnaam = waarde

Zie ook: SQL Update syntax

@ hitme007
PHP:
<?PHP
mysql_query("UPDATE  leden SET username="$soldaten+1" WHERE userid = '1' ");
?>

Waar o waar gaat dit vast lopen ...
Op 2 punten. Je bent de seperators vergeten. (de .-jes). Verder zal het vastlopen als $soldaten een super_globals is en het script gebuikt word op goed geconfigureerde servers. Werkt het script wel met $soldaten als super_global (wat je normaal tussen $_GET, $_POST enz moet zetten), dan heb je het tegenovergestelde van wat ik net zei. Een slecht geconfigureerde server.

Geplaatst door hitme007
Gokje, ik ben ook nog noob hoor :p
Als het fout is wordt het wel weer verbeterd door masterprut of JP :d
PHP:
@header("Location: " . $_SERVER["PHP_SELF"]);
exit();

in plaats van

PHP:
echo "In het tekstveld is de volgende waarde opgegeven: " . htmlspecialchars($_POST['waarde']); // Weergeven van de waarde van het tekstveld 'waarde'
  echo "Klik <a href=\"" . $_SERVER['PHP_SELF'] . "\">hier</a> om het nog een keer te doen"; // Link naar zichzelf geven.

Kan, maar er is een voorwaarde aan de header(); functie. Voor de header(); functie mag nog niks naar de browser verzonden zijn. Net zoals session_start(); en setcookie();.

Zie ook session_start, setcookie en header.

;)
 
als ik het script van hitme007 plaats in mijn script, dan zie ik wanneer ik op de button klik nix meer, alleen een witte site. ik heb er
PHP:
or die ("probleem" mysql_error())
dit heb ik erachter gezet, maar dan zie ik alleen "probleem" op de site staan, en gaan mysql_error
hoe kan dit??? en waarom zie ik geen textveld en button??

JB'tje
 
Laatst bewerkt:
Kijk, als jij elke keer een half script geeft van ik heb hier en daar 20 tekens meer achter gezet, weten wij niet wat voor een invloed dat zou hebben op het script.

Verder vergeten jullie beide, wat me een beetje verbaasd JB, dat seperators een vereiste zijn op de manier hoe jij een error wilt laten zien. Want je hebt het hier wel gedaan.

Ook praat je mij gewoon helemaal voorbij. Ik heb je een query gegeven die hetzelfde doet als
- selecteren uit tabel soldaten
- aantal soldaten toewijzen aan $soldaten
- updaten tabel soldaten met het aantal soldaten + 1

Tip: zet error_reporting(E_ALL); bovenaan je script
 
ja, ik praat een beetje veel.
ik heb de query gebruikt, maar eerst kreeg ik een foutmelding (ik had het op de verkeerde plaats geplaatst!!!!!!) maar nu werkt die hoor, Bedankt masterprut!! :D

ja, ik ben het vergeten omdat ik het niet gecopieërd heb uit mijn eigen script maar hie heb gemaakt.
ik heb ook vergeten een " . " te plaatsen zag ik net nog.
ik heb dit nu in mijn script staan.
PHP:
<?
error_reporting(E_ALL);

include("contactMYSQL.php"); 
if(isset($_POST['knop']) == FALSE)
{
  echo "<form method=\"POST\">"; // Formulier starten
  echo "<input type=\"text\" name=\"waarde\">"; // Tekstveldje
  echo "<input type=\"submit\" value=\"Go !\" name=\"knop\">"; // Knopje aanmaken
  echo "</form>"; // Formulier eindigen
}
else
{
	mysql_query("UPDATE armory SET wapen1=(wapen1+1) WHERE userid = '4' ") or die ("kan geen wapen 1 niet updaten: " . mysql_error());

  	@header("Location: " . $_SERVER["PHP_SELF"]) or die ("probleem" . mysql_error());
	exit();
}

?>
als ik op de button klik krijg ik "probleem" te zien, maar zonder foutmeldingen!!!!
nu vraag ik me af waarom ik (nada ik op de knop heb gedrukt) niet weer het textveld en button zie.
(ik geef meestal maar gedeeltes van het script omdat het anders zoveel ruimte kost (onzin eigenlijk))

JB'tje
 
...

Je wilt de header laten die-en als de query daarboven verkeerd is gegaan? :8-0:

Ook kun je het eens proberen zonder die @ voor header. @ zorgt ervoor dat de foutmelding niet weergeven word.
 
ooh, dus daar is die @ voor.
ja, ik laat die header daar, maar die query werkt hoor :)
is momenteel al opgelost.

ik heb de @ weggehaald, nu krijg ik deze foutmelding (van error_reporting(E_ALL); <-- staat bovenaan in de text, maar niet van de mysql_error()); die daarvoor bestemd was!!!)
"Warning: Cannot modify header information - headers already sent by (output started at c:\program files\webserver\apache\htdocs\de site\butttton.php:9) in c:\program files\webserver\apache\htdocs\de site\butttton.php on line 24
locatie probleem"
Wat kan ik hiermee!!! :8-0:

JB'tje
 
Laatst bewerkt:
nog een vraagje,

hoe kan ik binnen php tags een "<br>" maken, een enter dus.... want nu staan alle textvelden naast elkaa, maar ik wil ze juist onder elkaar.
of kan dit niet, en moet ik voor elk text veld een eigen form maken?????

JB'tje
 
Neehoor, je kan meerder velden in je form zetten:

hier een voorbeeldje van een script die een reactie toevoegd aan een gastenboek:

PHP:
<?

require('./admin/config.php');

$datum = mktime(date("H i s n j Y"));

if(isset($_POST["submit"]) == TRUE){

    if($_POST["naam"] != "" && $_POST["email"] != "" && $_POST["commentaar"] != ""){
    mysql_query("INSERT INTO gastenboek (naam,email,commentaar,datum) VALUES ('" . $_POST["naam"] . "','" . $_POST["email"] . "','" . $_POST["commentaar"] . "','" . $datum . "')") or die(mysql_error());
    header("Location: gastenboek.php");
    exit();
    }
    else{
    $error = "Je hebt niet alle velden ingevult";
    }
}
    
?>

<table>
<form method="POST">
<tr><td><b>Let op:</b> Alle velden dienen te worden ingevuld!</tr></td>
<tr><td>&nbsp;</tr></td>
<tr><td><b>Naam:</b></tr></td>
<tr><td><input type="text" name="naam" size="50"></tr></td>
<tr><td><b>E-Mail:</b></tr></td>
<tr><td><input type="text" name="email" size="50"></tr></td>
<tr><td><b>Commentaar:</b></tr></td>
<tr><td><textarea name="commentaar" rows="10" cols="38"></textarea></tr></td>
<tr><td>&nbsp;</tr></td>
<tr><td><input type="submit" name="submit" value="Versturen"></tr></td>
<tr><td>&nbsp;</tr></td>
<tr><td><? if(isset($error) == TRUE){ echo $error; } ?></tr></td>
</table>
</form>
 
Laatst bewerkt:
@ hitme007
ja, als je wilt kun je een hele site in een form zetten...
maar zoals je ook bij het voorbeel van jou ziet, alles staat achter elkaar :) en dat wil ik dus niet.
als je een "form" buiten php tags hebt staan kun je het commando "<br>" gebruiken (break, staat gelijk aan enter) maar zodra je binnen php tags komt, kun je dat niet meer gebruiken (foutmelingen, die krijg je dan meer niet) tenminste, dat denk ik tot nu toe!!!! :cool:

als je 2 forms hebt, dan komen ze onder elkaar te staan.
dus de inhoud van die forms ook.
maar nu wil ik gewoon weten of er dus ook een "code" zoals <br> is binnen php tags.

JB'tje
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan