CronJob-Service
bei SELFPHP mit ...
|
+ minütlichen Aufrufen
+ eigenem Crontab Eintrag
+ unbegrenzten CronJobs
+ Statistiken
+ Beispielaufrufen
+ Control-Bereich
Führen Sie mit den CronJobs von
SELFPHP zeitgesteuert Programme
auf Ihrem Server
aus. Weitere Infos
|
:: Anbieterverzeichnis ::
Globale Branchen
Informieren Sie sich über ausgewählte Unternehmen im Anbieterverzeichnis von SELFPHP
:: Newsletter ::
Abonnieren Sie hier den kostenlosen
SELFPHP Newsletter!
|
PHP Grundlagen Hier kann über grundlegende Probleme oder Anfängerschwierigkeiten diskutiert werden |
16.06.2017, 18:32:14
|
Anfänger
|
|
Registriert seit: Jun 2017
Alter: 41
Beiträge: 2
|
|
If / While Schleife funktioniert nicht
Servus,
ich hab da ein kleines Problem, und ich glaub ich sehe gerade den Wald vor lauter Bäumen nicht mehr. Bin allerdings auch noch recht frisch in der Materie, von daher ist auch ein blutiger Anfängerfehler nicht ausgeschlossen
Ich habe ein kleines Script, welches eine Webseite parsen sol. Jedes mal, wenn es mit einer Nummer durch ist, soll es diese um 1 erhöhen, bis die Nummer nicht mehr vorhanden ist. Um zu sehen, ob die Zeile vorhanden ist, habe ich zuvor einen Check eingebaut.
Der Code funktioniert manuell wunderbar, er macht alles was er soll, auch wenn ich die Nummern verändere. Nur das automatisieren mit Schleife will nicht. Es folgen noch mehrere IF Bedingungen und das Zerlegen von Strings, aber das sollte eigentlich keinen Unterschied für die Schleife machen.
Fehlermeldung: Gibts keine, hängt sich einfach auf. Würde ja auf eine Dauerschleife tippen, wüsste aber nicht warum die dauerhaft laufen sollte.
Hier mal der Code
Code:
$web_page = http_get(hier kommt eine website rein);
// Schleife vorbereiten & String vorbereiten
$i ="3"; // Nummer des Datenpakets was ich haben will
$i2 = 'data-number="'; //das ist der beginn der Daten die ich haben will
$i3 = $i2.$i; //Strings zusammensetzen
// Check ob Nummer vorhanden, Schleifenbedingung
$target = $web_page['FILE'];
$findno1 = $i3; // Testen ob $i3 vorhanden ist
$pos = strpos($target, $findno1); // true oder false
for($i; $pos == true); $i++) //und hier hängt es.
{
if ($pos == true) // Wenn vorhanden, los gehts
{.......
Alternativ hatte ich es mit while ($pos == true) ...... $i++ versucht, kam aber zum selben Schluss. Irgendwas hab ich übersehen, aber ich komm nicht drauf.
Hoffe Ihr könnt helfen :)
|
16.06.2017, 23:49:08
|
|
Administrator
|
|
Registriert seit: Jul 2004
Beiträge: 3.707
|
|
AW: If / While Schleife funktioniert nicht
Hallo und wilkommen hier im Forum.
Kann $pos auch mal false werden? Wenn nicht, landest Du in einer Endlosschleife.
Leider wurde der Code um solch grundsätzliche Informationen gekürzt (Anfängerfehler).
WHILE wäre hier wohl die bessere Lösung, da Du nichts hoch zählst was Du auch abfragst.
__________________
Gruss vt1816
Erwarte nicht, dass sich jemand mehr Mühe mit der Antwort gibt als Du Dir mit der Frage.
. . . . . Feedback wäre wünschenswert
Ich werde keinen privaten 1:1 Support leisten, außer ich biete ihn ausdrücklich an.
Ansosnten gilt: Hilfe ausserhalb dieses Thread (PN, WhatsApp, Skype, Mail, ICQ, etc...) nur per Barzahlung oder Vorauskasse!
Wenn man sich selbst als "Noob" bezeichnet, sollte man die Finger davon lassen.
Wenn man gewillt ist daran etwas zu ändern, lernt man Grundlagen!
|
17.06.2017, 10:54:38
|
Anfänger
|
|
Registriert seit: Jun 2017
Alter: 41
Beiträge: 2
|
|
AW: If / While Schleife funktioniert nicht
Danke fürs Willkommenheißen :)
Ja, $pos wird falsch, sobald die nummer nicht mehr vorhanden ist, die else Funktion tritt dann ein. Das hat alles wunderbar geklappt, wenn ich es manuell eingebe, nur eben nicht wenn ich es in eine Schleife stecke :(
Der ganze Code ist ein wenig lang, um ihn hier zu posten, aber im Prinzip sieht das Ganze so aus (ohne Schleife)
Code:
$web_page = http_get(xxxx)
$i ="1";
$i2 = 'data-number="';
$i3 = $i2.$i;
$i4 = $i+1;
$target = $web_page['FILE'];
$findno1 = $i3;
$pos = strpos($target, $findno1);
if ($pos == true)
{
$nr1 = return_between($web_page['FILE'], 'data-index="'.$i, 'data-index="'.$i4, EXCL);
//Check ob No Runner
$nunrunner = $nr1;
$findnorunner = "/silks/nonrunner.png";
$posnorunner = strpos($nr1, $findnorunner);
if ($posnorunner == false)
{
$starternr1 = return_between($nr1, 'data-number="', '"', EXCL);
echo "<p></p>",$starternr1;
//....... mehr code
$sg11 = return_between($nr1, 'name summary form-, '<i class="icon-tracker"></i></a></h2>', EXCL);
//....... mehr code
// das lässt sich leichter zusammenfassen, ist aber zum debuggen leichter für mich wenn es einzeln aufgelistet ist
$sg11 = strip_tags($sg11);
$sg11 = str_replace("
", "", $sg11);
$sg11 = str_replace("<th>", "", $sg11);
$sg11 = str_replace("</th>", "", $sg11);
$sg11 = str_replace("<td>", "", $sg11);
$sg11 = str_replace("</td>", "", $sg11);
$sg11 = str_replace("&", "", $sg11);
$sg11 = str_replace(";amp;", "", $sg11);
$sg12 = return_between($sg11, 'All', 'Grey ', INCL);
echo "<xmp>",$sg12,"</xmp>";
//....... mehr code
}
else
{
$starternr1 = return_between($nr1, 'data-number="', '"', EXCL);
echo "<p></p>",$starternr1;
$form1 = return_between($nr1, 'card-form__stats">', '<', EXCL);
echo "<p></p>",$form1;
//....... mehr code
}
///////////////////////////// Ende IF Funktion 2
}
else
{
echo "Ende";
}
?>
Ich habs mal ein wenig zusammengestrichen. Wenn ich die Nummer manuell variiere, stimm das Ergebnis immer. Lasse ich es mit einer Schleife und $i++ addieren, hängt sich z.B. Scriptly auf. Einmal hatte ich bei einer Konstruktion "empty needle" nach dem Abbruch als Fehlermeldung, lässt sich aber derzeit nicht reproduzieren.
|
Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
|
|
Themen-Optionen |
|
Ansicht |
Linear-Darstellung
|
Forumregeln
|
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.
HTML-Code ist aus.
|
|
|
Alle Zeitangaben in WEZ +2. Es ist jetzt 13:46:51 Uhr.
|