Database update middels een form

  • Onderwerp starter Onderwerp starter huijb
  • Startdatum Startdatum
Status
Niet open voor verdere reacties.
Unexpected $end heeft met accolades ( { en } )te maken.
Ik zie de fout niet in bovenstaande code.

Je bent waarschijnlijk ergens eentje vergeten af te sluiten.
Het is zo raar, want dit werk perfect;
PHP:
mysql_query( "UPDATE tblInvoer SET IDLocatie = '" . mysql_real_escape_string( $_POST['IDLocatie'] ) . "' WHERE IDInvoer = '" . mysql_real_escape_string( $_POST['IDInvoer'] ) . "'"); // AND Ploeg = '" . mysql_real_escape_string( $_POST['Ploeg'] ) . "'" ); 
				


  } else { // Niet alle velden zijn ingevuld
 
    echo 'Niet alle velden zijn correct ingevuld <br />'; // geef een boodschap dat niet alle velden zijn ingevuld
    echo '<a href="javascript:history.go(-1)">Probeer het opnieuw</a>'; // geef een link naar de vorige pagina
 
  }
 
} else { // het formulier is niet verstuurd
 
  header('Location: update.php'); // stuur de gebruiker door naar de pagina waar hij / zij het formulier kan invullen
 
}

echo 'Wijzigingen zijn verwerkt.<br />';
mysql_close($con);

?>
</body>

</html>
Dan wel alleen op lDLocatie. Maar op het moment dat ik het onder elkaar zit komt de foutmelding. M.a.w. ik verander niets, behalve onder elkaar.
 
Zou je de volledige code willen plaatsen,

Het kan niet zo zijn dat dit geen "unexpected $end" oplevert en wanneer je het onder elkaar zet wel. :(
 
Het formulier;
PHP:
<form name="search" action="search.php" method="get" >
IDInvoer:  <input type="text" name="IDInvoer" >
  <input type="submit" name="Submit" value="Search" >
</form>

en de code;
PHP:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">

<head>
<meta content="text/html; charset=windows-1252" http-equiv="Content-Type" />
<title>update</title>
</head>

<body>
<?php
$con = mysql_connect("localhost","root","padre");
if (!$con)
  {
  die('Could not connect: ' . mysql_error());
  }
mysql_select_db("Veiligheidsanalyses", $con);

// Kijk eerst of het formulier verzonden is en de pagina niet rechtstreeks wordt aangeroepen
if ( $_SERVER['REQUEST_METHOD'] == 'POST' ) { 
 
  // Formulier is verzonden, kijk of er in de belangrijke velden daadwerkelijk een waarde staat.
  if( trim( $_POST['IDLocatie'] ) != '' && trim( $_POST['Datum'] ) != '' && trim( $_POST['Ploeg'] ) != '' ) { 
   
// Alle waarden zijn ingevuld, bouw de query op en voer hem uit. Wijzigingen worden uitgevoerd op basis van IDInvoer

$result = mysql_query( "UPDATE tblInvoer SET 
                      IDLocatie = '" . mysql_real_escape_string( $_POST['IDLocatie'] ) . "',
                      Straat = '" . mysql_real_escape_string( $_POST['Straat'] ) . "',
                      Nummer = '" . mysql_real_escape_string( $_POST['Nummer'] ) . "',
                      WHERE IDInvoer = '" . mysql_real_escape_string( $_POST['IDInvoer'] ) . "'");
if(!$result) {
  echo 'Er is iets mis gegaan. MySQL zegt: '. mysql_error();
} else {

  echo 'Aanpassen gelukt.';

}
mysql_close($con);

?>
</body>

</html>
 
Ik mis het afsluiten van het IF-statements welke op regel 19 + 22 starten :)

Zullen waarschijnlijk op regel 38 moeten worden afgesloten.
 
Ik mis het afsluiten van het IF-statements welke op regel 19 + 22 starten :)

Zullen waarschijnlijk op regel 38 moeten worden afgesloten.
Maar deze geeft geen foutmelding;
PHP:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">

<head>
<meta content="text/html; charset=windows-1252" http-equiv="Content-Type" />
<title>update</title>
</head>

<body>
<?php
$con = mysql_connect("localhost","root","padre");
if (!$con)
  {
  die('Could not connect: ' . mysql_error());
  }
mysql_select_db("Veiligheidsanalyses", $con);

// Kijk eerst of het formulier verzonden is en de pagina niet rechtstreeks wordt aangeroepen
if ( $_SERVER['REQUEST_METHOD'] == 'POST' ) { 
 
  // Formulier is verzonden, kijk of er in de belangrijke velden daadwerkelijk een waarde staat.
  if( trim( $_POST['IDLocatie'] ) != '' && trim( $_POST['Datum'] ) != '' && trim( $_POST['Ploeg'] ) != '' ) { 
   
// Alle waarden zijn ingevuld, bouw de query op en voer hem uit. Wijzigingen worden uitgevoerd op basis van IDInvoer
mysql_query( "UPDATE tblInvoer SET 
					  IDLocatie = '" . mysql_real_escape_string( $_POST['IDLocatie'] ) . "',
                      Datum = '" . mysql_real_escape_string( $_POST['Datum'] ) . "',
                      Ploeg = '" . mysql_real_escape_string( $_POST['Ploeg'] ) . "',
                      WHERE IDInvoer = '" . mysql_real_escape_string( $_POST['IDInvoer'] ) . "'");

// IDLocatie = '" . mysql_real_escape_string( $_POST['IDLocatie'] ) . "' WHERE IDInvoer = '" . mysql_real_escape_string( $_POST['IDInvoer'] ) . "'"); // AND Ploeg = '" . mysql_real_escape_string( $_POST['Ploeg'] ) . "'" ); 
				


  } else { // Niet alle velden zijn ingevuld
 
    echo 'Niet alle velden zijn correct ingevuld <br />'; // geef een boodschap dat niet alle velden zijn ingevuld
    echo '<a href="javascript:history.go(-1)">Probeer het opnieuw</a>'; // geef een link naar de vorige pagina
 
  }
 
} else { // het formulier is niet verstuurd
 
  header('Location: update.php'); // stuur de gebruiker door naar de pagina waar hij / zij het formulier kan invullen
 
}

echo 'Wijzigingen zijn verwerkt.<br />';
mysql_close($con);

?>
</body>

</html>
maar update ook niet. En alleen maar omdat het na SET onder elkaar staat.
 
PHP:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">

<head>
<meta content="text/html; charset=windows-1252" http-equiv="Content-Type" />
<title>update</title>
</head>

<body>
<?php
$con = mysql_connect("localhost","root","padre");
if (!$con) {
  die('Could not connect: ' . mysql_error());
}
mysql_select_db("Veiligheidsanalyses", $con);

// Kijk eerst of het formulier verzonden is en de pagina niet rechtstreeks wordt aangeroepen
if ( $_SERVER['REQUEST_METHOD'] == 'POST' ) {
  // Formulier is verzonden, kijk of er in de belangrijke velden daadwerkelijk een waarde staat.
  if( trim( $_POST['IDLocatie'] ) != '' && trim( $_POST['Datum'] ) != '' && trim( $_POST['Ploeg'] ) != '' ) { 
   
    // Alle waarden zijn ingevuld, bouw de query op en voer hem uit. Wijzigingen worden uitgevoerd op basis van IDInvoer
    $query = "UPDATE tblInvoer SET
              IDLocatie = '" . mysql_real_escape_string( $_POST['IDLocatie'] ) . "',
              Datum = '" . mysql_real_escape_string( $_POST['Datum'] ) . "',
              Ploeg = '" . mysql_real_escape_string( $_POST['Ploeg'] ) . "'
              WHERE IDInvoer = '" . mysql_real_escape_string( $_POST['IDInvoer'] ) . "'";
    // IDLocatie = '" . mysql_real_escape_string( $_POST['IDLocatie'] ) . "' WHERE IDInvoer = '" . mysql_real_escape_string( $_POST['IDInvoer'] ) . "'"); // AND Ploeg = '" . mysql_real_escape_string( $_POST['Ploeg'] ) . "'" ); 
    $result = mysql_query($query);
    if(!$result) {
      echo 'Er is iets fout gegaan. MySQL zegt: '. mysql_error();
    } else {
      echo 'Wijzigingen zijn verwerkt!';
    }
  } else { // Niet alle velden zijn ingevuld
    echo 'Niet alle velden zijn correct ingevuld <br />'; // geef een boodschap dat niet alle velden zijn ingevuld
    echo '<a href="javascript:history.go(-1)">Probeer het opnieuw</a>'; // geef een link naar de vorige pagina
  }
} else { // het formulier is niet verstuurd
  header('Location: update.php'); // stuur de gebruiker door naar de pagina waar hij / zij het formulier kan invullen
}
mysql_close($con);
?>
</body>
</html>

Probeer dit eens.

In jouw vorige script werd namelijk altijd de melding "Wijzigingen verwerkt" weergegeven, ook als was het formulier niet eens juist ingevuld.

Verder heb ik een komma voor de WHERE verwijderd, wellicht dat die voor problemen zorgde.
 
Verder heb ik een komma voor de WHERE verwijderd, wellicht dat die voor problemen zorgde.
Het werkt. Dus die ene komma voor WHERE zorgde ervoor dat het niet werkte. Bedankt. :thumb:
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan