SELFPHP: Version 5.8.2 Befehlsreferenz - Tutorial – Kochbuch – Forum für PHP Einsteiger und professionelle Entwickler

SELFPHP


Professional CronJob-Service

Suche



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



:: Buchempfehlung ::

Der CSS-Problemlöser

Der CSS-Problemlöser zur Buchempfehlung
 

:: Anbieterverzeichnis ::

Globale Branchen

Informieren Sie sich über ausgewählte Unternehmen im Anbieterverzeichnis von SELFPHP  

 

:: Newsletter ::

Abonnieren Sie hier den kostenlosen SELFPHP Newsletter!

Vorname: 
Name:
E-Mail:
 
 

Zurück   PHP Forum > SELFPHP > MySQLi/PDO/(MySQL)

MySQLi/PDO/(MySQL) Anfänger, Fortgeschrittene oder Experten können hier Fragen und Probleme rund um MySQLi/PDO/(MySQL) diskutieren

Antwort
 
Themen-Optionen Ansicht
  #1  
Alt 09.07.2017, 21:36:22
swissape swissape ist offline
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
Mit Zitat antworten
  #2  
Alt 09.07.2017, 22:48:45
Benutzerbild von vt1816
vt1816 vt1816 ist offline
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!
Mit Zitat antworten
  #3  
Alt 10.07.2017, 12:18:09
swissape swissape ist offline
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
Mit Zitat antworten
  #4  
Alt 10.07.2017, 13:13:12
Benutzerbild von vt1816
vt1816 vt1816 ist offline
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!
Mit Zitat antworten
  #5  
Alt 11.07.2017, 10:53:02
swissape swissape ist offline
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
Mit Zitat antworten
  #6  
Alt 11.07.2017, 11:26:31
Benutzerbild von vt1816
vt1816 vt1816 ist offline
Administrator
 
Registriert seit: Jul 2004
Beiträge: 3.707
AW: Abfrage unter mysql_* und mysqli_* liefert unterschiedliches Verhalten

Zitat:
Zitat von swissape Beitrag anzeigen
[..]
nach dem Abseneden bekomme ich jedoch für alle 652 IDs Undefined offset: und ein Undefined index: ...
versus

Zitat:
Zitat von swissape Beitrag anzeigen
[..]
Keine Fehlermeldung, nur unterschiedliche Ergebnisse.
Was denn nun? Fehler oder kein Fehler?


Zitat:
Zitat von swissape Beitrag anzeigen
[..]
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!
Mit Zitat antworten
  #7  
Alt 11.07.2017, 11:36:16
swissape swissape ist offline
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
Mit Zitat antworten
  #8  
Alt 11.07.2017, 11:40:46
swissape swissape ist offline
Anfänger
 
Registriert seit: Jul 2017
Alter: 58
Beiträge: 10
AW: Abfrage unter mysql_* und mysqli_* liefert unterschiedliches Verhalten

Zitat:
Zitat von vt1816 Beitrag anzeigen
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 == ) {
        return 
' checked="checked"';
    } else {
        return 
'';
    }
}

function 
tippsCountColor$cnt$l )
{
    if ( 
$cnt == && $l == 'h' ) {
        return 
'#00ff00';
    } else if ( 
$cnt == && $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 1$woche_id );
    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'] == ) {
                    
$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'] == ) {
                    
$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')?>;">&nbsp;<?=$checked_heimtipps?>&nbsp;</span>
            -
            <span style="background-color: <?=tippsCountColor($checked_auswtipps, 'a')?>;">&nbsp;<?=$checked_auswtipps?>&nbsp;</span>
            ]
        </span>
        &nbsp;&nbsp;&nbsp;
        <span onclick="toggleVisibility('<?=$spieltag?>-<?=($spiel+1)?>');">&gt;&gt;</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
Mit Zitat antworten
  #9  
Alt 11.07.2017, 17:04:30
Benutzerbild von vt1816
vt1816 vt1816 ist offline
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!
Mit Zitat antworten
  #10  
Alt 11.07.2017, 21:14:54
swissape swissape ist offline
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
Mit Zitat antworten
Antwort


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 
Themen-Optionen
Ansicht

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.

BB-Code ist an.
Smileys sind aus.
[IMG] Code ist aus.
HTML-Code ist aus.

Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Abfrage liefert Datensätze doppelt Willi0513 MySQLi/PDO/(MySQL) 10 16.01.2012 06:26:05
Ergebnisse aus MySQL Abfrage, obwohl Abfrage eigentlich leer mauritius MySQLi/PDO/(MySQL) 1 15.09.2010 16:16:30
Abfrage liefert kein Ergebnis mitch26 MySQLi/PDO/(MySQL) 8 25.05.2009 13:33:18
Abfrage liefert Wert, obwohl in Bedingung ausgeschlossen Joern MySQLi/PDO/(MySQL) 6 06.02.2009 14:40:58
Korrekte SQl abfrage liefert FALSE zurück, wo ist der Fehler? DSaphir MySQLi/PDO/(MySQL) 4 23.05.2008 16:49:50


Alle Zeitangaben in WEZ +2. Es ist jetzt 13:10:07 Uhr.


Powered by vBulletin® Version 3.8.3 (Deutsch)
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.


© 2001-2024 E-Mail SELFPHP OHG, info@selfphp.deImpressumKontakt