Archief - PHP : Variabelen zijn leeg bij versturen formulier ?

Het archief is een bevroren moment uit een vorige versie van dit forum, met andere regels en andere bazen. Deze posts weerspiegelen op geen enkele manier onze huidige ideeën, waarden of wereldbeelden en zijn op sommige plaatsen gecensureerd wegens ontoelaatbaar. Veel zijn in een andere tijdsgeest gemaakt, al dan niet ironisch - zoals in het ironische subforum Off-Topic - en zouden op dit moment niet meer gepost (mogen) worden. Toch bieden we dit archief nog graag aan als informatiedatabank en naslagwerk. Lees er hier meer over of start een gesprek met anderen.

Impuls

Legacy Member
Hallo

De server is een iis met php 5.0.4 en een mysql databank.

Als ik op submit klik, dan komt er in de tabel een record bij met allemaal lege velden (behalve de auto incerement :-))

Voor de connectie de typische connect2db.php

<?php

$mysql_database="beurs";
$mysql_nickname="localhost";

$link = mysql_connect("localhost","root","lg090480") or die ("Unable to connect to SQL server");
mysql_select_db($mysql_database,$link) or die ("Unable to select database");

?>
----------------------
Voor het formulier :

<!--
//
// Teksten: SIGN-UP
//
// -->


<script language="JavaScript">

//
// Controle op formulier
//

function chk()
{


//
// Controle op Inschrijvingsformulier
//

if (document.saveform.groep.value == "1")
{alert("Gelieve een keuze bij "U bent" te maken.");
document.saveform.groep.focus();
return false;
}

if (document.saveform.naam.value == "")
{alert("Gelieve uw naam in te vullen.");
document.saveform.naam.focus();
return false;
}

if (document.saveform.voornaam.value == "")
{alert("Gelieve uw voornaam in te vullen.");
document.saveform.voornaam.focus();
return false;
}

if (document.saveform.winkelnaam.value == "")
{alert("Gelieve de winkelnaam in te vullen.");
document.saveform.winkelnaam.focus();
return false;
}

if (document.saveform.telefoon.value == "")
{alert("Gelieve uw telefoonnummer in te vullen.");
document.saveform.telefoon.focus();
return false;
}

if (document.saveform.email.value == "")
{alert("Gelieve uw emailadres in te vullen.");
document.saveform.email.focus();
return false;
}

if (document.saveform.taal.value == "1")
{alert("Gelieve uw taal te selecteren");
document.saveform.taal.focus();
return false;
}

if (document.saveform.aanwezig.value == "1")
{alert("Gelieve uw aanwezigheid te selecteren");
document.saveform.aanwezig.focus();
return false;
}

if (document.saveform.vertegenwoordiger.value == "1")
{alert("Gelieve uw vertegenwoordiger te selecteren");
document.saveform.vertegenwoordiger.focus();
return false;
}

return true;

}

// -->
</script>



<form onSubmit="return chk()" name="saveform" action="./php/savedata.php" method="post">


<!--
//
// Inschrijvingsformulier
//
// -->

<table width="550" align="right" cellspacing="0" cellpadding="0" border="0">
<tr height="18" bgcolor="#f1f1f1">
<td>&nbsp;<font class="titel">Inschrijvingsformulier</font></td>
</tr>
</table>
<br clear="all">
<table width="550" align="right" cellspacing="0" cellpadding="5" border="0">
<tr>
<td width="100"><font class="tekst">U bent:</font></td>
<td width="440">
<select name="groep" class="tekst">
<OPTION value="1">Maak hier uw keuze</OPTION>
<OPTION>Compu@Home</OPTION>
<OPTION>Electro Specialist</OPTION>
<OPTION>Exellent</OPTION>
<OPTION>Leverancier</OPTION>
</select>
</tr>
<tr>
<td width="100"><font class="tekst">Naam:</font></td>
<td width="440"><input type="text" name="naam" size="35" maxlength="25" class="tekst"></td>
</tr>
<tr>
<td width="100"><font class="tekst">Voornaam:</font></td>
<td width="440"><input type="text" name="voornaam" size="35" maxlength="25" class="tekst"></td>
</tr>
<tr>
<td width="100"><font class="tekst">Winkelnaam:</font></td>
<td width="440"><input type="text" name="winkelnaam" size="35" maxlength="25" class="tekst"></td>
</tr>
<tr>
<td width="100"><font class="tekst">Telefoon:</font></td>
<td width="440"><input type="text" name="telefoon" size="35" maxlength="25" class="tekst"></td>
</tr>
<tr>
<td width="100"><font class="tekst">Email:</font></td>
<td width="440"><input type="text" name="email" size="35" class="tekst"></td>
</tr>
<tr>
<td width="100"><font class="tekst">Taal:</font></td>
<td width="440">
<select name="taal" class="tekst">
<OPTION value="1"> </OPTION>
<OPTION value="NL">NL</OPTION>
<OPTION value="FR">FR</OPTION>
</select>
</td>
</tr>
<tr>
<td width="100"><font class="tekst">Aanwezig op:</font></td>
<td width="440">
<select name="aanwezig" class="tekst">
<OPTION value="1"> </OPTION>
<OPTION value="Informatiedag">Informatiedag</OPTION>
<OPTION value="Diner">Diner (max 2/winkel)</OPTION>
<OPTION value="Beide">Beide</OPTION>
</select>
</td>
</tr>
<tr>
<td width="100"><font class="tekst">Vertegenwoordiger:</font></td>
<td width="440">
<select name="vertegenwoordiger" class="tekst">
<OPTION value="1">Kies uw vertegenwoordiger.</OPTION>
<OPTION value="Bombeeck Luc">Bombeeck Luc</OPTION>
<OPTION value="Debaix Benoit">Debaix Benoit</OPTION>
<OPTION value="Deruddere Peter">Deruddere Peter</OPTION>
<OPTION value="De Visscher Koen">De Visscher Koen(C@H)</OPTION>
<OPTION value="Duquesne Anthony">Duquesne Anthony</OPTION>
<OPTION value="Grauls Wim">Grauls Wim</OPTION>
<OPTION value="Pirsoul Luc">Pirsoul Luc</OPTION>
<OPTION value="Rademaekers Paul">Rademaekers Paul</OPTION>
<OPTION value="Robbrecht John">Robbrecht John (C@H)</OPTION>
<OPTION value="Secelle Daniel">Secelle Daniel</OPTION>
<OPTION value="Verhaeghe Marc">Verhaeghe Marc</OPTION>
<OPTION value="Geen idee">Geen idee</OPTION>
</select>
</td>
</tr>
</table>


<!--
//
// Submitting - Reset
//
// -->


<br clear="all"><br>
<p align="center">
<input class="tekst" type="Submit" value=" schrijf in ">
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
<input class="tekst" type="reset" value=" reset ">
<br><br>
</p>


</form>
-------------------------------

Gebruik ik (alweer) een oude manier van variabelen opslaan ofzo...?
(ik ben van de php 4.2.3 periode...)


Tweede probleem dat ik net opmerk is dat niets van mijn "check" gedeelte werkt. (javascript).

Wie hier een deftig antwoord voor weet krijgt alvast een puntje van mij.
(ik begin een beetje in tijdnood te geraken en google laat me in de steek)

Alvast een dikke merci
Impuls

WHiSPy

Legacy Member
Er staat nergens iets waar gij uw variablen opvraagt. Verwijder uw root paswoord best ook. :)

Impuls

Legacy Member
WHiSPy zei:
Er staat nergens iets waar gij uw variablen opvraagt. Verwijder uw root paswoord best ook. :)


Oeps de savedata.php vergeten....

Root wachtwoord wegdoen voor in het forum of voor altijd ?
In het forum kan het gaan kwaad, tis een testdatabank...

savedata.php bij deze (bedankt voor opmerking)

<?php

include("connect2db.php");



/* wegschrijven gegevens */
$sql = "INSERT INTO inschrijvingen
(groep, naam, voornaam, winkelnaam, telefoon, email, taal, aanwezig, vertegenwoordiger)
VALUES ('$groep', '$naam', '$voornaam', '$winkelnaam', '$telefoon', '$email', '$taal', '$aanwezig', '$vertegenwoordiger') ";

$result = mysql_query($sql);
mysql_close($link);
echo ("Uw inschrijving werd goed ontvangen.");


?>

DarkBone

Legacy Member
Inderdaad, hier geldt ook de opmerking dat je de nieuwe notatie moet gebruiken voor het opvragen van variabelen die van buitenaf komen.

Aangezien het hier gaat om het posten van variabelen:

$_POST['voornaam']
$_POST['winkelnaam']
etc ...

Zie ook:
http://www.php.net/manual/nl/language.variables.predefined.php
(met name de waarschuwing heeft het over deze verandering, jij bent wschl nog gewoon de oude manier/syntax te gebruiken)

-----
OPM:
Wel ff opletten met de notatie binnen je SQL query, aangezien je daar reeds met single quotes zit:
Code:
$sql = "INSERT INTO inschrijvingen
(groep, naam, voornaam, winkelnaam, telefoon, email, taal, aanwezig, vertegenwoordiger)
VALUES ('" . $_POST['groep'] . "', '" . $_POST['naam'] . "', '" . $_POST['voornaam'] . "', '" . $_POST['winkelnaam'] . "', '" . $_POST['telefoon'] . "', '" . $_POST['email'] . "', '" . $_POST['taal'] . "', '" . $_POST['aanwezig'] . "', '" . $_POST['vertegenwoordiger'] . "') ";
of
Code:
$sql = "INSERT INTO inschrijvingen
(groep, naam, voornaam, winkelnaam, telefoon, email, taal, aanwezig, vertegenwoordiger)
VALUES ('{$_POST['groep']}', '{$_POST['naam']}', ...

Impuls

Legacy Member
Lashknife zei:
ge moet de nieuwe manier (ondertussen toch ook al kei oud ma soit) van form variabelen gebruiken

$insertvalue = $_POST["fieldname"];
info @ http://be2.php.net/reserved.variables (scrollen 1/3de page ongeveer)


Dus niet meer insert in xxxx

values ("xxx")

maar anders dus...

Ik snap het niet direct....tis einde van dag en hersenen zijn gekookt... :-p

DarkBone

Legacy Member
Mijn query zou het moeten doen...
Al is het veiliger van de variabelen eerst te filteren op gevaarlijke tekens zoals quotes (sql injection,).

Lashknife

Legacy Member
nee

je values in je query haal je op de oude manier op.

de nieuwe manier is via de $_POST array

$query = "insert into table (column) values (" . $_POST["field"] . ")";
ipv
$query = "insert into table (column) values (" . $field . ")";

Impuls

Legacy Member
prachtige replies gasten....alvast nogmaals bedankt.
(dat filteren heb ik nog gedaan, maar acht het voorlopig hier niet nodig toch bedankt voor tip)

Juist nog ene vraag
Dat javascriptje erboven...kan het zijn dat hij niet reageert omdat ik ook gewoon mijn variabelen gebruik alsvolgt :

if (document.saveform.groep.value == "1")
{alert("Gelieve een keuze bij "U bent" te maken.");
document.saveform.groep.focus();
return false;
}

dus gewoon .variabel. ?

thx
impuls

DarkBone

Legacy Member
De enige reden waarom uw javascript niet wil werken is omdat uw script reeds bij de eerste controle vastloopt.
Er wordt namelijk gestruikeld over dit:

alert("Gelieve een keuze bij "U bent" te maken.");

Merk op dat je hier de dubbele quotes tot 4 maal toe gebruikt, JavaScript denkt dus dat je voor 'U' de string reeds afsluit terwijl dat niet het geval is. Simpel op te lossen door:

alert("Gelieve een keuze bij 'U bent' te maken.");

Nu doet ie het normaal gewoon (heb ik getest).

Lashknife

Legacy Member
alert("Gelieve een keuze bij \"U bent\" te maken");
alert('Gelieve een keuze bij "U bent" te maken");
alert("Gelieve een keuze bij 'U bent' te maken"); -> DB's lijntje

servi

Legacy Member
moderator noot :
je topic bevat geen prefix, een verkeerd prefix of heeft een onduidelijke titel.
Gelieve een duidelijke titel met een bijhorend correct prefix te gebruiken.
Voor meer informatie over prefixen kan je terecht op regels en prefixen !!!.
Je topic is aangepast en je hebt een een waarschuwing gekregen, gelieve in het vervolg er op te letten.

Impuls

Legacy Member
omg
Wat een n00b fout lol...
Ik had het nooit gezien dat ik dubbele " " had gezet.
Sorry voor de onoplettenheid.
Nogmaals bedankt aan iedereen die mij zo sterk heeft geholpen.
Ik doe mijn best mijn kennis bij te schaven, maar hou me eigenlijk bezig met het
netwerk en de servers.

Sorry voor prefix affaire...ik dacht dat ik een Q gezet had maar soit...

Cheers
Impuls
Het archief is een bevroren moment uit een vorige versie van dit forum, met andere regels en andere bazen. Deze posts weerspiegelen op geen enkele manier onze huidige ideeën, waarden of wereldbeelden en zijn op sommige plaatsen gecensureerd wegens ontoelaatbaar. Veel zijn in een andere tijdsgeest gemaakt, al dan niet ironisch - zoals in het ironische subforum Off-Topic - en zouden op dit moment niet meer gepost (mogen) worden. Toch bieden we dit archief nog graag aan als informatiedatabank en naslagwerk. Lees er hier meer over of start een gesprek met anderen.
Terug
Bovenaan