Stephan: Warum geht das nicht?

Hi,

sieht jemand den Fehler? Das geht nicht :-(

----
<?php
$typ = $_POST['typ'];
$text = $_POST['maintext'];
$site = $_POST['site'];

echo "$typ $text $site";
$query = "UPDATE $typ SET text = '$text' WHERE site = '$site'";

if($insert = @mysql_query("$query")) {
echo '<p align="center">Der Eintrag wurde erfolgreich geändert!<br><br><a href="index.php"><- zurück</a></p>';

}else{
echo '<p align="center">Leider konnte der Eintrag nicht verändert werden. Bitte versuchen Sie es später noch einmal.<br><br><a href="index.php"><- zurück</a> </p>';
}

?>
----

Danke schonmal

Stephan

  1. Hallo Stephan,

    <?php
    $typ = $_POST['typ'];
    $text = $_POST['maintext'];
    $site = $_POST['site'];

    echo "$typ $text $site";
    $query = "UPDATE $typ SET text = '$text' WHERE site = '$site'";

    Boeser Fehler! Ganz boeser Fehler! Du möchtest *dringend*

    http://php.net/mysql_escape_string

    und

    http://php.net/mysql_real_escape_string

    Benutzen. Dringend!

    }else{
    echo '<p align="center">Leider konnte der Eintrag nicht verändert
    werden. Bitte versuchen Sie es später noch einmal.<br><br><a
    href="index.php"><- zurück</a> </p>';
    }

    Vielleicht hilft dir die Verwendung von

    http://php.net/mysql_error

    weiter.

    Grüße,
     CK

    --
    Der Verstand steht ueber allem. Was durch die Vorstellungskraft nicht geschaffen werden kann, existiert nicht.
    1. Hi,

      wo ist denn der Fehler? Ich kapiers nicht :-(

      Danke schonmal

      Stephan

      1. $typ = mysql_escape_string($typ);
        $text = mysql_escape_string($maintext);
        $site = mysql_escape_string($site);

        so? Geht immer noch nicht :-(

        Die Variablen werden aber bei der AUsgabe richtig in werten ausgegeben...

        Danke schonmal

        Stephan

        1. Hallo Stephan,

          $typ = mysql_escape_string($typ);
          $text = mysql_escape_string($maintext);
          $site = mysql_escape_string($site);

          Schon besser.

          so? Geht immer noch nicht :-(

          Wie gesagt. Benutze

          http://php.net/mysql_error

          Grüße,
           CK

          --
          Kommt ein Vektor zur Drogenberatung: "Hilfe, ich bin linear abhaengig!"
          1. Hi,

            geht Danke!

            Stephan

  2. Hallo,

    sieht jemand den Fehler? Das geht nicht :-(

    Die Fehlebeschreibung laesst leider sehr zu wuenschen uebrig.

    Ich vermute, dass immer der IF-Teil ausgefuehrt wird.

    (gekuerzt):

    if($insert = @mysql_query("$query"))
      { echo 'Der Eintrag wurde erfolgreich geändert!'; }
    else
      { echo 'Leider konnte der Eintrag nicht verändert werden.'; }

    Die _Zuweisung_
    $insert = @mysql_query("$query")
    wird vermutlich immer "TRUE" zurueckgeben,
    auch wenn die Datenbankabfrage erfolglos war.

    Wenn Du schon die Fehlermeldungen unterdrueckst,
    was ich fuer wenig schlau halte, dann lass Dir
    wenigstens im Misserfolgs-Fall die entsprechende
    MySQL-Fehlermeldung anzeigen.

    Versuch mal folgendes:

    $insert = @mysql_query("$query")
    if($insert)
       { echo 'Der Eintrag wurde erfolgreich geändert!'; }
    else
       { echo 'Leider konnte der Eintrag nicht verändert werden.'.mysql_error(); }

    Gruesse,

    Thomas

    P.S. Um zwei Dinge miteinander zu vergleichen (auf Gleichheit
    zu pruefen), muesste man den Operator == bzw. === nehmen.
    http://www.php.net/manual/de/language.operators.comparison.php

    --
    Bitte keine Mails mit Fachfragen - dafuer gibt es das Forum!
    Ich mag es, wenn URLs verlinkt sind (</faq/#Q-19>).
    Oft gestellte PHP-Fragen beantwortet die dclp-FAQ bestens: http://www.dclp-faq.de/
    1. Hallo Thomas,

      (gekuerzt):

      if($insert = @mysql_query("$query"))
        { echo 'Der Eintrag wurde erfolgreich geändert!'; }
      else
        { echo 'Leider konnte der Eintrag nicht verändert werden.'; }

      Die _Zuweisung_
      $insert = @mysql_query("$query")
      wird vermutlich immer "TRUE" zurueckgeben,
      auch wenn die Datenbankabfrage erfolglos war.

      PHP ist nicht C. In PHP ist der Rückgabewert einer Zuweisung der
      zugewiesene Wert. Aus

      http://www.php.net/manual/en/language.expressions.php

      zitiert:

      |So far, users of PHP/FI 2 shouldn't feel any change. However, PHP
      |takes expressions much further, in the same way many other
      |languages do. PHP is an expression-oriented language, in the sense
      |that almost everything is an expression. Consider the example we've
      |already dealt with, '$a = 5'. It's easy to see that there are two
      |values involved here, the value of the integer constant '5', and
      |the value of $a which is being updated to 5 as well. But the truth
      |is that there's one additional value involved here, and that's the
      |value of the assignment itself. The assignment itself evaluates
      |to the assigned value, in this case 5. In practice, it means
      |that '$a = 5', regardless of what it does, is an expression with
      |the value 5. Thus, writing something like '$b = ($a = 5)' is like
      |writing '$a = 5; $b = 5;' (a semicolon marks the end of a
      |statement). Since assignments are parsed in a right to left order,
      |you can also write '$b = $a = 5'.

      Bestätigt durch:

      http://forum.de.selfhtml.org/test.php
         http://forum.de.selfhtml.org/test.phps

      Grüße,
       CK

      --
      <zentrum> wie war noch mal die option in make.conf fuer das benutzen von pipes um das compile zu beschluenigen?
      <CK1> CFLAGS="-pipe"
      <torsten> Oder man frage einen Gentooer seiner Wahl, wie man 2 km Compilerswitches fuer seine CPU hinbekommt ;)
      1. Hallo Christian,

        PHP ist nicht C. In PHP ist der Rückgabewert einer Zuweisung der
        zugewiesene Wert.

        In C auch. :-)

        -------------------------------------------------------------
        bash-2.05b$ cat zuweisung.c
        #include <stdio.h>

        int main (int argc, char **argv) {
          int a;

        if (a = argc - 1) {
            printf ("%d argumente uebergeben!\n", a);
          } else {
            printf ("keine argumente uebergeben!\n");
          }

        return 0;
        }
        bash-2.05b$ gcc -Wall -o zuweisung zuweisung.c
        zuweisung.c: In function `main':
        zuweisung.c:6: warning: suggest parentheses around assignment used as truth value
        bash-2.05b$ ./zuweisung
        keine argumente uebergeben!
        bash-2.05b$ ./zuweisung 1
        1 argumente uebergeben!
        bash-2.05b$ ./zuweisung 1 2
        2 argumente uebergeben!
        bash-2.05b$
        -------------------------------------------------------------

        Viele Grüße,
        Christian

        1. Hallo Christian,

          PHP ist nicht C. In PHP ist der Rückgabewert einer Zuweisung der
          zugewiesene Wert.

          In C auch. :-)

          Stimmt. Mentaler freudscher Versprecher. Als ich das schrieb,
          dachte ich an ein Konstrukt wie dieses:

          if(a = funk() == 10)

          im Gegensatz zu

          if((a = funk()) == 10)

          Grüße,
           CK

          --
          Der Mund ist das Portal zum Unglück.