db ändert nichts

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

  • db ändert nichts

    Hallo, ich habe ein Problem, und zwar kann ich nichts aus der db aktuallisieren, aber das komische ist, dass es schon updaten kann, wenn ich den update befehl vor dem "while" command machen, aber alle ipdate/eintrag o.ä. befehle, die nach while kommen, werden ignoriert, woran kann das liegen?

    Fehlermeldungen gibt es keine, und hier die SQL Tabelle:



    und hier mein code:

    PHP-Code:
    <?php

    include("../dbconnect.php");

    $abfrageee "SELECT * FROM ge_item ORDER BY id";
    $ergebnisss mysql_query($abfrageee);

    while(
    $row mysql_fetch_object($ergebnisss))
        {
        
    $id $row->id;
        
    $item_id $row->item_id;
        
    $item_name $row->item_name;


    $url "http://itemdb-rs.runescape.com/l=1/viewitem.ws?obj="."$item_id";;

    $test file_get_contents($url);

    $start '<b>Marktpreis:</b>';
    $ende '</span>';
    if ( (
    $posStart strpos($test$start)) !== false)
    {
    if ( (
    $posEnd strpos($test$ende$posStart+strlen($start))) !== false)
    $preis substr($test$posStart+strlen($start),$posEnd-($posStart+strlen($start)));
    }


    $preis $preis 1000;

    $aendern "UPDATE ge_item Set
    item_price = '
    $preis' WHERE id = '$id'";
    $update mysql_query($aendern);


    echo 
    "($id"."->"."$item_id)$item_name $preis GP<br>";

    }

    echo 
    "-done-";
    Eigentlich sollte das script auf die $url gehen, und dort den Wert auslesen, welcher nach "<b>Marktpreis:</b>" folgt, das geht so weit auch, es liest alles perfekt aus, und kann es auch darstellen, nur es speichert es nicht in der db. Hier das, was es richtigerweise ausgibt:

    (1->2505)Blaudrachenleder 2160 GP
    (2->1745)Gründrachenleder 1794 GP
    (3->2499) Blaudrachen-Harnisch 5370 GP
    (4->1135) Gründrachen-Harnisch 4444 GP
    -done-
    Zuletzt geändert von Zipper5004; 25.07.2008, 12:07.

  • #2
    http://www.php-resource.de/forum/sho...threadid=47906

    Kommentar


    • #3
      so besser?

      Kommentar


      • #4
        Nein, lies halt die Regeln nochmals
        Gruss
        H2O

        Kommentar


        • #5
          so, alles in [PHP], war das gemeint?

          Kommentar


          • #6
            Das war auch gemeint. Und error_reporting(). Und mysql_error(). Und das Einrücken des Codes. Und die Ausgabe der evaluierten Abfrage.
            Wenn man das berücksichtigt, dann dürfte das etwa so aussehen:
            PHP-Code:
            error_reporting(E_ALL);
            include(
            "../dbconnect.php");

            $abfrageee "
                SELECT
                    id,
                    item_id,
                    item_name
                FROM 
                    ge_item 
                ORDER BY 
                    id"
            ;
            $ergebnisss mysql_query($abfrageee) or exit(mysql_error());

            while(
            $row mysql_fetch_object($ergebnisss)){
                
            $id $row->id;
                
            $item_id $row->item_id;
                
            $item_name $row->item_name;

                
            $url "http://itemdb-rs.runescape.com/l=1/viewitem.ws?obj=$item_id";

                
            $test file_get_contents($url);

                
            $start '#<b>Marktpreis:</b>\s*(\d+\.?\d*)#Ums';
                if (
            preg_match($start$test$found)){
                    
            $preis $found[1];
                }
                else{
                    
            $preis 0;
                }
                
            $preis $preis 1000;

                
            $aendern "UPDATE ge_item
                            SET    item_price = 
            $preis 
                            WHERE id = 
            $id";
                echo 
            "$aendern<br />";            // TESTAUSGABE
                
            $update mysql_query($aendern) or exit(mysql_error());

                echo 
            "($id"->" "$item_id)$item_name $preis GP<br />";
            }
            echo 
            "-done-"
            und wahrscheinlich die entscheidenden Hinweise geben, warum es nicht funktioniert. Mindestens hast du dann aber die Abfrage, die du in irgendeinem SQL-Monitor testen kannst.
            Zuletzt geändert von H2O; 29.07.2008, 08:58.
            Gruss
            H2O

            Kommentar


            • #7
              UPDATE ge_item SET item_price = 0 WHERE id = 1
              MySQL server has gone away
              Zuletzt geändert von Zipper5004; 26.07.2008, 21:03.

              Kommentar


              • #8
                bump

                Kommentar


                • #9
                  Falls das die einzigen Meldungen sind, dann zeig mal, was in der "../dbconnect.php" steht, es scheint hier ein Verbindungsproblem zu geben (falls der MySQL-Server überhaupt aktiv ist).
                  Und dann würde ich jeweils auch noch überprüfen, ob es die entsprechende Seite, die du abrufst, überhaupt gibt. Ich weiss, dass z.B. diejenige mit der ID 1 nicht existiert.
                  Gruss
                  H2O

                  Kommentar


                  • #10
                    dbconnect.php
                    PHP-Code:
                    <?php
                    $host 
                    "localhost";     //Host der Datenbank
                    $user "phost92191";          // Benutzername
                    $password "*******";  //Passwort
                    $datenbank "phost92191";       //Datenbankname

                    mysql_connect($host$user$password);  // Connect zur DB
                    mysql_select_db($datenbank);             // Auswaehlen der DB
                    ?>
                    die selbe datei nutze ich auch bei anderen funktionen, wo es einwandfrei funktioniert. hab mal meine fehlermeldung gegoogled und da stand häufig was mit timeout, allerdings was mit 8h.

                    Kann es sein, dass es daher nicht funktioniert, weil die seite ca 2min zum laden braucht? (der server, wo ich die daten herhohle ist recht langsam...)

                    naja und klar gibts einen eintrag mit der id, siehe datenbank tabelle im ersten post?

                    Kommentar


                    • #11
                      Die Abfrage auf mysql_error() gilt auch für das Verbinden und das Auswählen der Datenbank. Überprüfe also, ob die Verbindung überhaupt existiert.

                      Und ich habe nicht gesagt, dass der Eintrag mit der ID 1 nicht in deiner DB existiert, sondern es gibt keinen Gegenstand mit der ID 1 auf der Seite, Seite, wo du die Daten holen willst
                      Gruss
                      H2O

                      Kommentar


                      • #12
                        er sucht auf der seite auch den eintrag mit $item_id, und den gibts auf jeden fall, zumal er ja die richtigen werte auch ausliest.

                        Die Abfrage auf mysql_error() gilt auch für das Verbinden und das Auswählen der Datenbank. Überprüfe also, ob die Verbindung überhaupt existiert.
                        aber ich verwende die selbe dbconnect datei auch für andere seiten, auf dem gleichen server, muss es dann nicht richtig sein?

                        Kommentar


                        • #13
                          Original geschrieben von Zipper5004
                          er sucht auf der seite auch den eintrag mit $item_id
                          Ich weiss einfach, dass zur Seite mit item_id 1 nichts gefunden wird (dargestellt wird sie schon). Du kannst das ja ganz einfach überprüfen, indem du sie mal manuell aufrufst. Aber das war ja auch nur ein Hinweis und hat nichts mit dem Problem zu tun.

                          Original geschrieben von Zipper5004
                          aber ich verwende die selbe dbconnect datei auch für andere seiten, auf dem gleichen server, muss es dann nicht richtig sein? [/B]
                          Die Fehlerbehandlung sollte trotzdem immer vorhanden sein. Aber du kannst ja jetzt zuerst eine Antwort schreiben, oder das ausprobieren. Ich glaube das Zweite wäre schneller gemacht.
                          Gruss
                          H2O

                          Kommentar


                          • #14
                            sorry, ich hätte nicht so doof gefragt, wenn ich gewusst hätte, was du meinst, bzw wie man das testet, mein fehler ich hätte mich besser ausdrücken sollen.

                            http://itemdb-rs.runescape.com/l=1/viewitem.ws?obj=2505

                            Seite existiert, und wird auch mit inhalt gefüllt

                            Kommentar

                            Lädt...
                            X