anonymous24: Problem mit php/mysql

Der Code ist simpel, die aufgabe auch, dennoch stellt sich das gewünschte ergebnis nicht ein. Hab ich nen fehler gemacht? irgentetwas das ich nicht sehe? Grundsätzlich lief das auf einem meiner webspaces problemlos (mysql 5.0.32) auf dem space wo ich es aber haben möchte funktioniert es nicht (mysql 4.1.22)Versionsbedingt? Oder ist mir zu so später Stunde ein fehler unterlaufen den ich gerade nicht sehe?
Dankbar für Hilfe.

  
<?php  
  mysql_connect ("host", "user",  
"password") or die('Cannot connect to the database because: ' . mysql_error());  
mysql_select_db ("database");  
?>  
  
<html><head></head>  
<body>  
<form method="post">  
 <p class="style1">Change adress</p>  
 <p><span class="style1">key:</span><br>  
      <input name="key1" type="text" size="65" value="your key">  
      <br>  
       <span class="style1">adress:</span><br>  
      <input name="adress1" type="text" size="65" value="new adress">  
      <input type="submit" value="Send"> <INPUT type="reset">  
  
      <br>  
</form>  
</body>  
</html>  
  
  
<?php  
  $aendern = "UPDATE table SET adress = '$adress1' WHERE key = '$key1'";  
  $update = mysql_query($aendern);  
?>  

  1. ok, hab das Problem eingegrenzt, es liegt beim transfer der Variablen von html zu php. Was kann ich tun?

    Kann ich das form element für die Benutzereingabe nicht auch irgentwie in php erstellen, und so den tranfer überflüssig machen?

  2. Hello,

    Der Code ist simpel, die aufgabe auch, dennoch stellt sich das gewünschte ergebnis nicht ein. Hab ich nen fehler gemacht? irgentetwas das ich nicht sehe? Grundsätzlich lief das auf einem meiner webspaces problemlos (mysql 5.0.32) auf dem space wo ich es aber haben möchte funktioniert es nicht (mysql 4.1.22)Versionsbedingt? Oder ist mir zu so später Stunde ein fehler unterlaufen den ich gerade nicht sehe?
    Dankbar für Hilfe.

    <?php
      mysql_connect ("host", "user",
    "password") or die('Cannot connect to the database because: ' . mysql_error());
    mysql_select_db ("database");
    ?>

    <html><head></head>
    <body>
    <form method="post">
    <p class="style1">Change adress</p>
    <p><span class="style1">key:</span><br>
          <input name="key1" type="text" size="65" value="your key">
          <br>
           <span class="style1">adress:</span><br>
          <input name="adress1" type="text" size="65" value="new adress">
          <input type="submit" value="Send"> <INPUT type="reset">

    <br>
    </form>
    </body>
    </html>

    <?php
      $aendern = "UPDATE table SET adress = '$adress1' WHERE key = '$key1'";
      $update = mysql_query($aendern);
    ?>

      
      
    
    > ok, hab das Problem eingegrenzt, es liegt beim transfer der Variablen von html zu php. Was kann ich tun?  
    >   
    > Kann ich das form element für die Benutzereingabe nicht auch irgentwie in php erstellen, und so den tranfer überflüssig machen?  
      
    Bahnhof?  
    Was ist denn eigentlich Deine Frage?  
    Welche Funktion möchtest Du erreichen und woran hast Du festgestellt, dass sie nicht erfüllt wird?  
      
    Das obige Script deutet darauf hin, dass Dir noch nicht klar ist, wie ein Client-Server Dialog aussieht. Hier würde auf jeden Fall bei jedem Durchlauf (Request) ein Update versucht werden. Erwünscht ist dies aber ganz bestimmt erst, wenn Du Daten eingegeben und diese per Post-Request an den Server gesendet hast.  
      
      
    
    > ~~~php
      
    <?php  
       $errormsg = false;  
      
       if($con = mysql_connect ("host", "user", "password"))  
       {  
          if (mysql_select_db ("database"))  
          {  
              if (isset($_POST['btn']['update']))  
              {  
                 $aendern =  
                     "UPDATE table ".  
                     " SET adress = '" . mysql_real_escape_string($adress1, $con) . "'".  
                     " WHERE key = '". mysql_real_escape_string($key1,$con) . "'";  
      
                 if (!$update = mysql_query($aendern))  
                 {  
                     errormsg = 'Fehler beim Update: '.mysql_error($con);  
                 }  
              }  
          }  
          else  
          {  
              "$errormsg = "<p>Kann Datenbank nicht öffnen</p>";  
          }  
       }  
       else  
       {  
           $errormsg = 'Cannot connect to the database because: ' . mysql_error());  
       }  
    ?>  
      
      
      
    
    >   
    > <html><head></head>  
    > <body>  
    
      <?php echo $errormsg; ?>  
      <form method="post">  
    
    >  <p class="style1">Change adress</p>  
    >  <p><span class="style1">key:</span><br>  
    >       <input name="key1" type="text" size="65" value="your key">  
    >       <br>  
    >        <span class="style1">adress:</span><br>  
    >       <input name="adress1" type="text" size="65" value="new adress">  
    
            <input name="btn[update]" type="submit" value="Send"> <INPUT type="reset">  
    
    >   
    >       <br>  
    > </form>  
    > </body>  
    > </html>  
    >   
    >   
    > <?php  
    > 
    
    

    Liebe Grüße aus Syburg bei Dortmund

    Tom vom Berg

    --
    Nur selber lernen macht schlau
    http://bergpost.annerschbarrich.de
  3. Hi,

    <input name="key1" type="text" size="65" value="your key">
      $aendern = "UPDATE table SET adress = '$adress1' WHERE key = '$key1'";

    Du verläßt Dich auf die (mittlerweile zumindest per Default abgeschaltete) PHP-Magie, daß HTTP-Parameter als Variablen zur Verfügung gestellt werden.

    Greife über $_POST auf die Parameter zu.

    cu,
    Andreas

    --
    Warum nennt sich Andreas hier MudGuard?
    O o ostern ...
    Fachfragen unaufgefordert per E-Mail halte ich für unverschämt und werde entsprechende E-Mails nicht beantworten. Für Fachfragen ist das Forum da.
    1. ich nehme an das da das Problem liegt,.
      $_POST[adress] wäre dann der ugriff oder?

      1. Hi,

        ich nehme an das da das Problem liegt,.
        $_POST[adress] wäre dann der ugriff oder?

        Wenn Du eine Konstante namens adress definiert hast. Sonst verläßt Du Dich schon wieder auf die Magie von PHP.
        Gib also lieber einen String an.

        (Soll 'adress' eigentlich deutsch oder englisch sein? Im ersten Fall fehlt ein 'e', im zweiten ein 'd')

        cu,
        Andreas

        --
        Warum nennt sich Andreas hier MudGuard?
        O o ostern ...
        Fachfragen unaufgefordert per E-Mail halte ich für unverschämt und werde entsprechende E-Mails nicht beantworten. Für Fachfragen ist das Forum da.
        1. Hi,

          ich nehme an das da das Problem liegt,.
          $_POST[adress] wäre dann der ugriff oder?

          Wenn Du eine Konstante namens adress definiert hast. Sonst verläßt Du Dich schon wieder auf die Magie von PHP.
          Gib also lieber einen String an.

          wie würde so ein String denn dann aussehen?

          (Soll 'adress' eigentlich deutsch oder englisch sein? Im ersten Fall fehlt ein 'e', im zweiten ein 'd')

          sollte english sein.

          1. Mahlzeit anonymous24,

            $_POST[adress] wäre dann der ugriff oder?

            Wenn Du eine Konstante namens adress definiert hast. Sonst verläßt Du Dich schon wieder auf die Magie von PHP.
            Gib also lieber einen String an.

            wie würde so ein String denn dann aussehen?

            So wie ein String in PHP normalerweise konstruiert wird:

            $_POST['address']

            Darüber hinaus würde ich Dir DRINGENDST raten, Dich zum Thema "SQL Injection" zu informieren und sämtliche Benutzereingaben dem Kontext entsprechend zu behandeln (in diesem Fall mittels mysql_real_escape_string()), bevor Du sie ungeprüft in irgendwelchen Datenbankabfragen verwurstest.

            Merke: ALL INPUT IS EVIL!

            (Soll 'adress' eigentlich deutsch oder englisch sein? Im ersten Fall fehlt ein 'e', im zweiten ein 'd')
            sollte english sein.

            Dann tu Dir selbst einen Gefallen und bleibe konsequent bei einer Sprache (und benenne die Variablen dann auch korrekt) ... ansonsten steigst Du spätestens bei der ersten Änderung nach einem Vierteljahr selbst nicht mehr durch.

            MfG,
            EKKi

            --
            sh:( fo:| ch:? rl:( br:> n4:~ ie:% mo:} va:) de:] zu:) fl:{ ss:) ls:& js:|
            1. Um die sprache macht euch keine Sorgen, der fehler ist einfach gestern Nacht beim übersetzen pssiert.
              Ich habe aber immernoch das Problem, dass die durch den Benutzer eingegebene Information nicht von php als entsprechende variable erkannt wird und nicht übermittelt wird. Könnte jemand nochmal erlätern wie ich die eingabe aus der Form in PHP weiterverwenden kann.

              Übrigens vielen dank schonmal für die bisherige Hilfe, an alle die sich bemüht haben, auch wenn sie das Problem noch nicht gelößt hat, bezw. ich dadurch immernoch nicht in der Lage war, hat es doch seinen zweg nicht ganz verfehlt und ich habe das ein oder andere gelernt.

              1. Mahlzeit anonymous24,

                Ich habe aber immernoch das Problem, dass die durch den Benutzer eingegebene Information nicht von php als entsprechende variable erkannt wird und nicht übermittelt wird.

                Sicher? Wie kommst Du darauf? Warum Du nicht einfach $adress1 und $key1 verwenden kannst/solltest, hat MudGuard doch bereits erklärt.

                Was steht im Array $_POST? Lass es Dir doch einfach mal z.B. mittels var_dump() ausgeben ...

                Könnte jemand nochmal erlätern wie ich die eingabe aus der Form in PHP weiterverwenden kann.

                Indem Du das superglobale Array $_POST richtig verwendest.

                Übrigens vielen dank schonmal für die bisherige Hilfe, an alle die sich bemüht haben, auch wenn sie das Problem noch nicht gelößt hat, bezw. ich dadurch immernoch nicht in der Lage war, hat es doch seinen zweg nicht ganz verfehlt und ich habe das ein oder andere gelernt.

                So soll es sein ... :-)

                MfG,
                EKKi

                --
                sh:( fo:| ch:? rl:( br:> n4:~ ie:% mo:} va:) de:] zu:) fl:{ ss:) ls:& js:|
                1. Hab es nun unter einsatz des Strings doch geschafft, auch wenn ich nicht weiß warum es zuvor unter einsatz des strings nicht funktionierte. Hab wahrscheinlich nen zeichen vergessen oder sowas.

                  Eine frage noch, welche möglichketien habe ich die eingabe zu beschränken, sagen wir mal es sollten nur Links erlaubt sein, gibts es da ne möglichkeit das festzulegen? Ich hab da irgentwas im hinterkopf das ich solche vorgaben direkt im form prüfen kann.

                  1. Mahlzeit anonymous24,

                    Hab es nun unter einsatz des Strings doch geschafft, auch wenn ich nicht weiß warum es zuvor unter einsatz des strings nicht funktionierte.

                    ???

                    Mein Kandidat für den sinnlosesten Satz des Tages ... aber echt ... :-)

                    Eine frage noch, welche möglichketien habe ich die eingabe zu beschränken, sagen wir mal es sollten nur Links erlaubt sein, gibts es da ne möglichkeit das festzulegen? Ich hab da irgentwas im hinterkopf das ich solche vorgaben direkt im form prüfen kann.

                    Nein. Jedenfalls nicht sinnvoll. Eingaben, die der Benutzer (oder irgendein automatisches Programm) macht, solltest Du IMMER auf dem Server prüfen. D.h. das Skript, das das Formular "entgegennimmt", MUSS jedes Feld auf Gültigkeit der Werte prüfen.

                    Was Du ZUSÄTZLICH machen kannst, ist eine Prüfung mittels Javascript. Da diese jedoch nur im Browser abläuft (wenn überhaupt - es gibt genügend Leute, die Javascript nicht aktiviert haben) und dadurch manipulierbar ist bzw. aus verschiedenen Gründen evtl. gar nicht zum Zuge kommt, wäre das lediglich eine optionale Funktionalität, um dem Benutzer die Eingabe zu erleichtern (er kann sofort erkennen, ob das, was er eingegeben hat, vom Server akzeptiert würde - bevor er das Formular abschickt).

                    MfG,
                    EKKi

                    --
                    sh:( fo:| ch:? rl:( br:> n4:~ ie:% mo:} va:) de:] zu:) fl:{ ss:) ls:& js:|