update problem

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • update problem

    und zwar habe ich in meinem update script folgenden teil:
    PHP-Code:
    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
    Zuletzt geändert von joeCrack; 16.11.2005, 02:34.
    Zwei Dinge sind unendlich: das Universum und die menschliche Dummheit;
    aber bei dem Universum bin ich mir noch nicht ganz sicher. (Albert Einstein)

  • #2
    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.

    Das müsste dein Problem gewesen sein
    Beziehung? Klar habe ich mit Beziehungen zu tun ... ich bin Datenbankprogrammierer :-D

    Kommentar


    • #3
      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']."'[COLOR=red]"[/COLOR] AND customernr='" .$_POST['customernr']."'[COLOR=red]"[/COLOR] AND groupp='" .$_POST['groupp']."'";
      Beziehung? Klar habe ich mit Beziehungen zu tun ... ich bin Datenbankprogrammierer :-D

      Kommentar


      • #4
        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:
        PHP-Code:
        if ( isset ( $_POST['projnr'] ) && $_POST['projnrnr'] != ''
        Sorrt ich steh heut n bisschen auf der Leitung
        Zuletzt geändert von joeCrack; 17.11.2005, 05:54.
        Zwei Dinge sind unendlich: das Universum und die menschliche Dummheit;
        aber bei dem Universum bin ich mir noch nicht ganz sicher. (Albert Einstein)

        Kommentar


        • #5
          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:
          PHP-Code:
          if ( isset ( $_POST['projnr'] ) && $_POST['projnrnr'] != '';$_POST['customernr'] && ..... ) 
          plz help
          Zwei Dinge sind unendlich: das Universum und die menschliche Dummheit;
          aber bei dem Universum bin ich mir noch nicht ganz sicher. (Albert Einstein)

          Kommentar


          • #6
            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:
            PHP-Code:
            if ( isset ( $_POST['projnr'] ) && $_POST['projnrnr'] != '';$_POST['customernr'] && ..... ) 
            plz help
            PHP-Code:
            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

            Kommentar


            • #7
              Hi und Danke fuer die Hilfe,
              ich wurde es aber gerne so lassen wie ich es jetzt habe.
              Habs jetzt so gemacht:
              PHP-Code:
              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:[COLOR=crimson] unexpected '=' in[/COLOR]
              Ich hbas so oft durchgesehen... die = sind alle richtig ??
              Zwei Dinge sind unendlich: das Universum und die menschliche Dummheit;
              aber bei dem Universum bin ich mir noch nicht ganz sicher. (Albert Einstein)

              Kommentar


              • #8
                Das dein String nicht richtig abgeschlossen ist, solltest du doch schon am Syntaxhighlighting hier im Forum erkennen können -
                wenn [color=red]mysql_query ( $sql ) or die ( 'MySQL-Fehler: ' . mysql_error () );[/color] in Rot da steht, stimmt doch wohl was nicht ...
                PHP-Code:
                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.
                I don't believe in rebirth. Actually, I never did in my whole lives.

                Kommentar


                • #9
                  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:
                  PHP-Code:
                  $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($sql0, -2);
                     
                  $sql .= "WHERE projnr ='" .$_POST['projnr']."' AND 
                  customernr ='"
                  .$_POST['customernr']."' AND groupp ='" .$_POST['groupp']."'";
                     
                  mysql_query($sql);

                  Zwei Dinge sind unendlich: das Universum und die menschliche Dummheit;
                  aber bei dem Universum bin ich mir noch nicht ganz sicher. (Albert Einstein)

                  Kommentar

                  Lädt...
                  X