Ankündigung

Einklappen
Keine Ankündigung bisher.

php script erfolgreich im xampp aber auf webserver nicht

Einklappen

Neue Werbung 2019

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

  • php script erfolgreich im xampp aber auf webserver nicht

    Moin Ihr lieben,

    ich bin neu hier und hoffe Ihr könnt mir Helfen. Ich habe folgendes Problem:

    Ich möchte mit einem PHP-Script Werte in einer Datenbank ändern. Zu Testzwecken habe ich in Xampp auf dem Rechner eine Datenbank vom Webserver importiert. Das Script ausgeführt und siehe da es macht was es soll. Die Werte werden sinngemäß geändert. Sobald ich das Script auf den Webserver Hochlade und ausführe passiert folgendes: Script meldet das alles erledigt sei aber eine Überprüfung der Datenbank bringt die Ernüchterung. Nichts ändert sich....ich werd noch Wahnsinnig Einer von euch eine Ahnung oder nen Ansatz?

    Das Script sieht so aus:

    ////////////////////////////////////////////////////////////////////////////////////////////////////

    <?php

    $host="localhost:3306";
    $username="fahrrad";
    $password="*************";
    $db_name="fahrrad";
    $conn = mysqli_connect($host,$username,$password,$db_name) ;

    // Check connection
    if ($conn -> connect_errno) {
    echo "Failed to connect to MySQL: " . $mysqli -> connect_error;
    exit();
    }

    $query="SELECT * FROM products WHERE products_quantity=0 OR products_quantity=0.0000";
    $result=mysqli_query($conn,$query);


    while($row=mysqli_fetch_assoc($result)){
    $product_id=$row['products_id'];
    $update_query="UPDATE Products SET products_status=0 where products_id=$product_id";
    mysqli_query($conn,$update_query);
    }



    mysqli_close($conn);

    echo "<script> alert('Done!')</script>"

    ?>

    ///////////////////////////////////////////////////////////////////////////////////////


    Ich wünsche euch noch einen schönen Morgen und bleibt gesund und munter....lg der tiger248

  • #2
    Moin,
    das Forum besitzt Code tags

    wenn es bis zu ende durchläuft, kommt :

    HTML-Code:
     echo "<script> alert('Done!')</script>"
    man könnte bspw. den rügabewert testen:

    https://www.php.net/manual/de/mysqli.query.php:
    Returns false on failure. For successful queries which produce a result set, such as SELECT, SHOW, DESCRIBE or EXPLAIN, mysqli_query() will return a mysqli_result object. For other successful queries, mysqli_query() will return true.

    Kommentar


    • #3
      Zitat von tiger248 Beitrag anzeigen
      Script meldet das alles erledigt sei aber eine Überprüfung der Datenbank bringt die Ernüchterung.
      Naja, das Script meldet nur dass es durch gelaufen ist - die Meldung tauch nur dann nicht auf wenn das Script aufgrund eines Fehlers o.ä. komplett abgebrochen wird, darauf schließen dass etwas an der Datenbank geändert wurde, kannst du mit dem Code nicht. Übrigens: ein alert zum Ausgeben einer Meldung ist Käse, gibt einfach den Text per echo aus und fertig.

      Einer von euch eine Ahnung oder nen Ansatz?
      Einen? Mehrere (wenn auch nicht alle mit deinem Problem zu tun haben werden):
      - stimmen die Zugangsdaten? Nachprüfen!
      - das »if ($conn -> connect_errno)« ist falsch da du zum Verbindungsaufbau nicht die objektorientierte Variante verwendest
      - »SELECT *« ist falsch[tm], immer die benötigten Spalten angeben
      - die WHERE-Bedingung ist Käse: 0 und 0.0000 macht für die Datenbank keinen Unterschied
      - liefert der SELECT-Query wirklich Datensätze? Gibt es Datensätze auf die die Bedingung zutrifft? Nachprüfen!
      - wozu das Umkopieren von $row['products_id'] in $product_id?
      - wo ist die Behandlung des Kontextwechsels beim UPDATE-Query?
      - du prüfst in der Schleife nicht ob UPDATE erfolgreich war bzw. ob Datensätze geändert wurden (ein UPDATE ist für die Datenbank auch erfolgreich wenn nichts geändert wurde)
      - Querys in Schleifen sind böse[tm] und sollten möglichst vermieden werden. Auch hier ist das ganze nicht nötig, ein UPDATE-Query (mit der WHERE-Bedingung des SELECT-Querys) würde völlig reichen.

      Das Script sieht so aus:
      wie tomBuilder schon schrieb: das nächste mal bitte den PHP-Button über dem Eingabefeld verwenden, dann ist der Code besser lesbar.

      Kommentar


      • #4
        Der Fragesteller hier sollte sich mal *dringend* mit der Idee von Datenbanken beschäftigen. DB-Operationen sind Mengenoperationen. Wenn Du mit einer beliebigen Menge von Datensätzen eine bestimmte Operation durchführen willst, DANN NIEMALS NIE die Rows einzeln holen und verarbeiten. Das ist mit Turbo und Nachbrenner in die exakt falsche Richtung, geradlinig ins's Fiasko.
        PostgreSQL Development, 24x7 Support, Remote DBA, Training & Services

        Kommentar


        • #5
          Moin,

          ich wollt mich mal kurz zu Wort melden. Erstmal vielen dank für die Rückmeldungen. Ich will ehrlich zu euch sein. Ich bin Anfänger und verstehe nur sehr grob was da vor sich geht. Ich hab einen Programmierer beauftragt der offensichtlich nicht Wirklich was von seinem Handwerk versteht. Oder nur schnell was dahin klatschen wollte und Fertig is es. Denn eure Rückmeldungen sprechen ganz klar für sich. Das is mist. Und ich selbst bin offensichtlich überfordert. Umschreiben ist mit meinen derzeitigen Kentnisse unmöglich.

          Kann sich einer von euch vorstellen für eine Kiste leckeres Bier mir unter die Arme zu greifen?

          Ist aus dem Script wenigstens ersichtlich was ich vor hatte?

          Habt noch nen schönen Abend. Lg der tiger248

          Kommentar


          • #6
            Zitat von tiger248 Beitrag anzeigen
            Ist aus dem Script wenigstens ersichtlich was ich vor hatte?
            ist es, in dem Fall. Aber mit einer Kiste Bier ist das nicht erledigt. Wenn das was geschäftliches ist: stellt jemanden ein, der es kann.
            PostgreSQL Development, 24x7 Support, Remote DBA, Training & Services

            Kommentar


            • #7
              Zitat von tiger248 Beitrag anzeigen
              Kann sich einer von euch vorstellen für eine Kiste leckeres Bier mir unter die Arme zu greifen?
              Natuerlich, gibt aber in meinem Fall 2 Punkte zu bedenken:
              1. *Leckeres* (gutes) Bier ist hier in Malaysia relativ gesehen teuer
              2. Der Versand einer Kiste Bier von Deutschland nach Malaysia kann den Wert der Kiste Bier selber bei weitem uebersteigen.

              Solltest du natuerlich jemanden gegen Bezahlung suchen, kannst du mir gerne eine PN schicken (bitte dann auch mit mehr Details und ggf. von diesem Script abhaengige andere Scripte/Details)

              Kommentar


              • #8
                Da du im ersten Query nuer die IDs holst von Produkten deren Quantity 0 ist, kannst du diese Bedingung auch direkt in die WHERE Bedingung deines updates packen

                PHP-Code:
                <?php

                $host
                ="localhost:3306";
                $username="fahrrad";
                $password="*************";
                $db_name="fahrrad";
                $conn mysqli_connect($host,$username,$password,$db_name);
                var_dump($conn);


                $update_query="UPDATE Products SET products_status=0 where products_quantity=0";
                mysqli_query($conn,$update_query);
                var_dump(mysqli_affected_rows($conn));
                mysqli_close($conn);


                ?>
                ansonsnten siehe tk1234s Beitrag.
                Wenn das nicht funktioniert, sollte was mit der Datenbankverbindung nicht stimmen. Pack noch ein paar var_dumps rein damit du siehst was passiert

                Kommentar


                • #9
                  Moin Ihr Lieben,

                  ich bin selbst über mich hinaus gewaschen und hab es selbst hinbekommen Ihr glaubt garnicht wie ich darüber freue das ich es selbst hinbekommen hab. Die kleinen erfolgserlebnisse sind immer so nice. Hier für euch der Code und damit könnt Ihr das Thema als erfolgreich schließen

                  PHP-Code:

                  <?php

                  $servername
                  ="localhost:3306";
                  $user="fahrrad";
                  $pw="*************";
                  $db="fahrrad";

                  $con = new mysqli($servername,$user,$pw,$db);

                  if(
                  $con ->connect_error) {
                      die(
                  "Verbindung fehlgeschlagen".$con->connect_error);
                  }

                  $sql "UPDATE `products` SET `products_status`=0 WHERE `products_quantity`=0";

                  if(
                  $con->query($sql) === TRUE) {
                      echo 
                  "Dies war erfolgreich.";
                  }

                  else {
                      echo 
                  "Das hat nicht geklappt" $con->error;
                  }

                      
                  $con->close();
                  ?>
                  :


                  Ich danke euch vielmals für eure Anregungen. Habt noch ne schöne Woche und bleibt gesund und munter. lg der tiger248

                  Kommentar

                  Lädt...
                  X