MySQL tritt mich mal wieder

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

  • MySQL tritt mich mal wieder

    Hallo Leute !

    Ich grüble jezz schon seit längerer Zeit an einem Problem, das sich einfach nicht lösen lassen will.

    Und zwar sollen 2 Variabelen miteinander verrechnet werden und das Ergebnis dann in eine entsprechende DB-Spalte eingetragen werden. Hier mal der Code:

    PHP-Code:

    // Neue Anzahl Gebäude auslesen

    $abfrage_anzahl_rathaus = ("SELECT anzahl_rathaus FROM bauwerke WHERE id = $ids");
    $ergebnis_anzahl_rathaus mysql_query($abfrage_anzahl_rathaus) or
     die (
    'Ungültige Abfrage:9'mysql_error());
    if (!
    $ergebnis_anzahl_rathaus)
    {
    die(
    'Ungültige Abfrage:10 ' mysql_error());
    }

    while(
    $row mysql_fetch_object($ergebnis_anzahl_rathaus))
        {
        
    $anzahl_rathaus_ges $row->anzahl_rathaus;
        echo 
    "Anzahl Rathäuser $anzahl_rathaus_ges<br />";
        } 
        
        
    $multiplikator_rathaus 5;    
    $ausbildungsgeschwindigkeit_arbeiter
     
    "$anzahl_rathaus_ges"$multiplikator_rathaus";

    echo  
    "ausbildungsges -> $ausbildungsgeschwindigkeit_arbeiter
    <br />"
    ;

    // Ausbildungsgeschwindigkeit Arbeiter eintragen 

    $sql =
     (
    "UPDATE einheiten SET ausbildungsgeschwindigkeit_arbeiter = 
    '
    $ausbildungsgeschwindigkeit_arbeiter' WHERE id = $ids")
     or die (
    'Ungültige Abfrage:11'mysql_error());

    echo 
    "$sql <br />";

    $sql2 =mysql_query($sql) or die ('Ungültige Abfrage:12'mysql_error()); 
    Ausgegeben wird folgender Text:

    Anzahl Rathäuser 9
    ausbildungsges -> 45
    UPDATE einheiten SET ausbildungsgeschwindigkeit_arbeiter = '45' WHERE id = 1

    Dazu sollte man vielleicht noch sagen, das $ids alle ID´s in der Tabelle nacheinander beinhaltet. Leider wird trotz richtiger Anzeige des querys nichts eingetragen. Woran kann das liegen ?

    Danke schonmal vorab !

  • #2
    Gibt es einen Datensatz mit id = 1? Wenn ja, woher weißt du das, wo hast du ihn zuletzt gesehen?

    Woher weißt du, dass dieser Datensatz tatsächlich nicht verändert wurde, wie hast du das geprüft?

    Was passiert, wenn du die ausgegebene Query mit phpMyAdmin absetzt?


    Übrigens kannst du dir
    or die ('Ungültige Abfrage:11'. mysql_error());
    sparen. Du formst da nur einen String, ... nix mysql_error.
    Zuletzt geändert von onemorenerd; 05.12.2005, 08:19.

    Kommentar


    • #3
      Übrigens kann man mit MYSQL auch prima rechnen, dafür braucht man kein PHP. Und wenn man die beiden Tabellen JOINED, dann kann man das Ganze in einer Query erledigen:
      Code:
      UPDATE einheiten 
      LEFT JOIN bauwerke USING(id)
      SET einheiten.ausbildungsgeschwindigkeit_arbeiter
       = $multiplikator_rathaus * bauwerke.anzahl_rathaus WHERE einheiten.id = $ids
      Die zehn Gebote sind deswegen so kurz und logisch, weil sie ohne Mitwirkung von Juristen zustande gekommen sind. (Charles de Gaulle)

      Kommentar


      • #4
        Ich würde mal sagen ... es tritt Dich nicht ... es tritt zurück ... !
        carpe noctem

        [color=blue]Bitte keine Fragen per EMail ... im Forum haben alle was davon ... und ich beantworte EMail-Fragen von Foren-Mitgliedern in der Regel eh nicht![/color]
        [color=red]Hinweis: Ich bin weder Mitglied noch Angestellter von ebiz-consult! Alles was ich hier von mir gebe tue ich in eigener Verantwortung![/color]

        Kommentar


        • #5
          So erstmal dankeschön für die schnelle Rückmeldung.
          Also:

          - Der Datensatz exisitiert sicher und wird das query direkt in PHP MyAdmin eingebeben funktioniert es auch problemlos.

          - Ich habe mich ein bisschen getäuscht, es wird nicht NICHTS eingetragen sondern der Wert 5 statt der errechneten 45.
          Allerdings muss man dazusagen, dass der Code den ich oben gepostet habe in einem längeren Script das auch Datenbankoperationen für mehrere Datensätze enthält (also alle Felder mit einem Eintrag in der ID Spalte).
          Normalerweise wird für jede Id ein Wert berechnet der eingetragen werden soll. Halte ich das allgemein, also für jede ID den entsprechenden Wert, wird aber 5 statt 45 eingetragen. Spreche ich die einzelnen Felder direkt an (WHERE ID="1") dann funktioniert es reibunglos :|

          (ich kenn mich mit MySQL nich so gut aus, daher rechne ich lieber mit PHP)
          Zuletzt geändert von Perceptor; 05.12.2005, 15:34.

          Kommentar


          • #6
            Hast Du meinen JOIN mal im phpMyAdmin probiert?
            Damit schliesst Du immerhin einige Fehlerquellen aus!
            Wenn z.B. Dein Select aus irgendeinem Grund fehlschlägt bzw. falsche Werte liefert. Ausserdem stellst Du so nur EINE statt ZWEI Abfragen, was den Mysql-Server entlastet.
            Die zehn Gebote sind deswegen so kurz und logisch, weil sie ohne Mitwirkung von Juristen zustande gekommen sind. (Charles de Gaulle)

            Kommentar


            • #7
              Also ich hab dein Join mal anstatt meiner Abfrage ins Script eingebaut, (in PHP Admin ging nich, weiler dort die Variablen, welche ja vorher im Script definiert werden, nicht kannte) allerdings mit dem gleichen Ergebnis wie bisher. Im Feld steht eine 5 statt der gewünschten 45

              Kommentar


              • #8
                Original geschrieben von Perceptor
                (in PHP Admin ging nich, weiler dort die Variablen, welche ja vorher im Script definiert werden, nicht kannte)
                Dann ersetz die Variable doch mal durch 5 bzw. 1 für die id und probier nochmal im PMA.
                Wenn die Query richtig ausgegeben wird und es keinen mysqlerror gibt sowie die ID stimmt, sollte auch das richtige rauskommen. In aller Regel funktionieren PHP und MySQL und der Fehler liegt woanders.
                Die zehn Gebote sind deswegen so kurz und logisch, weil sie ohne Mitwirkung von Juristen zustande gekommen sind. (Charles de Gaulle)

                Kommentar


                • #9
                  Hab noch ein bisschem experimentiert und der Fehler lag tatsächlich an anderer Stelle, also weiter vorne im Script. Wieso es genau nich getan hat kann ich mir zwar nicht erklären aber jetzt funktionierts auf jeden Fall !

                  Vielen Dank an alle lieben Helfer =)

                  Kommentar

                  Lädt...
                  X