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!
|
MySQLi/PDO/(MySQL) Anfänger, Fortgeschrittene oder Experten können hier Fragen und Probleme rund um MySQLi/PDO/(MySQL) diskutieren |
09.07.2017, 20:36:22
|
Anfänger
|
|
Registriert seit: Jul 2017
Alter: 58
Beiträge: 10
|
|
Abfrage unter mysql_* und mysqli_* liefert unterschiedliches Verhalten
Ich habe einen 10 jahre alten Code erneuen müssen und kommt jetzt einem Problem näher
Im Moment habe ich einn Unterschied zwischen mysql_* und mysqli_* Abfragen im Verdacht
Die wirkliche Anpassung ist dass ich die Aufrufe angepasst habe - also mysql_* nach mysqli_* und auch mysql_num_rows() nach Var->num_rows
PHP-Code:
$gest=$_POST['gest'];
# von 1 bis
$query="SELECT id FROM tm_nm_tips WHERE woche='$woche_id' AND saison='$saison_id'";
$ids=mysqli_query($db_connection,$query);
//$anz_ids=mysqli_numrows($ids);
$anz_ids = $ids->num_rows;
for ($id=0;$id<$anz_ids;$id++) {
$wert=mysqli_fetch_array($ids);
if ($gest[$wert['id']]==1) {
$new_spielt_status=1;
} else {
$new_spielt_status=0;
}
$query2="UPDATE tm_nm_tips SET spielt='$new_spielt_status' WHERE id='$wert[id]'";
mysqli_query($db_connection,$query2) or die($query2);
}
Verrückterweise liefert mir das Ergebnis jetzt nur 50 % der Einträge in die DB und NULLT die anderen.
In diesem script werden bis dahin eingetragene Datensätze komplettiert ... und am Ende gespeichert
Das hat unter mysql_* gut funktioniert
Die Datenbankabfrage liefert ein ARRAY mit 652 IDs zurück.
nach dem Abseneden bekomme ich jedoch für alle 652 IDs Undefined offset: und ein Undefined index: - alles in Line 27 - das ist
PHP-Code:
if ($gest[$wert['id']]==1) {
Verhält sich mysqli da strikter als mysql ?
Oder wurden ähnliche meldungen in mysql nur unterdrückt (oder ich hab irgendwo das errorhandling aktiviert? )
Wo kann ich hier nach dem Fehler suchen ?
merci für jedwede Hilfe
swissape
|
09.07.2017, 21:48:45
|
|
Administrator
|
|
Registriert seit: Jul 2004
Beiträge: 3.707
|
|
AW: Abfrage unter mysql_* und mysqli_* liefert unterschiedliches Verhalten
Poste bitte mal den "alten" Code um einen Vergleich zu haben und für besseres Verständnis.
__________________
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!
|
10.07.2017, 11:18:09
|
Anfänger
|
|
Registriert seit: Jul 2017
Alter: 58
Beiträge: 10
|
|
AW: Abfrage unter mysql_* und mysqli_* liefert unterschiedliches Verhalten
Hallo,
PHP-Code:
$gest=$_POST['gest'];
# von 1 bis
$query="SELECT id FROM tm_nm_tips WHERE woche='$woche_id' AND saison='$saison_id'"; $ids=mysql_query($query,$db_connection); $anz_ids=mysql_numrows($ids); for ($id=0;$id<$anz_ids;$id++) { $wert=mysql_fetch_array($ids); if ($gest[$wert['id']]==1) { $new_spielt_status=1; } else { $new_spielt_status=0; } $query2="UPDATE tm_nm_tips SET spielt='$new_spielt_status' WHERE id='$wert[id]'"; mysql_query($query2) or die($query2); }
$statusmeldung="übernommen"; ?>
Also wirklich nur die notwendigen Aenderungen (Parameter, mysql-> mysqli, Funktionsnamen)
Greetz
swissape
|
10.07.2017, 12:13:12
|
|
Administrator
|
|
Registriert seit: Jul 2004
Beiträge: 3.707
|
|
AW: Abfrage unter mysql_* und mysqli_* liefert unterschiedliches Verhalten
Was mir auf den ersten Blick auffällt, dass Du objektorientierten und prozeduralen Stil beim mysqli_* mischt. Benutze durchgehend nur einen von beiden Stilen.
Poste bitte mal die komplette Fehlermeldung(en).
__________________
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!
|
11.07.2017, 09:53:02
|
Anfänger
|
|
Registriert seit: Jul 2017
Alter: 58
Beiträge: 10
|
|
AW: Abfrage unter mysql_* und mysqli_* liefert unterschiedliches Verhalten
Wie schon James sagt : "Couriosity killed the cat"
Keine Fehlermeldung, nur unterschiedliche Ergebnisse.
mysql_* liefert komplettes Ergebnis, d.h. Ergebnisse für Heimteam und Auswärtsteam
mysqli_* liefert NUR Ergebnisse für das Auswärtsteam
Wir haben einen counter eingebaut. Wenn ich die Spiele lade sagt er 340+ Datensätze geladen, wenn ich sie dann mit dem abgebildeten Script jetzt verarbeite, d.h ändere - sind hinterher nur 174 verarbeitet und die Heimergebnisse sind leer.
Erneutes Anzeigen zeigt dass er die Spiele für das heimteam einfach löscht
Greetz
swissape
|
11.07.2017, 10:26:31
|
|
Administrator
|
|
Registriert seit: Jul 2004
Beiträge: 3.707
|
|
AW: Abfrage unter mysql_* und mysqli_* liefert unterschiedliches Verhalten
Zitat:
Zitat von swissape
[..]
nach dem Abseneden bekomme ich jedoch für alle 652 IDs Undefined offset: und ein Undefined index: ...
|
versus
Zitat:
Zitat von swissape
[..]
Keine Fehlermeldung, nur unterschiedliche Ergebnisse.
|
Was denn nun? Fehler oder kein Fehler?
Zitat:
Zitat von swissape
[..]
Erneutes Anzeigen zeigt dass er die Spiele für das heimteam einfach löscht
|
Aber nicht durch den oben geposteten Code.
__________________
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!
|
11.07.2017, 10:36:16
|
Anfänger
|
|
Registriert seit: Jul 2017
Alter: 58
Beiträge: 10
|
|
AW: Abfrage unter mysql_* und mysqli_* liefert unterschiedliches Verhalten
Ja sorry, aber das sind WARNINGS
Ich hab die jetzt nicht hier ... da ich nur von daheim auf alles zugreifen kann
War so in etwa:
WARNING Undifined offset 695347 in file .....tips_markieren_liga_do.php in row 27
für alle zeilen die ein SQL aus der DB zurückliefert (652 -695347 bis 69999 )
und einmal am Ende :
WARNING Undifined Index : in file ...tips_markieren_liga_do.php in row 27
*ausinternemMemoryzitiert*
Greetz
swissape
|
11.07.2017, 10:40:46
|
Anfänger
|
|
Registriert seit: Jul 2017
Alter: 58
Beiträge: 10
|
|
AW: Abfrage unter mysql_* und mysqli_* liefert unterschiedliches Verhalten
Zitat:
Zitat von vt1816
versus
Aber nicht durch den oben geposteten Code.
|
ist aber der der durch drüken des Buttons ausgeführt wird, zumindest wie ich es sehe
Das Teil wird m.E. aus diesem Script heraus aufgerufen wenn ich den Button "akt." drücke
PHP-Code:
<?php
function isChecked( $spielt ) { if ( $spielt == 1 ) { return ' checked="checked"'; } else { return ''; } }
function tippsCountColor( $cnt, $l ) { if ( $cnt == 5 && $l == 'h' ) { return '#00ff00'; } else if ( $cnt == 4 && $l == 'a' ) { return '#00ff00'; } else { return '#ff0000'; } }
function output_hauptfeld() { require ("variablen.php");
######## ## einlesen der edit_variablen: ## $saison_id -> ## $woche_id -> ## $live_status -> ########
$query = "SELECT * FROM tm_nm_saisons WHERE aktuell_edit='1'"; $saison_to_edit = mysqli_query($db_connection, $query); $data = mysqli_fetch_array( $saison_to_edit ); $saison_id = $data['saison_id']; $woche_id = $data['aktuelle_woche_edit']; $live_status = $data['live_status'];
######## ## abfrage der ansetzungsdatenbank nach den ## 50 spielen des wochenendes ########
?> <script type="text/javascript"> function updateVisibility( id, st ) { var tbl = document.getElementById( id ); var currDisplay = tbl.style.display; if ( currDisplay == st ) { tbl.style.display = 'none'; } else if ( currDisplay == 'none' ) { tbl.style.display = st; } else { tbl.style.display = 'none'; } return true; }
function toggleVisibility( id ) { updateVisibility( id + '-h', 'table' ); updateVisibility( id + '-hhr', 'block' ); updateVisibility( id + '-a', 'table' ); updateVisibility( id + '-ahr', 'block' ); return true; } </script> <form method="post" action="admin.php"> <input type="hidden" name="what" value="26"> <?php
$spieltage = array( $woche_id * 2 - 1, $woche_id * 2 ); foreach ( $spieltage as $spieltag ) { $query = "SELECT hometeam_id as teama, awayteam_id as teamb, t1.old_names as teama_name, t2.old_names as teamb_name FROM tm_nm_ansetzungen LEFT JOIN tm_nm_teams t1 ON (hometeam_id = t1.team_id) LEFT JOIN tm_nm_teams t2 ON (awayteam_id = t2.team_id) WHERE saison = '$saison_id' AND spieltag = '$spieltag'"; $ansetzungen = mysqli_query( $db_connection, $query ); //$anz_ansetzungen = mysqli_numrows( $ansetzungen ); $anz_ansetzungen = $ansetzungen->num_rows; for ( $spiel = 0; $spiel < $anz_ansetzungen; ++$spiel) { $checked_count1 = 0; $checked_count2 = 0; $partie = mysqli_fetch_array( $ansetzungen ); $teama = $partie['teama']; $teamb = $partie['teamb'];
$query2 = "SELECT id, saison, woche, t.player_id, p.player_name as name, team_id, vsteam_id, spiel_get, tip, pos, spielt FROM tm_nm_tips t LEFT JOIN tm_nm_players p USING (player_id) WHERE t.team_id='$teama' AND t.vsteam_id='$teamb' AND t.woche='$woche_id' AND t.saison='$saison_id'"; $tips = mysqli_query( $db_connection,$query2 ); //$anz_tips = mysqli_numrows( $tips ); $anz_tips = $tips->num_rows;
$heimtipps = array(); $checked_heimtipps = 0; for ( $i = 0; $i < $anz_tips; ++$i ) { $tmpTip = mysqli_fetch_array( $tips ); if ( $tmpTip['spielt'] == 1 ) { $checked_heimtipps++; } $heimtipps[] = $tmpTip; }
$query3 = "SELECT id, saison, woche, t.player_id, p.player_name as name, team_id, vsteam_id, spiel_get, tip, pos, spielt FROM tm_nm_tips t LEFT JOIN tm_nm_players p USING (player_id) WHERE t.team_id='$teamb' AND t.vsteam_id='$teama' AND t.woche='$woche_id' AND t.saison='$saison_id'"; $tips3 = mysqli_query( $db_connection, $query3 ); //$anz_tips3 = mysqli_numrows( $tips3 ); $anz_tips3 = $tips3->num_rows;
$auswtipps = array(); $checked_auswtipps = 0; for ( $i = 0; $i < $anz_tips3; ++$i ) { $tmpTip = mysqli_fetch_array( $tips3 ); if ( $tmpTip['spielt'] == 1 ) { $checked_auswtipps++; } $auswtipps[] = $tmpTip; }
?> <div style="font-family: Verdana; font-size: 1.2em; color: blue; font-weight: bold"> #<?=$spieltag?>, <?=($spiel+1)?> | <?=$partie['teama_name']?> - <?=$partie['teamb_name']?> <span style="background-color: #8f8f8f;" colspan="2" align="center"> [ <span style="background-color: <?=tippsCountColor($checked_heimtipps, 'h')?>;"> <?=$checked_heimtipps?> </span> - <span style="background-color: <?=tippsCountColor($checked_auswtipps, 'a')?>;"> <?=$checked_auswtipps?> </span> ] </span> <span onclick="toggleVisibility('<?=$spieltag?>-<?=($spiel+1)?>');">>></span> </div> <br /> <table id="<?=$spieltag?>-<?=($spiel+1)?>-h" style="display: <?=$checked_heimtipps==5?'none':'table'?>"> <?php
foreach ( $heimtipps as $tip ) {
?> <tr> <td style="font-family: Verdana; font-size: 1em; color: black;"><?=$tip['name']?></td> <td style="font-family: Verdana; font-size: 1em; color: black;"><?=$tip['spiel_get']?></td> <td style="background-color: #ff0000; font-family: Verdana; font-size: 1em; color: black; font-weight: bold"><?=$tip['pos']?></td> <td><input type="checkbox" name="gest[<?=$tip[id]?>]"<?=isChecked($tip['spielt'])?> value="1"></td> </tr> <?php
}
?> </table> <hr id="<?=$spieltag?>-<?=($spiel+1)?>-hhr" style="display: <?=$checked_heimtipps==5?'none':'block'?>" /> <table id="<?=$spieltag?>-<?=($spiel+1)?>-a" style="display: <?=$checked_auswtipps==4?'none':'table'?>"> <?php
foreach ( $auswtipps as $tip ) {
?> <tr> <td style="font-family: Verdana; font-size: 1em; color: black;"><?=$tip['name']?></td> <td style="font-family: Verdana; font-size: 1em; color: black;"><?=$tip['spiel_get']?></td> <td style="background-color: #ff0000; font-family: Verdana; font-size: 1em; color: black; font-weight: bold;"><?=$tip['pos']?></td> <td><input type="checkbox" name="gest[<?=$tip['id']?>]"<?=isChecked($tip['spielt'])?> value="1"></td> </tr> <?php
}
?> </table> <hr id="<?=$spieltag?>-<?=($spiel+1)?>-ahr" style="display: <?=$checked_auswtipps==4?'none':'block'?>" /> <?php
} }
?> <input type="submit" name="Go" value="Akt."> </form> <?php
}
?>
Es kann natürlich sein dass dieser die Daten dann einträgt und der Fehler hier passiert ....
das mixing procedural - OO ist wieder mein Fehler, hab mir rausgesucht wie ich es in mysqli machen soll aber die beiden Styles nicht beachtet. Das setze ich ntürlich als ersten um auf procedural
Und wie beschrieben, wenn ich das script zum ersten mal laufen lasse bekomme ich 347 (ist normal, dass nicht alle 652 Zeilen kommen) aus eine Datei eingelesen und angezeigt
Erst wenn ich den Button "Akt." am Ende drücke fallen die Tipps für "h" weg - die für "a" bleiben drin. Wenn ich dann noch einmal aufrufe sehe ich dass alle H-Tipps weg sind, also leere Zeilen und in der DB mit Werten für Dummy-Tipp
Greetz
swissape
|
11.07.2017, 16:04:30
|
|
Administrator
|
|
Registriert seit: Jul 2004
Beiträge: 3.707
|
|
AW: Abfrage unter mysql_* und mysqli_* liefert unterschiedliches Verhalten
Gut. Der jetzt gepostete Code erzeugt lediglich die Ausgabe auf dem Bildschirm. In ihm wird nichts "gelöscht", da er nur SELECT's enthält. Was steht in der Datei admin.php? Diese Datei wird aufgerufen wenn Du auf "Akt." drückst.
__________________
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!
|
11.07.2017, 20:14:54
|
Anfänger
|
|
Registriert seit: Jul 2017
Alter: 58
Beiträge: 10
|
|
AW: Abfrage unter mysql_* und mysqli_* liefert unterschiedliches Verhalten
Hallo vt1816
in der admin.php ist ein Rahmen von dem die Unterprogramme aufgerufen werden und die Button aktiviert und deaktiviert werden.
Erst wird die tips_markieren_liga_form.php aufgerufen und von hier dann über den Button "Akt."
Ueber diesen Button wird mM nach durch diesen Code-teil :
Code:
<form method="post" action="admin.php">
<input type="hidden" name="what" value="26">
<?php
dann tips_markieren_liga_do.php
ausgeführt, welcher den Update später macht und irgendwie die Heimtipps verliert.
Greetz
swissape
|
Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
|
|
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 08:24:27 Uhr.
|