php-resource




Archiv verlassen und diese Seite im Standarddesign anzeigen :
update problem


 
joeCrack
16-11-2005, 04:31 
 
und zwar habe ich in meinem update script folgenden teil:
if ( isset ( $_POST['knopf'] ) && $_POST['knopf'] == 'update' )
{
if ( isset ( $_POST['projnr'] ) && $_POST['projnrnr'] != '')
{
$sql = "UPDATE sam_bestellung SET eqdes='".$_POST['eqdes']."',area='"
.$_POST['area']."',yard='".$_POST['yard']."',custrefname='".$_POST['custrefname']."',
designer='".$_POST['designer']."',shiptype='".$_POST['shiptype']."'
,shipclass='".$_POST['shipclass']."' WHERE projnr='" .$_POST['projnr']."'"
AND customernr='" .$_POST['customernr']."'"
AND groupp='" .$_POST['groupp']."'";

mysql_query ( $sql ) or die ( 'MySQL-Fehler: ' . mysql_error () );
}
Sorry ist ein bisschen chaos gepostet, aber sonst mekern wieder alle, das sie zwei Scollbalken haben =)
Das Problem ist in der WHERE Anweisung das AND ... wenn ich dort hinter dem WHERE nur eine VAriable nehem zB nur "projnr" dann funzt es - aber mit AND und mehreren gibt er mir nen PARSE mit unexpectet "=" aus. Hoffe mir kann jemand helfen.
joe

 
hoffmann-c
16-11-2005, 08:40 
 
wie du siehst, hat die Anzeige hier im Forum Syntaxhighlighting!

... Und schon was aufgefallen? ...

Vor dem ersten AND ist ein " zuviel! Du hast somit den Stringverketten unterbrochen

Am besten holst du dir eine Entwicklungsumgebung mit (guter)Syntaxhighlighting. :teach:

Das müsste dein Problem gewesen sein :cool:

 
hoffmann-c
16-11-2005, 08:42 
 
um dir genau zu zeigen was weg muss habe ich es mal rot eingefärbt



$sql = "UPDATE sam_bestellung SET eqdes='".$_POST['eqdes']."',area='"
.$_POST['area']."',yard='".$_POST['yard']."',custrefname='".$_POST['custrefname']."',
designer='".$_POST['designer']."',shiptype='".$_POST['shiptype']."'
,shipclass='".$_POST['shipclass']."' WHERE projnr='" .$_POST['projnr']."'" AND customernr='" .$_POST['customernr']."'" AND groupp='" .$_POST['groupp']."'";

 
joeCrack
16-11-2005, 09:32 
 
erstmal vielen Dank fuer die Hilfe.
ich hab die uberfluessigen "" beseitigt
hba aber immernoch einen Fehler in der selben Zeile ... also die Zeile mit dem UPDATE WHERE blah...
Ist es moeglich, das ich hier noch etwas aendern muss.
Ich hatte eben vorher nur ein indetifizierendes Value welches nicht geandert wurde und jetzt drei:

if ( isset ( $_POST['projnr'] ) && $_POST['projnrnr'] != '')

Sorrt ich steh heut n bisschen auf der Leitung:dontknow:

 
joeCrack
17-11-2005, 07:59 
 
also da das isset ja die existenz einer Variablen prueft, muessen doch jetzt eben drei variablen geprueft werden...
wie haenge ich die denn jetzt da mit dran ???
so gehts auf jeden fall nicht:
if ( isset ( $_POST['projnr'] ) && $_POST['projnrnr'] != '';$_POST['customernr'] && ..... )
plz help

 
Le_Cheffe
17-11-2005, 09:35 
 
Original geschrieben von joeCrack
also da das isset ja die existenz einer Variablen prueft, muessen doch jetzt eben drei variablen geprueft werden...
wie haenge ich die denn jetzt da mit dran ???
so gehts auf jeden fall nicht:
if ( isset ( $_POST['projnr'] ) && $_POST['projnrnr'] != '';$_POST['customernr'] && ..... )
plz help


if (isset(variable1) && isset(variable2) && isset(variable3)) {
// mach was
}


Meinst du sowas ?

Du kannst natürlich auch, wie du es oben gemacht hast, prüfen ob eine Variable ungleich "" ist ... einfach richtig klammern. Du musst die Bedingung(en) einer If Abfrage immer mit () umschließen, sonst geht da mal gar nichts. Also ... lieber eine zuviel, als, wie bei dir, eine zu wenig. :)

Gruß

Le Cheffe

 
joeCrack
17-11-2005, 10:08 
 
Hi und Danke fuer die Hilfe,
ich wurde es aber gerne so lassen wie ich es jetzt habe.
Habs jetzt so gemacht:
if ( isset ( $_POST['knopf'] ) && $_POST['knopf'] == 'update' )
{
if (isset ( $_POST['projnr'],$_POST['customernr'],$_POST['groupp'] )
&& $_POST['projnrnr'] && $_POST['customernr'] && $_POST['groupp'] != '')
{
sql = "UPDATE sam_bestellung SET eqdes='".$_POST['eqdes']."',area='"
.$_POST['area']."',yard='".$_POST['yard']."',hull='".$_POST['hull']."',contramount='".$_POST['contramount']."',
classification='".$_POST['classification']."',custrefnr='".$_POST['custrefnr']."'
,custrefname='".$_POST['custrefname']."',designer='".$_POST['designer']."',shiptype='".$_POST['shiptype']."'
,shipclass='".$_POST['shipclass']."' WHERE projnr='" .$_POST['projnr']."' AND customernr='" .
$_POST['customernr']."' AND groupp='" .$_POST['groupp']."';

mysql_query ( $sql ) or die ( 'MySQL-Fehler: ' . mysql_error () );
}

echo "Press F5 to see new table!";
}
Er gibt mir aber komischerwesie einen Parse in der Zeile mit der WHERE Anweisung: unexpected '=' in
Ich hbas so oft durchgesehen... die = sind alle richtig ??

 
wahsaga
17-11-2005, 10:53 
 
Das dein String nicht richtig abgeschlossen ist, solltest du doch schon am Syntaxhighlighting hier im Forum erkennen können -
wenn mysql_query ( $sql ) or die ( 'MySQL-Fehler: ' . mysql_error () ); in Rot da steht, stimmt doch wohl was nicht ...
sql = "... AND groupp='" .$_POST['groupp']."';
Da solltest du den String, den du mit " eröffnet hast, am Ende vielleicht auch wieder mit " abschließen.


Btw: Informiere dich über SQL-Injections, dein Code ist hochgradig riskant.

 
joeCrack
18-11-2005, 03:33 
 
HAI
ich habs jetzt anders geloest, weil ichs mit dem anderen script nicht hinbekommen habe. Ist diese Loesung jetzt auch unsicher, oder nicht?
also meine Loesung sieht jetzt so aus:
$params = array();
if ($_POST['eqdes'] != '') {
$params['eqdes'] = $_POST['eqdes'];
}
if ($_POST['area'] != '') {
$params['area'] = $_POST['area'];
}
if ($_POST['yard'] != ''){
$params['yard'] = $_POST['yard'];
}
if ($_POST['hull'] != ''){
$params['hull'] = $_POST['hull'];
}
if ($_POST['contramount'] != ''){
$params['contramount'] = $_POST['contramount'];
}
if ($_POST['classification'] != ''){
$params['classification'] = $_POST['classification'];
}
if ($_POST['custrefnr'] != ''){
$params['custrefnr'] = $_POST['custrefnr'];
}
if ($_POST['custrefname'] != ''){
$params['custrefname'] = $_POST['custrefname'];
}
if ($_POST['designer'] != ''){
$params['designer'] = $_POST['designer'];
}
if ($_POST['shiptype'] != ''){
$params['shiptype'] = $_POST['shiptype'];
}
if ($_POST['shipclass'] != ''){
$params['shipclass'] = $_POST['shipclass'];
}

if (($_POST['projnr'] && $_POST['customernr'] && $_POST['groupp']!= '') && (count($params))) {
$sql = "UPDATE sam_bestellung SET ";
foreach ($params as $key=>$val) {
$sql .= "$key = '$val', ";
}
$sql = substr($sql, 0, -2);
$sql .= "WHERE projnr ='" .$_POST['projnr']."' AND
customernr ='".$_POST['customernr']."' AND groupp ='" .$_POST['groupp']."'";
mysql_query($sql);
}


Alle Zeitangaben in WEZ +2. Es ist jetzt 11:56 Uhr.