Textarea naar DB heen.
Ik ben tot het volgende probleem gelopen met een "opmerking systeem".
De bedoeling van dit systeem is dat er een opmerking word opgehaald en geplaatst word in een textarea. Vervolgens kunnen er wijzigingen worden aangebracht en kan de textarea weer naar de database worden gestuurd om te slaan.
Ik zal het probleem waar ik tegenaan gelopen ben zo goed mogelijk uit te leggen.
En ben al enige tijd aan het zoeken, hoe ik dit kan oplossen maar kom er eigenlijk zo niet uit, dus als iemand mij in de juiste richting kan helpen waar ik naar moet kijken dan hoor ik het graag.
De pagina waar de opmerking systeem in staat is als volgt: Aan de hand van deze ingevulde isonummer word de pagina geladen met gegevens uit de database.
Hier volgt het stukje van de opmerkingsysteem.
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
2
3
4
5
6
7
8
9
10
11
12
13
14
<?php
include 'opmerkingophaal.php'; // hier een stukje sql waar de opmerking word opgehaald
include 'verbinding.php'; //hier word de verbinding met de MS SQL database gemaakt.
if ($_POST['submit']) {
$text = $_POST['opmerking'];
$sql = "UPDATE dbo.[PSI - Lassen opmerkingen] SET Opmerking='$text' WHERE Isonummer='$iso'";
$stmt = sqlsrv_query($conn, $sql);}
?>
<form method="post" action="<?php echo $_SERVER['PHP_SELF']; ?>">
<textarea cols=40 rows=10 name="opmerking"><?php echo $opmerking->Opmerking; ?></textarea>
<input type="submit" name="submit" value="submit" />
</form>
include 'opmerkingophaal.php'; // hier een stukje sql waar de opmerking word opgehaald
include 'verbinding.php'; //hier word de verbinding met de MS SQL database gemaakt.
if ($_POST['submit']) {
$text = $_POST['opmerking'];
$sql = "UPDATE dbo.[PSI - Lassen opmerkingen] SET Opmerking='$text' WHERE Isonummer='$iso'";
$stmt = sqlsrv_query($conn, $sql);}
?>
<form method="post" action="<?php echo $_SERVER['PHP_SELF']; ?>">
<textarea cols=40 rows=10 name="opmerking"><?php echo $opmerking->Opmerking; ?></textarea>
<input type="submit" name="submit" value="submit" />
</form>
Het stukje werkt prima als deze, stand-alone staat en niet te maken heeft met de index.php?iso=[isonummer].
Maar zodra deze erbij komt, werkt het systeem niet meer.
De code word verstuurd, en vervolgens blijft de pagina wit en staat het volgende in de url:
En het gene word niet verstuurd naar de database.
Heeft iemand enig idee wat ik fout doe, ik neem aan dat het in de zit die ik bovenaan mijn hoofd pagina gebruik, maar hoe kan ik dit verhelpen?
Hartelijk dank alvast.
Gewijzigd op 27/03/2012 14:21:01 door Dan Groot
Aangepast, excuses.
Als je normaal gesproken een formulier met POST verstuurd, zou je niet zo'n url moeten krijgen. Lijkt meer op GET.
Dit <form method="post" action="index.php?iso=boven">
Dit dbo.[PSI - Lassen opmerkingen] is geen fatsoenlijke databasekolomnaam.
Script is lek =>SQL-Injection.
Gewijzigd op 27/03/2012 13:34:31 door - SanThe -
Ik heb bovenstaande wat je hebt onbevolen geprobeerd.
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<?php
include 'backend\los opmerking\verbinding.php'; //hier word de verbinding met de MS SQL database gemaakt.
include 'backend\los opmerking\opmerkingophaal.php'; // hier een stukje sql waar de opmerking word opgehaald
if ($_POST['submit']) {
$text = $_POST['opmerking'];
$sql2 = "UPDATE dbo.[PSI - Lassen opmerkingen] SET Opmerking='$text' WHERE Isonummer='1030650'";
$stmt = sqlsrv_query($conn, $sql2);
}?>
<form method="post" action="index.php?iso=1030650">
<textarea cols=40 rows=10 name="opmerking"><?php echo $opmerking->Opmerking; ?></textarea>
<input type="submit" name="submit" value="submit" />
</form>
include 'backend\los opmerking\verbinding.php'; //hier word de verbinding met de MS SQL database gemaakt.
include 'backend\los opmerking\opmerkingophaal.php'; // hier een stukje sql waar de opmerking word opgehaald
if ($_POST['submit']) {
$text = $_POST['opmerking'];
$sql2 = "UPDATE dbo.[PSI - Lassen opmerkingen] SET Opmerking='$text' WHERE Isonummer='1030650'";
$stmt = sqlsrv_query($conn, $sql2);
}?>
<form method="post" action="index.php?iso=1030650">
<textarea cols=40 rows=10 name="opmerking"><?php echo $opmerking->Opmerking; ?></textarea>
<input type="submit" name="submit" value="submit" />
</form>
echter is het resultaat nog hetzelfe.
Qua beveiliging maakt het niet heel erg uit, omdat alles op een kleine gesloten Intranet draait.
Hier nog wat extra informatie wat er misschien wel mee te maken heeft na mijn gevoel
De index.php ziet er als volgt uit:
Code (php)
vervolgens ziet check er zo uit(verbinding is puur verbinding met db)
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<?php
$sql = "SELECT ISONUMMER from dbo.LassenDBtabstrap WHERE ISONUMMER = $iso";
$stmt = sqlsrv_query( $conn, $sql);
if ($stmt) {
$rows = sqlsrv_has_rows( $stmt );
if ($rows === true)
echo 'dit is een ingewikkeld product...' ;
else
include 'producten/omschrijving.php';
include 'producten/programma.php';
include 'producten/normaalproduct.php';
include 'producten/tabstrap.php';
include 'main.html';
}
?>
$sql = "SELECT ISONUMMER from dbo.LassenDBtabstrap WHERE ISONUMMER = $iso";
$stmt = sqlsrv_query( $conn, $sql);
if ($stmt) {
$rows = sqlsrv_has_rows( $stmt );
if ($rows === true)
echo 'dit is een ingewikkeld product...' ;
else
include 'producten/omschrijving.php';
include 'producten/programma.php';
include 'producten/normaalproduct.php';
include 'producten/tabstrap.php';
include 'main.html';
}
?>
vervolgens bevat main.html
Gewijzigd op 27/03/2012 15:03:08 door Dan Groot
Helemaal bovenin je script:
Code (php)
1
2
3
4
5
6
2
3
4
5
6
<?php
ini_set('display_errors', 1); // 0 = uit, 1 = aan
error_reporting(E_ALL);
// rest
?>
ini_set('display_errors', 1); // 0 = uit, 1 = aan
error_reporting(E_ALL);
// rest
?>
Notice: Undefined index: submit in \opmerking.php on line 20
lijn 20: