Door
Jurgen de Brouwer
op 15-11-2014 18:25
gewijzigd op 15-11-2014 18:26
2.025 views
Hallo,
Ik heb een vreemd probleem.
Ik heb een script waar ik mijn database mee kan update.
Dit werkt perfect.
Alleen in mijn formulier worden de database waardes niet goed weergeven
Als er 2 woorden in de tabel staan word alleen het eerste woord weergeven.
Weet iemand hoe ik dat kan oplossen?
Want als ik nu bijvoorbeeld maar 1 regel wil aanpassen en een andere regel bevat bv Jan klaassen.
Veranderd dit in 'Jan'
Dit is mijn scipt:
<?php
$sql = "SELECT * FROM `tabel' WHERE ID='1'";
Volgens mij heb jij de foutmeldingen niet aan staan. Zet dit dan altijd bovenaan in je script:
<?php
ini_set('display_errors',1);
error_reporting(E_ALL);
?>
Op regel vijf mag je direct de database selecteren:
<?php
$db = mysqli_connect ($host, $user, $password, $database);
?>
Dit is anders ten opzichte van de mysql_ functies.
Regel 7 mag dan ook komen te vervallen.
Verder staat er op regel 21 nog UPDATE tabel in plaats van UPDATE middelbeers.
Regel 21 klopt want ik heb per ongeluk mijn andere database verwijderd.
Als ik dit script:
<?php
ini_set('display_errors',1);
error_reporting(E_ALL);
require_once("info.php");
$db = mysqli_connect ($host, $user, $password, $dbnaam) or die ("Kan geen verbinding maken met de database ");
// indien dit bestand in de POST methode wordt aangeroepen is het formulier verstuurd.
if($_SERVER['REQUEST_METHOD'] == 'POST')
{
// GEBRUIK GEEN mysql_ meer maar gebruik mysqli_ of PDO !!!
$result = mysqli_query($db, "UPDATE middelbeers SET regel1='".mysqli_real_escape_string($_POST['regel1'])
."', regel2='".mysqli_real_escape_string($_POST['regel2'])
."', prijs='".mysqli_real_escape_string($_POST['prijs'])
."' WHERE id=".intval($_POST['id']));
if($result === FALSE)
throw new Exception('Update naar tabel mislukt.' . mysqli_error($db));
// optioneel voor een update is een redirect.
else
echo('Reclame Bijgewerkt!');
}
$sql = "SELECT * FROM middelbeers WHERE ID=1";
$result = mysqli_query($db, $sql);
// gebruik mysql_fetch_assoc()! mysql_fetch_array() gebruikt dubbel zoveel geheugen.
$row = mysqli_fetch_assoc($result);
if($row === FALSE)
{
throw new Exception('Geen record gevonden in de tabel.');
exit;
}
?>
<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>Untitled Document</title>
<style>
.labels {
float:left;
line-height: 25px;
width: 70px;
background-color: #CCC;
}
.form {
float:left;
line-height: 25px;
width: 70px;Zaz
margin-left:3px;
}
.clear {
clear:both;
}
</style>
</head>
<body>
<form action="" method="post"> <!-- waarom naar update.php? -->
<div class="labels">
<label for="id" >ID:</label><br>
<label for="regel1" >Regel 1:</label><br>
<label for="regel2" >Regel 2:</label><br>
<label for="prijs" >Prijs:</label>
</div>
<div class="form">
<input type="text" id="ID" name="ID" value="<?php echo $row['ID']; ?>" /> <!-- singleton, dus /> -->
<input type="text" id="regel1" name="regel1" value="<?php echo $row['regel1']; ?>" />
<input type="text" id="regel2" name="regel2" value="<?php echo $row['regel2']; ?>" />
<input type="text" id="prijs" name="prijs" value="<?php echo $row['prijs']; ?>" />
<textarea type="text" rows="5" cols="50" id-"test" name="test"><?php echo $row['test']; ?></textarea>
<input type="hidden" name="ID" value="<?php echo $row['ID']; ?>" />
<input type="submit" value="update" />
</div>
<div class="clear"></div>
</form>
</body>
</html>
krijg ik de volgende fout meldingen:
Warning: mysqli_real_escape_string() expects exactly 2 parameters, 1 given in F:\PHP\data\localweb\MYSQL\update1.php on line 14
Warning: mysqli_real_escape_string() expects exactly 2 parameters, 1 given in F:\PHP\data\localweb\MYSQL\update1.php on line 15
Warning: mysqli_real_escape_string() expects exactly 2 parameters, 1 given in F:\PHP\data\localweb\MYSQL\update1.php on line 16
Notice: Undefined index: id in F:\PHP\data\localweb\MYSQL\update1.php on line 17
Beste Jurgen, zou je in het vervolg de scripts die je in dit topic plaatst tussen [code] en [/code] willen plaatsen? Dan zijn ze beter leesbaarder voor iedereen. Alvast bedankt!
- Over de meldingen over mysqli_real_escape_string, je dient twee parameters op te geven. De eerste verwijst naar de variabele van je connectie, en de tweede bevat je input, zoals je nu gebruikt.
- Verder lijkt er geen 'id' mee te zijn gekomen via je $_POST.