php loop script ausführen mittels js

Funktioniert den mein Script ? Mit den Php Schnipsel den ich gepostet habe zum testen ?
Dein Php Code kann ich so jetzt nicht testen.
Verstehe nur nicht was das soll
Code:
<!DOCTYPE html>
<html>
<head>
</head>
<body>
Dein Php Code
</body>
</html>
Der ist unnötig in den jetztigen Code.

Mal nee Frage.
Muß das ein setInterval sein und so weiter ?
Ich baue mir gerade eine Datenbank zusammen wo jede Stadt mit jeder Strasse mit Geo Daten eingelesen werden( Fertige Systeme kosten Geld ).

Damit beim abspeichern das Php Script nicht ein Timeout veursacht habe ich das so gemacht wie du.
Bei mir sind die id`s nur Postleitzahlen.
Wenn eine Postleitzahl eingelesen wurde erhöhe ich Zahl im Php Script ,
Dann gebe ich es als echo raus.
Das Ajax Script erkennt das und ruft das Php Script wieder auf mit der erhöhten Postleitzahl.

Was hast du den genau vor ?
Poste nochmal das ganze Script ( html,js,php ) wie du es gerader hast.
Mit deinen letzten Beitrag komme ich nicht weiter
 
@basti1020 Dein letztes Script funktioniert, doch auf meine Anwendungsidee passt es irgendwie nicht. Danke Dir trotzdem vielmals.

Nochmals die Idee: Normalerweise rufe ich per Eingabe einer id in einem Formular das php-Script auf und erhalte den zur id passenden Datenbankeintrag angezeigt. Dies kann ich händisch von 1 bis ultimo machen, so lange bis eben keine ids und keine Datenbankeinträge mehr vorhanden sind. Das mache ich alles "intern", so dass ursprünglich sicherheitsrelevante Einstellungen wie comFreek sie monierte nicht nötig sind.

Nun will ich das Ganze aber automatisieren. Das js-script soll meine händischen Formulareinträge ersetzen und dies alle 10 Sekunden. Dabei also die id immer um "+1" erhöhen.
Wenn ich dann einen Fehler in den Einträgen entdecke würde ich das js-script stoppen. Ich denke 10 Sekunden reichen mir zur Sicht-Kontrolle aus. Ansonsten ändere ich im js-Scripts die Zeitspanne.

Moni

PS: Hier mal alle Scriptteile mit denen ich getestet habe. Nimm doch bitte mal die Teile/zeilen raus die nicht gebraucht werden.

PHP:
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=8859-1">
</head>
<body>

<form action="test.php" method="post">
ID: <input type="text" name="id">
<br />
<input type="submit" value="ok">
</form>

<?php
$host = "localhost";
$port = "3306";
$username = "";
$password = "";
$dbname = "";


$pdo = new PDO("mysql:host=$host;port=$port;dbname=$dbname", "$username", "$password");

$id = $_POST["id"];

$statement = $pdo->prepare(" SELECT * FROM wow WHERE id = $id ");

$statement->execute();

$result = $statement->fetchAll();

         foreach ($result as $row) {
            echo $row["id"]."<br />".$row["url"];
        }

?>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.4.1/jquery.min.js"></script>
<button id="button">los</button>
<script>
var time=10000;
var ende=30;
function php_aufrufen(id,ende){
       if(id<=ende){
           $.ajax({
               type: 'POST',
               async: false,
               url: 'test.php',
               data: {id:id},
               success: function(data){
                  setTimeout(function(){
                       id++;
                     console.log(data);
                     php_aufrufen(id,ende);
                    },time);
               },
               error:function(err){
                      console.log('Fehler beim aufrufen = '+err)      
               }
           });
       }
}

document.getElementById('button').addEventListener('click',function(){
      php_aufrufen(0,ende);
})
</script>
</body>
</html>
 
Zuletzt bearbeitet:
Machst du das alles in einer Datei?
Also das HTML mit den JS , zusammen mit den PHP Teil?
Sowas nennt man Affenformular, obwohl ich das in diesen Fall er nicht so nutzen würde.
Ich hatte zwischenzeitig was gebastelt ,damit du ein Beispiel hast.
**Link entfernt, weile Seite nicht mehr erreichbar **
Bei Time kannst du z. B. die 10 Sekunden nehmen oder aus , was dann so schnell wie möglich ist.

Im PHP Script kannst du es ja auch automatisch auslesen und vergleichen.
Ich weiß ja nicht was du da kontrollieren willst, aber in diesem Beispiel würde das Js sofort stoppen, wenn er bei einer Id ankommt die es nicht gibt.
Das könnte man mit fast allen machen.
Ohne setTimeout würde das Script ca. 500-mal was kontrollieren (vergleichen ) in der Minute was du per Hand nicht schaffen kannst.
 
Zuletzt bearbeitet:
@basti 1012 Nein in zwei Dateien. Ich habe nur sämtliche Scriptteile zusammengefasst.
Dein Beispiel ist genau richtig und funktioniert gut. Nur dass der jeweilige vorherige Datensatz nicht angezeigt werden soll, es wird also am besten immer nur ein Datensatz, nämlich der der aktuell aufgerufenen id angezeigt.
 
Zuletzt bearbeitet:
$pdo = new PDO("mysql:host=$host;port=$port;dbname=$dbname", "$username", "$password");
Die Quotes um username und password sind übrigens unnötig. Du brauchst ja hier keine Stringinterpolation.

$pdo->prepare(" SELECT * FROM wow WHERE id = $id ");
Hier nutzt du zwar Prepared Statements, aber leider zeigt das, dass du das eigentliche Problem (SQL Injections) nicht verstanden hast. Es geht um naive Stringinterpolation, die du hier immer noch tust. Jedes gute Tutorial für Prepared Statements im Internet sollte das gut erklären.
 
Zurück