HX3 Foren  

  HX3 Foren > Themen > Hilfe

Hilfe Hier werden Sie geholfen

Antwort
 
Themen-Optionen Ansicht
Alt 28.02.2016, 12:47   #1 (permalink)
5000 Beiträge
 
Benutzerbild von Duke49th
 
Registriert seit: 06.10.2006
Alter: 37
Beiträge: 7.882
Standard PHP und SQL Hilfe

Wir haben doch so viele Progger Asse hier. Da nutze ich das mal und frage.

Ich habe für unser Debriefing-Tool Projekt was geschrieben.

Wir haben ein Debriefing Tool was ein Mitglied mal entwickelte...jetzt aber Frau und Kind und keine Zeit mehr hat. Er gab uns den Kram und meinte "macht mal"..^^

Jedenfalls habe ich jetzt in der ausgabe.php wo der Kram aufbereitet wird, angefangen die Daten die in einem Array namens $debrief gespeichert werden, auszulesen.
Ziel ist es, jeden Wert der auch gespeichert und angezeigt wird, ebenfalls in eine SQL Datenbank zu speichern. Wir wollen später ein Archiv haben und auch diese Daten nutzen um uns ein Ranking & Award System zu machen.

Soweit klappt das auch ganz gut und ich bin stolz wie Bolle das mit meinen wenigen Programmierkenntnissen hinbekommen zu haben. Musste extra ein bisschen SQL und PHP lernen.

Ich verstehe vieles inzwischen ganz gut. Hänge hier aber bei meinem multidimensionalen Array fest.

Das habe ich bisher geschrieben:

PHP-Code:
<?php
$conn 
= new PDO('mysql:host=localhost;dbname=xxxx''xxxx''xxxx');

$field1=$debrief['Flights'][0]['Country'];
$field2=$debrief['Flights'][0]['Mission_Date'];
$field3=$debrief['Flights'][0]['Mission_Time'];
$field4=$debrief['Flights'][0]['Host_Type'];
$field5=$debrief['Flights'][0]['Game_Type'];
$field6=$debrief['human_player_count'];

if(isset(
$debrief['Flights'][0]['Mission_Name']))
{
    
$field7=$debrief['Flights'][0]['Mission_Name'];
    
}

else 
{
    
$field7='';
}

if(isset(
$debrief['Flights'][0]['Flight_Callsign']))
{
    
$field8=$debrief['Flights'][0]['Flight_Callsign'];
}
else
{
    
$field8='';
}

//$field10=$debrief['Flights'][2]['Flight_Callsign'];
//$field11=$debrief['Flights'][3]['Flight_Callsign'];
//$field12=$debrief['Flights'][4]['Flight_Callsign'];
if(isset($debrief['Flights'][0]['Mission_Type']))
{
    
$field13=$debrief['Flights'][0]['Mission_Type'];
}
else
{
    
$field13='';
}

//$field14=$debrief['Flights'][1]['Mission_Type'];
//$field15=$debrief['Flights'][2]['Mission_Type'];
//$field16=$debrief['Flights'][3]['Mission_Type'];
//$field17=$debrief['Flights'][4]['Mission_Type'];
if(isset($debrief['Flights'][0]['Ship_Nr']))
{
    
$field18=$debrief['Flights'][0]['Ship_Nr'];
}
else
{
    
$field18='';
}

//$field19=$debrief['Flights'][1]['Ship_Nr'];
//$field20=$debrief['Flights'][2]['Ship_Nr'];
//$field21=$debrief['Flights'][3]['Ship_Nr'];
//$field22=$debrief['Flights'][4]['Ship_Nr'];
if(isset($debrief['Flights'][0]['Aircraft_Type']))
{
    
$field23=$debrief['Flights'][0]['Aircraft_Type'];
}
else
{
    
$field23='';
}


//$field24=$debrief['Flights'][1]['Aircraft_Type'];
//$field25=$debrief['Flights'][2]['Aircraft_Type'];
//$field26=$debrief['Flights'][3]['Aircraft_Type'];
//$field27=$debrief['Flights'][4]['Aircraft_Type'];
if(isset($debrief['Flights'][0]['Pilot_Slot_1']['Callsign']))
{
    
$field28=$debrief['Flights'][0]['Pilot_Slot_1']['Callsign'];
}
else
{
    
$field28='';
}
//$field29=$debrief['Flights'][1]['Pilot_Slot_1']['Callsign'];
//$field30=$debrief['Flights'][2]['Pilot_Slot_1']['Callsign'];
//$field31=$debrief['Flights'][3]['Pilot_Slot_1']['Callsign'];
//$field32=$debrief['Flights'][4]['Pilot_Slot_1']['Callsign'];
if(isset($debrief['Flights'][0]['Pilot_Slot_2']['Callsign']))
{
    
$field33=$debrief['Flights'][0]['Pilot_Slot_2']['Callsign'];
}
else
{
    
$field33='';
}
//$field34=$debrief['Flights'][1]['Pilot_Slot_2']['Callsign'];
//$field35=$debrief['Flights'][2]['Pilot_Slot_2']['Callsign'];
//$field36=$debrief['Flights'][3]['Pilot_Slot_2']['Callsign'];
//$field37=$debrief['Flights'][4]['Pilot_Slot_2']['Callsign'];
if(isset($debrief['Flights'][0]['Pilot_Slot_3']['Callsign']))
{
    
$field38=$debrief['Flights'][0]['Pilot_Slot_3']['Callsign'];
}
else
{
    
$field38='';
}
//$field39=$debrief['Flights'][1]['Pilot_Slot_3']['Callsign'];
//$field40=$debrief['Flights'][2]['Pilot_Slot_3']['Callsign'];
//$field44=$debrief['Flights'][3]['Pilot_Slot_3']['Callsign'];
//$field42=$debrief['Flights'][4]['Pilot_Slot_3']['Callsign'];
if(isset($debrief['Flights'][0]['Pilot_Slot_4']['Callsign']))
{
    
$field43=$debrief['Flights'][0]['Pilot_Slot_4']['Callsign'];
}
else
{
    
$field43='';
}
//$field44=$debrief['Flights'][1]['Pilot_Slot_4']['Callsign'];
//$field45=$debrief['Flights'][2]['Pilot_Slot_4']['Callsign'];
//$field46=$debrief['Flights'][3]['Pilot_Slot_4']['Callsign'];
//$field47=$debrief['Flights'][4]['Pilot_Slot_4']['Callsign'];

if(isset($debrief['Flights'][0]))
{
    
$Zwischenrechnung $debrief['Flights'][0]['AA_Kills'] + $debrief['Flights'][0]['AG_Kills'] + $debrief['Flights'][0]['AS_Kills'] + $debrief['Flights'][0]['AN_Kills'];
    
$field48=$Zwischenrechnung;
}
else
{
    
$field48='';
}


if(isset(
$debrief['Flights'][0]))
{
    
$field49=$debrief['Flights'][0]['AA_Kills'];
}
else 
{
        
$field49='';
}


            
if(isset(
$debrief['Flights'][0]))
{
    
$field50=$debrief['Flights'][0]['AG_Kills'];
}
else 
{
        
$field50='';
}

if(isset(
$debrief['Flights'][0]))
{
    
$field51=$debrief['Flights'][0]['AS_Kills'];
}
else 
{
        
$field51='';
}
if(isset(
$debrief['Flights'][0]))
{
    
$field52=$debrief['Flights'][0]['AN_Kills'];
}
else 
{
        
$field52='';
}


if(
is_array($debrief['Flights'][0]['Destroyed_Targets']))
            {
                foreach(
$debrief['Flights'][0]['Destroyed_Targets'] as $keys => $value)
                {
                    
$string $value ' * ' $keys
                    
                    
$field53=$string 
                                    
'
                                
                                    '
;
                }
            }
            else
            {
                
$field53='';
            }

            
$keys array_keys($debrief['Weapons']);
                foreach(
$keys as $value)
                {
                    if(
$debrief['Weapons'][$value]['Fired'] > 0)
                    {
                        
$Prozent round(($debrief['Weapons'][$value]['Hit'] / $debrief['Weapons'][$value]['Fired']) * 1000);
                        
$field54=$Prozent .= ' %';
                    }
                    else
                    {
                        
$field54='';
                    }
                    
                }
                

                

                


                
            
// Schreibe in die Tabelle
$sql "INSERT INTO debrief 

    (Country, Mission_Date, Mission_Time, Host_Type, Game_Type, human_player_count, Mission_Name, Flight_Callsign0, Mission_Type0, 
    Ship_Nr0, Aircraft_Type0, Pilot_Slot_0_1, Pilot_Slot_0_2, Pilot_Slot_0_3, Pilot_Slot_0_4, All_Kills, AA_Kills, AG_Kills, AS_Kills,
    AN_Kills, Destroyed_Targets, Gdmgpercentage)

VALUES 

    (:Country, :Mission_Date, :Mission_Time, :Host_Type, :Game_Type, :human_player_count, :Mission_Name, :Flight_Callsign0, :Mission_Type0, 
    :Ship_Nr0, :Aircraft_Type0, :Pilot_Slot_0_1, :Pilot_Slot_0_2, :Pilot_Slot_0_3, :Pilot_Slot_0_4, :All_Kills, :AA_Kills, :AG_Kills, :AS_Kills,
    :AN_Kills, :Destroyed_Targets, :Gdmgpercentage)"
;

// Prepare - zum Schutz vor injections    
$schreiben $conn->prepare($sql);

// Ausführen - execute des Arrays mit ausgewählten, oben definierten Variablen
$schreiben->execute(array(':Country'=>$field1,  
                        
':Mission_Date'=>$field2,  
                        
':Mission_Time'=>$field3
                        
':Host_Type'=>$field4
                        
':Game_Type'=>$field5
                        
':human_player_count'=>$field6
                        
':Mission_Name'=>$field7,
                        
':Flight_Callsign0'=>$field8
//                        ':Flight_Callsign1'=>$field9,
//                          ':Flight_Callsign2'=>$field10,
//                          ':Flight_Callsign3'=>$field11,
//                          ':Flight_Callsign4'=>$field12,
                          
':Mission_Type0'=>$field13,
//                          ':Mission_Type1'=>$field14,
//                          ':Mission_Type2'=>$field15,
//                          ':Mission_Type3'=>$field16,
//                          ':Mission_Type4'=>$field17,
                          
':Ship_Nr0'=>$field18,
//                          ':Ship_Nr1'=>$field19,
//                          ':Ship_Nr2'=>$field20,
//                          ':Ship_Nr3'=>$field21,
//                          ':Ship_Nr4'=>$field22,
                          
':Aircraft_Type0'=>$field23,
//                          ':Aircraft_Type1'=>$field24,
//                          ':Aircraft_Type2'=>$field25,
//                          ':Aircraft_Type3'=>$field26,
//                          ':Aircraft_Type4'=>$field27,
                          
':Pilot_Slot_0_1'=>$field28,
//                          ':Pilot_Slot_1_1'=>$field29,
//                          ':Pilot_Slot_2_1'=>$field30,
//                          ':Pilot_Slot_3_1'=>$field31,
//                          ':Pilot_Slot_4_1'=>$field32,
                          
':Pilot_Slot_0_2'=>$field33,
//                          ':Pilot_Slot_1_2'=>$field34,
//                          ':Pilot_Slot_2_2'=>$field35,
//                          ':Pilot_Slot_3_2'=>$field36,
//                          ':Pilot_Slot_4_2'=>$field37,
                          
':Pilot_Slot_0_3'=>$field38,
//                          ':Pilot_Slot_1_3'=>$field39,
//                          ':Pilot_Slot_2_3'=>$field40,
//                          ':Pilot_Slot_3_3'=>$field41,
//                          ':Pilot_Slot_4_3'=>$field42,
                          
':Pilot_Slot_0_4'=>$field43,
//                          ':Pilot_Slot_1_4'=>$field44,
//                          ':Pilot_Slot_2_4'=>$field45,
//                          ':Pilot_Slot_3_4'=>$field46,
//                          ':Pilot_Slot_3_4'=>$field47,
                          
'All_Kills'=>$field48,
                          
'AA_Kills'=>$field49,
                          
'AG_Kills'=>$field50,
                          
'AS_Kills'=>$field51,
                          
'AN_Kills'=>$field52,
                          
'Destroyed_Targets'=>$field53,
                          
'Gdmgpercentage'=>$field54));



//Verbindung zur Datenbank schliessen




//////////////////////Ende des Scripts //////////////////////////////////
    
?>
Jetzt hänge ich aber.


Folgendes wird angezeigt. Abgerufen aus dem Array und dann wird gezählt und gerechnet und addiert. Und am Ende wird alles zusammengefasst und als Gesamtergebnis angezeigt (Natürlich nur teilweise copy&paste den Code rauskopiert...den der für mich relevant ist..die siebte Zeile, Gesamtziele Statistik:

PHP-Code:
        //Siebte Zeile Ziel-Statistik
        
echo
            
'
                <tr>
                    <td colspan="1" class="' 
$farbe  '">Ziele</td>
            '
;
            
        for(
$i2 0$i2 $debrief['Flights'][$i]['Ship_Nr']; $i2++)
        {
            
$Slot $i2 1;
            
$PilotSlot 'Pilot_Slot_' $Slot;
            echo
                    
'
                        <td class="' 
$farbe  '">
                    '
;
            if(
is_array($debrief['Flights'][$i][$PilotSlot]['Destroyed_Targets']))
            {
                foreach(
$debrief['Flights'][$i][$PilotSlot]['Destroyed_Targets'] as $keys => $value)
                {
                    
$string $value ' * ' $keys
                    echo
                        
$string 
                        
'
                            <br />
                        '
;
                }
            }
            else
            {
                echo 
'&nbsp;';
            }
            
            echo
                    
'
                        </td>
                    '
;
        }
        
        echo
            
'
                <td class="' 
$farbe  '">
            '
;
        
        if(
is_array($debrief['Flights'][$i]['Destroyed_Targets']))
        {
            foreach(
$debrief['Flights'][$i]['Destroyed_Targets'] as $keys => $value)
            {
                
$string $value ' * ' $keys
                echo
                    
$string 
                    
'
                        <br />
                    '
;
            }
        }
        else
        {
            echo 
'&nbsp;';
        }
            
        echo
            
'
                </td>
                ' 
$colspan '
                <td>&nbsp;</td>
            </tr>
            '
;
    } 

Das sieht dann folgendermaßen aus:

stats.PNG


Das hier habe ich jetzt geschrieben:

PHP-Code:
if(is_array($debrief['Flights'][0]['Destroyed_Targets']))
            {
                foreach(
$debrief['Flights'][0]['Destroyed_Targets'] as $keys => $value)
                {
                    
$string $value ' * ' $keys
                    
                    
$field53=$string 
                                    
'
                                
                                    '
;
                }
            }
            else
            {
                
$field53='';
            } 

Ich erhalte aber nur den Wert "1*Runner" zurück.

Also ist als Gesamtziele nur "1 * Runner" in der VarChar (20.000 Zeichen) Spalte der Tabelle. Auch wenn ich als Eigenschaft der Spalte Text einstelle.

Ich verstehe ehrlich gesagt nicht so ganz wie ich jetzt die Werte zusammenzählen lasse. Ich dachte die wären schon zusammengezählt.

Siehe hier zu den Teil aus der parser.php:

PHP-Code:
            //Zielstatistik des Flights berechnen
            
$debrief['Flights'][$i]['AA_Kills'] = $debrief['Flights'][$i]['AA_Kills'] + $debrief['Flights'][$i][$PilotSlot]['AA_Kills'];
            
$debrief['Flights'][$i]['AG_Kills'] = $debrief['Flights'][$i]['AG_Kills'] + $debrief['Flights'][$i][$PilotSlot]['AG_Kills'];
            
$debrief['Flights'][$i]['AS_Kills'] = $debrief['Flights'][$i]['AS_Kills'] + $debrief['Flights'][$i][$PilotSlot]['AS_Kills'];
            
$debrief['Flights'][$i]['AN_Kills'] = $debrief['Flights'][$i]['AN_Kills'] + $debrief['Flights'][$i][$PilotSlot]['AN_Kills'];
            
            
$pattern '@^(.*)downed\sby\s' $debrief['Flights'][$i][$PilotSlot]['Callsign'] . '@iUm';
            
$pattern2 '@^(.*)destroyed\sby\s' $debrief['Flights'][$i][$PilotSlot]['Callsign'] . '@iUm';
            for(
$i4 0$i4 $debrief['Flights'][$i]['Event_Count']; $i4++)
            {
                if(
preg_match($pattern$debrief['Flights'][$i]['events']['events'][$i4], $subpattern))
                {
                    
$target trim($subpattern[1]);
                    
$debrief['Flights'][$i][$PilotSlot]['Destroyed_Targets'][$target]++;
                    
$debrief['Flights'][$i]['Destroyed_Targets'][$target]++;
                    
$debrief['Destroyed_Targets'][$target]++;
                }
                if(
preg_match($pattern2$debrief['Flights'][$i]['events']['events'][$i4], $subpattern))
                {
                    
$target trim($subpattern[1]);
                    
$debrief['Flights'][$i][$PilotSlot]['Destroyed_Targets'][$target]++;
                    
$debrief['Flights'][$i]['Destroyed_Targets'][$target]++;
                    
$debrief['Destroyed_Targets'][$target]++;
                }
            } 

Irgendwas stimmt da nicht. Entweder hole ich nicht alle Infos heraus oder mache beim INSERT was falsch und er schreibt mir nur den einen String "1 * Runner" da rein. (Destroyed Targets)

stats.JPG

Ich stehe da komplett auf dem Schlauch wo das Problem überhaupt ist. Lese ich nicht alles aus oder schreibe ich nicht ordentlich in die Spalte?
Wenn ich wüsste WAS ich da falsch mache, würde mir das schon sehr weiter helfen.
__________________

Asrock FX 990 Extreme 3 | AMD FX 6300 (6 core) |Adata 8GB DDR-3 1600 | Asus AMD R9 270X OC 2GB | Creative Audigy EX Platinum | TrackIR 5 | Saitek X52 | Win 7 Pro x64 | Linux Mint x64 | Coolermaster Modular 620W

Geändert von Duke49th (28.02.2016 um 13:11 Uhr).
Duke49th ist offline   Mit Zitat antworten
Alt 13.05.2016, 11:13   #2 (permalink)
Administrator 10 Jahre hx3
5000 Beiträge
 
Benutzerbild von Atomic
 
Registriert seit: 21.02.2003
Ort: Freiburg im Breisgau
Alter: 32
Beiträge: 5.139
Atomic eine Nachricht über ICQ schicken Atomic eine Nachricht über Skype™ schicken
Standard

Ist das noch relevant?
__________________
http://webagentur-walde.de/
Atomic ist offline   Mit Zitat antworten
Alt 13.05.2016, 17:36   #3 (permalink)
5000 Beiträge
 
Benutzerbild von Duke49th
 
Registriert seit: 06.10.2006
Alter: 37
Beiträge: 7.882
Standard

Nope haha. Das war auch totaler Bullshit von mir^^

Sieht mittlerweile auch gänzlich anders aus der Code.

Vor allem aber ist jetzt auch die Datenbank inzwischen vernünftig. Als ich den Code da gemacht habe, wusste ich von Normalisierung und Co. nix.
__________________

Asrock FX 990 Extreme 3 | AMD FX 6300 (6 core) |Adata 8GB DDR-3 1600 | Asus AMD R9 270X OC 2GB | Creative Audigy EX Platinum | TrackIR 5 | Saitek X52 | Win 7 Pro x64 | Linux Mint x64 | Coolermaster Modular 620W
Duke49th ist offline   Mit Zitat antworten
Antwort


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

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Arma III Multiplayer Performance Hilfe ChristianP112 Technische Fragen & Probleme 2 12.03.2015 22:21
Hilfe bei Servereinstellungen PornoSchlumpf Editing & Scripting 2 07.07.2014 16:22
Suche Hilfe zum einstellen eines ArmA 3 Altis Life Server Icecreamx Rollenspiel & Zombie Ecke 3 27.02.2014 13:11
Brauche hilfe bei ein zwei auslöser Lotos Editing & Scripting 4 18.01.2014 14:41
Script hilfe gesucht (RP Server) G00DPiXel Editing & Scripting 0 21.08.2013 17:16


Kontakt - HX3.de - Archiv - Nach oben

Angetrieben durch vBulletin, Entwicklung von Philipp Dörner & Tobias



SEO by vBSEO 3.2.0 ©2008, Crawlability, Inc.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116