Antworten auf deine Fragen:
Neues Thema erstellen

PHP Script mit MYSQL

bignevs

Nicht mehr ganz neu hier

Hallo


Ich habe mir ein Browsergame bei ebay gekauft, ist ja auch nicht schlecht der kauf selber liegt zwar schon ein jahr zurück aber jetzt versuche ich was hinzu zufügen...

in den game geht es um ein aufbauspiel mit rohstoffe, es gibt holz stein und gold

ich möchte gerne noch getreide hinzufügen

habe dazu die rohstoff.php geändert allso getreide dazu, in der sql habe ich settle_mat4 hinzugefügt

aber er gibt für das getreide keine rohstoffe es bleibt immer auf null


hier mal ein einblick

Code:
    // Nicht genug Rohstoffe verf�gbar
                if($_SESSION['settle_mat'][1] < $cost[1] OR $_SESSION['settle_mat'][2] < $cost[2] OR $_SESSION['settle_mat'][3] <         $cost[3] OR $_SESSION['settle_mat'][4] < $cost[4]){
                    infoMsg(0, "".index_116."");
                    define("SHOW_ONLY_ERROR", true);
                }
                // Bauen
                else {
                    // Session aktualisieren
                    $_SESSION['settle_mat'][1] -= $cost[1];
                    $_SESSION['settle_mat'][2] -= $cost[2];
                    $_SESSION['settle_mat'][3] -= $cost[3];
                    $_SESSION['settle_mat'][4] -= $cost[4];
                    
                    // Auftrag in Datenbank schreiben
mysql_query("UPDATE ". SETTLE_TABLE ." SET settle_mat1 = settle_mat1 - ". $cost[1] .", settle_mat2 = settle_mat2 - ". $cost[2] .", settle_mat3 = settle_mat3 - ". $cost[3]  .", settle_mat4 = settle_mat4 - ". $cost[4] ." WHERE settle_id = ". $_SESSION['this_settle'] .""); 
mysql_query("INSERT INTO ". DO_BUILD_TABLE ." SET settle_id = ". $_SESSION['this_settle'] .", place_id = ". $this_place_id .", build_end = ". $build_end .", build_start = ". time()."");
mysql_query("INSERT INTO ". SETTLE_PLACE_TABLE ." Set user_id = ". $_SESSION['usr_id'] .", settle_id = ". $_SESSION['this_settle'] .", place_id = ". $this_place_id .", building_id = ". $b_id);


und in der sql habe ich das gemacht

settle_id isle_id isle_part settle_user settle_opening settle_no_conversion settle_last_pulldown settle_name settle_create settle_last_change settle_points settle_points_last settle_b10_war settle_attack settle_last_attack settle_u1 settle_u2 settle_u3 settle_u4 settle_u5 settle_u6 settle_u7 settle_u8 settle_u9 settle_s1 settle_s2 settle_s3 settle_s4 settle_s5 settle_s6 settle_mat1 settle_mat2 settle_mat3 settle_mat4 settle_mat1_check settle_mat2_check settle_mat3_check settle_mat4_check
Bearbeiten Löschen 29 37 1 95 1 1 0 Unbenannte Siedlung 1257602214 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 470 528 384 0 1257602788.7899 1257602787.0612 1257602789.9999 0


warum fügt er keine rohstoffe hinzu?
 
Zuletzt bearbeitet von einem Moderator:

bignevs

Nicht mehr ganz neu hier

AW: PHP Script mit MYSQL

ich lieste mal die ganze php.

habe hinzugefügt das alles mit cost4 id 4 'settle_mat'][4]

in der sql habe ich settle_mat 4 und settle_met_check4 manuel hinzu gefügt...

vieleicht seht ihr warum er es nicht einlesen tut

Code:
<?php
/*/ -- -- -- -- -- -- -- 
| Rathaus
/ -- -- -- -- -- -- -- */

//
// Bau Auftrag
//

if(isset($_GET['build']) AND !isset($_SESSION['build'])){
    $b_id = $_GET['build'];

    // Fehlerhafte Eingabe!
    if(!isset($CONFIG_BUILDING[$b_id])){
        infoMsg(0, "".index_32."");
        define("SHOW_ONLY_ERROR", true);
    }
    // Wasser Bauplatz
    elseif($CONFIG_BUILD_PLACE[$this_place_id][2] == 1 AND $b_id != 8){
        infoMsg(0, "".index_113."");
        define("SHOW_ONLY_ERROR", true);
    }
    // Hafenbau auf normalem Bauplatz
    elseif($CONFIG_BUILD_PLACE[$this_place_id][2] == 0 AND $b_id == 8){
        infoMsg(0, "".index_114."");
        define("SHOW_ONLY_ERROR", true);
    }
    // Bauen
    else {
        /* ---
        Voraussetzungen
        Es werden die Geb�ude, die auf den verschiedenen Baupl�tzen gebaut sind
        in ein Array eingelesen. Es wird jeweils das Geb�ude mit der h�chsten
        Stufe gespeichert und verwertet.
        --- */
        
        // Voraussetzungen pr�fen
        $SHOW_BUILDING = 1; // Wenn diese Varibale = 0 ist, sind die Voraussetzungen nicht erf�llt!
        
        foreach($CONFIG_BUILDING[$b_id][5] AS $v_geb => $v_stufe){
            if(!isset($SETTLE_BUILDING[$v_geb]) OR $SETTLE_BUILDING[$v_geb][1] < $v_stufe) {
                $SHOW_BUILDING = 0;
                break;
            }
        }

        /* ---
        Bauen
        --- */ 

        // Bauvoraussetzungen erf�llt
        if($SHOW_BUILDING == 1){
            // Maximale Baumenge erreicht
            if($SETTLE_BUILDING[$b_id][0] >= $CONFIG_BUILDING[$b_id][6]){
                infoMsg(0, "".index_115."");
                define("SHOW_ONLY_ERROR", true);
            }
            // Bauen
            else {
                // Bauzeit
                $buildtime = buildTime($CONFIG_BUILDING[$b_id][3], 0);
                $build_end = $buildtime + time();
                
                // Baukosten
                $cost[1] = buildCost($CONFIG_BUILDING[$b_id][0], 0);
                $cost[2] = buildCost($CONFIG_BUILDING[$b_id][1], 0);
                $cost[3] = buildCost($CONFIG_BUILDING[$b_id][2], 0);
                $cost[4] = buildCost($CONFIG_BUILDING[$b_id][4], 0);
                
                // Nicht genug Rohstoffe verf�gbar4
                if($_SESSION['settle_mat'][1] < $cost[1] OR $_SESSION['settle_mat'][2] < $cost[2] OR $_SESSION['settle_mat'][3] <         $cost[3] OR $_SESSION['settle_mat'][4] < $cost[4]){
                    infoMsg(0, "".index_116."");
                    define("SHOW_ONLY_ERROR", true);
                }
                // Bauen
                else {
                    // Session aktualisieren
                    $_SESSION['settle_mat'][1] -= $cost[1];
                    $_SESSION['settle_mat'][2] -= $cost[2];
                    $_SESSION['settle_mat'][3] -= $cost[3];
                    $_SESSION['settle_mat'][4] -= $cost[4];
                    
                    // Auftrag in Datenbank schreiben
mysql_query("UPDATE ". SETTLE_TABLE ." SET settle_mat1 = settle_mat1 - ". $cost[1] .", settle_mat2 = settle_mat2 - ". $cost[2] .", settle_mat3 = settle_mat3 - ". $cost[3]  .", settle_mat4 = settle_mat4 - ". $cost[4] ." WHERE settle_id = ". $_SESSION['this_settle'] .""); 
mysql_query("INSERT INTO ". DO_BUILD_TABLE ." SET settle_id = ". $_SESSION['this_settle'] .", place_id = ". $this_place_id .", build_end = ". $build_end .", build_start = ". time()."");
mysql_query("INSERT INTO ". SETTLE_PLACE_TABLE ." Set user_id = ". $_SESSION['usr_id'] .", settle_id = ". $_SESSION['this_settle'] .", place_id = ". $this_place_id .", building_id = ". $b_id);
                    
                    // Session aktualisieren
                    $_SESSION['build'] = array($this_place_id, $build_end);
                    $_SESSION['settle_place'][$this_place_id] = array($b_id, 0);

                    // Site Reload
                    header("Location: index.php?". SID ."&place_id=". $this_place_id);    
                    exit;        
                }
            }
        }
    }
}

//
// Bau abbrechen
//

elseif(isset($_GET['build_break']) AND isset($_SESSION['build'])){
    // Daten
    $place_id = $_SESSION['build'][0];
    $building_id = $_SESSION['settle_place'][$place_id][0];
    
    // Baukosten
    $cost[1] = buildCost($CONFIG_BUILDING[$building_id][0], 0);
    $cost[2] = buildCost($CONFIG_BUILDING[$building_id][1], 0);
    $cost[3] = buildCost($CONFIG_BUILDING[$building_id][2], 0);
    $cost[4] = buildCost($CONFIG_BUILDING[$building_id][4], 0);
    
    // Rohstoffe aktualisieren
    mysql_query("UPDATE ". SETTLE_TABLE ." SET settle_mat1 = settle_mat1 + ". $cost[1] .", settle_mat2 = settle_mat2 + ". $cost[2] .", settle_mat3 = settle_mat3 + ". $cost[3]  .", settle_mat4 = settle_mat4 + ". $cost[4] .", WHERE settle_id = ". $_SESSION['this_settle'] .""); 
    
    // Session aktualisieren
    if($_SESSION['settle_mat'][1] + $cost[1] < $_SESSION['settle_save']) $_SESSION['settle_mat'][1] += $cost[1]; else $_SESSION['settle_mat'][1] = $_SESSION['settle_save'];
    if($_SESSION['settle_mat'][2] + $cost[2] < $_SESSION['settle_save']) $_SESSION['settle_mat'][2] += $cost[2]; else $_SESSION['settle_mat'][2] = $_SESSION['settle_save'];
    if($_SESSION['settle_mat'][3] + $cost[3] < $_SESSION['settle_save']) $_SESSION['settle_mat'][3] += $cost[3]; else $_SESSION['settle_mat'][3] = $_SESSION['settle_save'];
    if($_SESSION['settle_mat'][4] + $cost[4] < $_SESSION['settle_save']) $_SESSION['settle_mat'][4] += $cost[4]; else $_SESSION['settle_mat'][4] = $_SESSION['settle_save'];    

    // Auftrag l�schen
    mysql_query("DELETE FROM ". DO_BUILD_TABLE ." WHERE settle_id = ". $_SESSION['this_settle'] ."");
    mysql_query("DELETE FROM ". SETTLE_PLACE_TABLE ." WHERE settle_id = ". $_SESSION['this_settle'] ." AND place_id = ". $place_id);
    
    unset($_SESSION['settle_place'][$place_id]);
    unset($_SESSION['build']);
    
    // Site Reload
    header("Location: index.php?". SID ."&place_id=". $this_place_id);    
    exit;        
}



//
// Nur anzeigen, wenn kein Fehler aufgetreten ist
//

if(!defined("SHOW_ONLY_ERROR")){
    //
    // Es wird geaut bzw. ausgebaut!
    //
    
    if(isset($_SESSION['build'])) {
        echo "<h1>".index_117."</h1>";
        
        $place_id = $_SESSION['build'][0];
        
        // Es wird bereits ein anderes Geb�ude gebaut bzw. ausgebaut (Anderer Bauplatz!)
if($place_id != $this_place_id){
infoMsg(0, "".index_118." (".index_119." ". $place_id .")!<br /><br /><a href=\"index.php?". SID ."&place_id=". $place_id ."\">".index_120." ". $place_id ."</a>");
        }
        // Auf diesem Bauplatz wird ein Geb�ude errichetet!
        else {
            // Daten
            $building_id = $_SESSION['settle_place'][$place_id][0];
            
            // Ausgabe
echo "<div style=\"text-align: center;\">
<br /><span style=\"color: green; font-size: 16px;\"><b>".index_121."!</b></span><br /><br />
<img src=\"http://www.psd-tutorials.de/modules/Forum/images/building/". $building_id .".jpg\" /><br /><br />
<a class=\"buildingName\" href=\"index.php?". SID ."&p=help&sub=building&id=". $building_id ."\">". $LANG_BUILDING[$building_id][0] ."</a><br /><br />
".main_18.": <b><b id=\"timer1\" title=\"time1_". ($_SESSION['build'][1] - time()) ."_type1_1\">".main_19."</b></b><br />
".main_33.": <b>". convertDate($_SESSION['build'][1]) ."</b><br /><br />";

if(gameconfig('werbung_banner')==1){get_werbung('468x60');}

echo"<br><a href=\"index.php?". SID ."&place_id=". $this_place_id ."&build_break=on\" class=\"link_bg_red\">".main_20."</a></div>";
        }
    }
    
    //
    // Geb�ude auflisten
    //
    
    else {
        echo "<h1>".main_34." ...</h1>";
        
        echo "<table class=\"main_table\" width=\"100%\">
        
    <tr>
    <td colspan=\"2\"></td>
    <td><img src=\"http://www.psd-tutorials.de/modules/Forum/images/icon/mat1.png\" /></td>
    <td><img src=\"http://www.psd-tutorials.de/modules/Forum/images/icon/mat2.png\" /></td>
    <td><img src=\"http://www.psd-tutorials.de/modules/Forum/images/icon/mat3.png\" /></td>
    <td><img src=\"http://www.psd-tutorials.de/modules/Forum/images/icon/mat4.png\" /></td>
    
    <td></td>
    </tr>    
        
        ";
        
        
        
        foreach($CONFIG_BUILDING AS $b_id => $b_array){
            /* ---
            Voraussetzungen
            Es werden die Geb�ude, die auf den verschiedenen Baupl�tzen gebaut sind
            in ein Array eingelesen. Es wird jeweils das Geb�ude mit der h�chsten
            Stufe gespeichert und verwertet.
            --- */
            
            // Voraussetzungen pr�fen
            $SHOW_BUILDING = 1; // Wenn diese Varibale = 0 ist, sind die Voraussetzungen nicht erf�llt!
            
            foreach($b_array[5] AS $v_geb => $v_stufe){
                if(!isset($SETTLE_BUILDING[$v_geb]) OR $SETTLE_BUILDING[$v_geb][1] < $v_stufe) {
                    $SHOW_BUILDING = 0;
                    break;
                }
            }
            
            /* ---
            Bauverarbeitung
            --- */ 

            // Bauvoraussetzungen noch nicht erf�llt
            if($SHOW_BUILDING == 0){
echo "<tr><td class=\"row1\" width=\"8%\"><div class=\"buildingImage\" style=\"".AlphaSelector("http://www.psd-tutorials.de/modules/Forum/images/building/small/".$b_id.".png") ."\"></div></td>
<td class=\"row1\" width=\"40%\">
<a href=\"index.php?". SID ."&p=help&sub=building&id=". $b_id ."\" class=\"help\">". $LANG_BUILDING[$b_id][0] ."</a><br />
<font class=\"text_gray_light\">
".main_35.": <b>". $b_array[4] ."</b><br />
".main_36.": <b>". $b_array[6] ."x</b>
</font><br /></td>
<td class=\"row2\" align=\"center\" colspan=\"4\"><font class=\"text_gray\"><i><a href=\"index.php?". SID ."&p=help&sub=building&id=". $b_id ."\">".main_37."</a> ".main_38."!</i></font></td></tr>";
            }
/*            // Maximale Baumenge erreicht
            elseif(isset($SETTLE_BUILDING[$b_id]) AND $SETTLE_BUILDING[$b_id][0] >= $b_array[6]){
                echo "<tr><td class=\"row1\" width=\"8%\">". showAlphaImage("http://www.psd-tutorials.de/modules/Forum/images/building/small/". $b_id .".png") ."</td>
                <td class=\"row1\" width=\"40%\">
                    <a href=\"index.php?". SID ."&p=help&sub=building&id=". $b_id ."\" class=\"help\">". $LANG_BUILDING[$b_id][0] ."</a><br />
                    <font class=\"text_gray_light\">
                    Maximale Stufe: <b>". $b_array[4] ."</b><br />
                    Maximale Baumenge: <b>". $b_array[6] ."x</b>
                    </font><br /></td>
                <td class=\"row2\" align=\"center\" colspan=\"2\"><i><b><font color=\"red\">Maximale Bauanzahl des Geb&auml;udes erreicht!</font></b></i></td></tr>";
            }
*/            // Bau ist m�glich! (Maximale Baumenge noch nicht erreicht)
            elseif(!isset($SETTLE_BUILDING[$b_id]) OR (isset($SETTLE_BUILDING[$b_id]) AND $SETTLE_BUILDING[$b_id][0] < $b_array[6])) {
                // Bauzeit
                $buildtime = buildTime($b_array[3], 0);
                
                // Baukosten
                $cost[1] = buildCost($b_array[0], 0);
                $cost[2] = buildCost($b_array[1], 0);
                $cost[3] = buildCost($b_array[2], 0);
                $cost[4] = buildCost($b_array[4], 0);
    
                // Baubar in: XX
                $sec_to_build = 0;
                if($_SESSION['usr_gold'] > 0){
                    $build_in = array();
                    
                    $build_in[] = ($cost[1] - $_SESSION['settle_mat'][1]) / $_SESSION['prod'][1][1];
                    $build_in[] = ($cost[2] - $_SESSION['settle_mat'][2]) / $_SESSION['prod'][2][1];
                    $build_in[] = ($cost[3] - $_SESSION['settle_mat'][3]) / $_SESSION['prod'][3][1];
                    $build_in[] = ($cost[4] - $_SESSION['settle_mat'][4]) / $_SESSION['prod'][4][1];
    
                    if(!empty($build_in)){
                        $build_in = BubbleSort($build_in,1);
                        $sec_to_build = $build_in[0];
                    }
                }
                
                // Ausgabe
                
                if(isset($_SESSION['build']) AND $_SESSION['build'][0] == $b_id) $submit_class = "row3";
                else $submit_class = "submit";
                
echo "<tr><td class=\"row1\" width=\"8%\"><div class=\"buildingImage\" style=\"".AlphaSelector("http://www.psd-tutorials.de/modules/Forum/images/building/small/".$b_id.".png") ."\"></div></td><td class=\"row1\" width=\"40%\">
<a href=\"index.php?". SID ."&p=help&sub=building&id=". $b_id ."\" class=\"help\">". $LANG_BUILDING[$b_id][0] ."</a><br />
".main_39.": ". ((isset($SETTLE_BUILDING[$b_id][0])) ? bold($SETTLE_BUILDING[$b_id][0] ."x") : colorGray("<i>".main_40."!</i>")) ."<br />
".main_41.": <b>". $b_array[6] ."x</b><br />
".main_42.": <span style=\"color: green;\"><b>". formatTime($buildtime) ."</b></span>
". (($_SESSION['usr_gold'] > 0 AND $sec_to_build > 0) ? "<br />".main_43.": <b>". colorGreen(formatTimeSmall(round($sec_to_build))) ."</b>" : "") ."</td>
<td class=\"row2\" width=\"5%\">". (($_SESSION['settle_mat'][1] < $cost[1]) ? bold(colorRed($cost[1])) : $cost[1]) ."</td>
<td class=\"row2\" width=\"5%\">". (($_SESSION['settle_mat'][2] < $cost[2]) ? bold(colorRed($cost[2])) : $cost[2]) ."</td>
<td class=\"row2\" width=\"5%\">". (($_SESSION['settle_mat'][3] < $cost[3]) ? bold(colorRed($cost[3])) : $cost[3]) ."</td>
<td class=\"row2\" width=\"5%\">". (($_SESSION['settle_mat'][4] < $cost[4]) ? bold(colorRed($cost[4])) : $cost[4]) ."</td>

<td class=\"". $submit_class ."\" align=\"center\"><a href=\"index.php?". SID ."&place_id=". $this_place_id ."&build=". $b_id ."\" class=\"". (($_SESSION['settle_mat'][1] < $cost[1] OR $_SESSION['settle_mat'][2] < $cost[2] OR $_SESSION['settle_mat'][3] < $cost[3]OR $_SESSION['settle_mat'][4] < $cost[4]) ? "link_bg_gray" : "link_bg_green") ."\">".main_44."!</a></td></tr>";
            }
        }
        
        echo "</table>";
    }
}

?>
 
Zuletzt bearbeitet von einem Moderator:

Haetti

Nicht mehr ganz neu hier

AW: PHP Script mit MYSQL

das ist für mich noch immer schwer zu sagen. So wie's aussieht, ist diese Datei dafür zuständig Gebäude auszubauen und nicht Rohstoffe zu liefern. Wenn das so ist, ist dies natürlich auch die falsche Datei.

Hast du mal einfach in der MySQL-DB eine Anzahl an Getreiden eingefügt, um zu sehen, was passiert? Somit kannst du nachvollziehen, ob kein Getreide gespeichert wird, oder ob's einfach nicht angezeigt wird.

Gruss
Hätti
 

bignevs

Nicht mehr ganz neu hier

AW: PHP Script mit MYSQL

hi

habe es soweit hin bekommen das er es in die sql schreibt, de startrohstoffe, aber er aktualieseirt die neuen rohstoffe nicht in die sql bleibt immer die startrohstoffe drin obwohl er im game die rohstoffe getreide erhöt, die erhöhung wird immer erst dann aktualisiert wenn ich mich ausloge und dann wieder einloge, kennt einer das problem????
 
AW: PHP Script mit MYSQL

Dann schau mal, was für Funktionen beim Ausloggen/Einloggen aufgerufen werden. Eine von denen muss ja dann dafür verantwortlich sein, dass das Getreide aktualisiert wird..

gruß
 

Chriss1987

me.drinkCoffee();

AW: PHP Script mit MYSQL

Hi,

wenn du die Rohstoffe aktualisierst, dann submittest du ja ein Formular, schon mal geschaut, ob ie entsprechenden Daten überhaupt übertragen werden? Also einfach mal $_POST anzeigen lassen, oder die $_SESSION anschauen, vielleicht wird das ja einfach nicht richtig übertragen. Des Weiteren einfach mal am Anfang des Scriptes alle Fehlermeldungen mit
PHP:
error_reporting(E_ALL);
aktivieren, vielleicht wird eine Variable nicht gesetzt...

Schöne Grüße aus dem verregneten Sauerland
Chriss
 

bignevs

Nicht mehr ganz neu hier

AW: PHP Script mit MYSQL

Danke für die infos


Jetzt kommt aber das

Notice: Undefined offset: 12 in /var/www/html/web1406/html/s4/inc/update/settle.php on line 146

das wäre die zeile
$VSESS['prod'][12] = $_SESSION['prod'][12];


Notice: Undefined offset: 12 in /var/www/html/web1406/html/s4/graphicview/settle.php on line 331

<td width=\"45%\" align=\"left\"><b>". $_SESSION['prod'][12][0] ."</b></td>


Notice: Undefined offset: 12 in /var/www/html/web1406/html/s4/graphicview/settle.php on line 374

<td><b>". $_SESSION['rohstoffabzug'][12] ."</b></td>

was mache ich hier falsch?
 

cebito

undefined

AW: PHP Script mit MYSQL

Im Editor gibt es so nützliche Hilfsmittel, wenn du die bitte demnächst benutzen würdest, vor allem, wenn der code etwas länger wird ;)



vielen Dank
 

bignevs

Nicht mehr ganz neu hier

AW: PHP Script mit MYSQL

hi

wie kann ich bei der met11 einen neuen array setzen er geht nur bis 4 kann mir da einer helfen,
die 7 geht nicht auch andere zahlen gehen nicht es muss eine array gesetzt werden damit der rohstoff gezählt wird...

hier der code


PHP:
 Daten in Sessions einlesen
+ ------------------------------------- + */
$_SESSION['rohstoffabzug'][1]=0;
$_SESSION['rohstoffabzug'][2]=0;	
$_SESSION['rohstoffabzug'][3]=0;
$_SESSION['rohstoffabzug'][11]=0;
// #################### Erstellte Sessions #######################

// (Siehe Session Name)
// .
// .
// ## $_SESSION['settle_data'] = array(Name, Punkte, Siedlungsnummer);
// ## $_SESSION['prod'][Material] = array(Produktion Stunde, Produktion Sekunde);

// #################### Daten - Ausgwählte Siedlung #######################

// Aktuelle Siedlung auswählen
$sel_sql = mysql_query("SELECT settle_id FROM ". SETTLE_TABLE ." WHERE settle_opening = 1 AND settle_user = ". $_SESSION['usr_id'] ."");
// -> Keine Siedlung als "geöffnet" eingetragen
if(mysql_num_rows($sel_sql) == 0){
	$sel_sql = mysql_query("SELECT settle_id FROM ". SETTLE_TABLE ." WHERE settle_user = ". $_SESSION['usr_id'] ." LIMIT 1");

	// -> Spieler besitzt keine Siedlung
	if(mysql_num_rows($sel_sql) == 0) $_SESSION['this_settle'] = 0;
	// -> Siedlung in Session speichern, settle_opening speichern
	else {
		$settle_id = mysql_result($sel_sql, 0);
		$_SESSION['this_settle'] = $settle_id;
		mysql_query("UPDATE ". SETTLE_TABLE ." Set settle_opening = 1 WHERE settle_id = ". $settle_id ."");
	}
}
// -> Siedlung in Session speichern
else {
	$_SESSION['this_settle'] = mysql_result($sel_sql, 0);
}

// Daten einlesen, wenn Spieler eine Siedlung besitzt
if($_SESSION['this_settle'] > 0){
	
	$military_data = createGameData("u", "settle");
	$ship_data = createGameData("s", "settle");
	
	// Anzahl der Felder (Building + Research + Military + Ship) die vor den Siedlungs-Felder (settle_pos1 ....) ausgelesen werden
	// -> Diese Zahl muss hinzuaddiert werden wenn man z.b. settle_pos1 abrufen will (mysql_fetch_row)
	$count_plusrow = $military_data[1] + $ship_data[1];

	$sql = mysql_query("SELECT ". $military_data[0] .", ". $ship_data[0] .", isle_part, settle_name, settle_mat1, settle_mat2, settle_mat3, settle_mat11, settle_points FROM ". SETTLE_TABLE ." WHERE settle_id = ". $_SESSION['this_settle'] ."");
	$row = mysql_fetch_row($sql);
	
	// ----------------------------------------
	// Allgemein
	$_SESSION['settle_data'] = array($row[$count_plusrow + 1], $row[$count_plusrow + 5], $row[$count_plusrow]);

	// Rohstoffe	
	$_SESSION['settle_mat'][1] = $row[$count_plusrow + 2];
	$_SESSION['settle_mat'][2] = $row[$count_plusrow + 3];
	$_SESSION['settle_mat'][3] = $row[$count_plusrow + 4];
	$_SESSION['settle_mat'][11] = $row[$count_plusrow + 7];

	// ----------------------------------------
	// Gebäude
	$_SESSION['settle_place'] = array(); // Session MUSS leer sein und existieren!

	$place_sql = mysql_query("SELECT place_id, building_id, building_level FROM ". SETTLE_PLACE_TABLE ." WHERE settle_id = ". $_SESSION['this_settle']);
	
	$prod_value[1] = 0; // Stündliche Produktion - Gold
	$prod_value[2] = 0; // Stündliche Produktion - Stein
	$prod_value[3] = 0; // Stündliche Produktion - Holz
	$prod_value[11] = 0; // Stündliche Produktion - Nahrung
	$save_value = 0; // Rohstofflangermenge

	while($place_row = mysql_fetch_row($place_sql)){
		$_SESSION['settle_place'][$place_row[0]] = array($place_row[1], $place_row[2]);

		// Stündliche Produktion aktualisieren
		if($place_row[1] == 2 AND $place_row[2] > 0) $prod_value[1] += prodMat(1, $place_row[2]); // Goldmine
		elseif($place_row[1] == 3 AND $place_row[2] > 0) $prod_value[2] += prodMat(2, $place_row[2]); // Steinbruch
		elseif($place_row[1] == 4 AND $place_row[2] > 0) $prod_value[3] += prodMat(3, $place_row[2]); // Holzfäller
		elseif($place_row[1] == 11 AND $place_row[2] > 0) $prod_value[11] += prodMat(11, $place_row[2]); // Nahrung
		elseif($place_row[1] == 5 AND $place_row[2] > 0) $save_value += prodSave($place_row[2]); // Rohstofflager
	}
	
		// Einheiten - Militär
	foreach($CONFIG_MILITARY AS $u_id => $u_array){
		$_SESSION['settle_military'][$u_id] = $row[$u_id - 1];
///Je nach Anzahl Einheiten Gold abziehen		
$prod_value[1]-=ceil($_SESSION['settle_military'][$u_id]/5);
$_SESSION['rohstoffabzug'][1]+=ceil($_SESSION['settle_military'][$u_id]/5);		
	}

	// Einheiten - Schiffe
	foreach($CONFIG_SHIP AS $s_id => $s_array){
		$_SESSION['settle_ship'][$s_id] = $row[$military_data[1] + $s_id - 1];
		
///Je nach Anzahl Schiffe Holz und Gold abziehen
$prod_value[1]-=ceil($_SESSION['settle_ship'][$s_id]/10);
$prod_value[3]-=ceil($_SESSION['settle_ship'][$s_id]/2);
$_SESSION['rohstoffabzug'][1]+=ceil($_SESSION['settle_ship'][$s_id]/10);
$_SESSION['rohstoffabzug'][3]+=ceil($_SESSION['settle_ship'][$s_id]/2);			
	}
		



// Wenn kein Gebäude gebaut wurde - Grundproduktion!
	if(empty($prod_value[1])) $prod_value[1] = prodMat(1, 0);
	if(empty($prod_value[2])) $prod_value[2] = prodMat(2, 0);
	if(empty($prod_value[3])) $prod_value[3] = prodMat(3, 0);
	if(empty($prod_value[11])) $prod_value[11] = prodMat(11, 0);
	if(empty($save_value)) $save_value = prodSave(0);
	
	
	


	



	// -> Session speichern
	$_SESSION['prod'][1] = array($prod_value[1], $prod_value[1] / (60*60));
	$_SESSION['prod'][2] = array($prod_value[2], $prod_value[2] / (60*60));
	$_SESSION['prod'][3] = array($prod_value[3], $prod_value[3] / (60*60));
	$_SESSION['prod'][11] = array($prod_value[11], $prod_value[11] / (60*60));
	
	




	$_SESSION['settle_save'] = $save_value;
	

	// ----------------------------------------
	// Aktion - Gebäudebau
	unset($_SESSION['build']); // Session MUSS leer sein!
	
	$sql = mysql_query("SELECT place_id, build_end FROM ". DO_BUILD_TABLE ." WHERE settle_id = ". $_SESSION['this_settle'] ."");
	if(mysql_num_rows($sql) == 1){
		$row = mysql_fetch_row($sql);
		$_SESSION['build'] = array($row[0], $row[1]);
	}

	// ----------------------------------------
	// Ausbildung - Militär
	unset($_SESSION['train_military']); // Session MUSS leer sein!
	
	$sql = mysql_query("SELECT order_id, train_unit, train_sum, train_start, train_duration, place_id FROM ". TRAIN_MILITARY_TABLE ." WHERE settle_id = ". $_SESSION['this_settle'] ." ORDER BY order_id");
	if(mysql_num_rows($sql) >= 1){
		while($row = mysql_fetch_row($sql)){
			//													  0        1        2        3
			$_SESSION['train_military'][$row[5]][$row[0]] = array($row[1], $row[2], $row[3], $row[4]);
		}
	}

	// "Ausbildung" - Schiff
	unset($_SESSION['train_ship']); // Session MUSS leer sein!
	
	$sql = mysql_query("SELECT order_id, train_unit, train_sum, train_start, train_duration FROM ". TRAIN_SHIP_TABLE ." WHERE settle_id = ". $_SESSION['this_settle'] ." ORDER BY order_id");
	if(mysql_num_rows($sql) >= 1){
		while($row = mysql_fetch_row($sql)){
			//									     0        1        2        3
			$_SESSION['train_ship'][$row[0]] = array($row[1], $row[2], $row[3], $row[4]);
		}
	}
}
 
Zuletzt bearbeitet:

saila

Moderatorle

AW: PHP Script mit MYSQL

Danke für die infos


Jetzt kommt aber das
Code:
Notice: Undefined offset: 12 in /var/www/html/web1406/html/s4/inc/update/settle.php on line 146
das wäre die zeile
Code:
$VSESS['prod'][12] = $_SESSION['prod'][12];

Notice: Undefined offset: 12 in /var/www/html/web1406/html/s4/graphicview/settle.php on line 331

<td width=\"45%\" align=\"left\"><b>". $_SESSION['prod'][12][0] ."</b></td>


Notice: Undefined offset: 12 in /var/www/html/web1406/html/s4/graphicview/settle.php on line 374

<td><b>". $_SESSION['rohstoffabzug'][12] ."</b></td>
was mache ich hier falsch?

Naja du prüfst nicht, ob die Variablen laut deiner Notice-Meldung überhaupt vorhanden sind und setzt keinen default-Wert. Sprich php kann mir der Variablen so nichts anfangen, weil diese nicht deklariert wurde.

Besser:
PHP:
<?php
if(isset($_SESSION['prod'][12], $_SESSION['prod'][12][0], 'usw.')) {
 /**
 * mach was
 */
} else {
 /**
 * hier default setzen.
 */
}
?>

Sprich - bevor du eine Variable zuweisen willst, sollte diese auch irgendwo definiert sein.
 

bignevs

Nicht mehr ganz neu hier

AW: PHP Script mit MYSQL

Naja du prüfst nicht, ob die Variablen laut deiner Notice-Meldung überhaupt vorhanden sind und setzt keinen default-Wert. Sprich php kann mir der Variablen so nichts anfangen, weil diese nicht deklariert wurde.

Besser:
PHP:
<?php
if(isset($_SESSION['prod'][12], $_SESSION['prod'][12][0], 'usw.')) {
 /**
 * mach was
 */
} else {
 /**
 * hier default setzen.
 */
}
?>

Sprich - bevor du eine Variable zuweisen willst, sollte diese auch irgendwo definiert sein.

danke für diesen tipp, aber das problem habe ich schon gelöst, jetzt bin ich wieder bei der rohstoff aktualiesierung da der rohstoff nicht aktualsiert wird, weil siehe letzen code von mir den wert nicht annimmt.
( $_SESSION['settle_mat'][11] = $row[$count_plusrow + ?????];)

ich werde bald verrückt.....das geht jetzt schon 2 wochen so....
 

saila

Moderatorle

AW: PHP Script mit MYSQL

Hi,

frage - siehst du dir dein Script auch genau an?

Zu deiner Frage mit met1 - diese Variable oder Wert gibt es nicht in deinem Script-Ausschnitt.

Und zu deiner letzten Frage. Da ist im Grunde genau das gleiche Problem wie ich dir schon geschildert hatte.

PHP:
<?php
    $sql = mysql_query("SELECT ". $military_data[0] .", ". $ship_data[0] .", isle_part, settle_name, settle_mat1, settle_mat2, settle_mat3, settle_mat11, settle_points FROM ". SETTLE_TABLE ." WHERE settle_id = ". $_SESSION['this_settle'] ."");
    $row = mysql_fetch_row($sql);
    
    // ----------------------------------------
    // Allgemein
    $_SESSION['settle_data'] = array($row[$count_plusrow + 1], $row[$count_plusrow + 5], $row[$count_plusrow]);

    // Rohstoffe    
    $_SESSION['settle_mat'][1] = $row[$count_plusrow + 2];
    $_SESSION['settle_mat'][2] = $row[$count_plusrow + 3];
    $_SESSION['settle_mat'][3] = $row[$count_plusrow + 4];
    $_SESSION['settle_mat'][11] = $row[$count_plusrow + 7];
?>

Wenn du ein SQL-Statement hast und nie irgendwelche Werte vorhanden sind bei einer späteren Speicherung, solltest du dir mal den Query oder zumindest das Ergebnis des Query ansehen. Das wäre das eine. Aber das andere ist j folgendes:

Du hast:
PHP:
<?php
$sql = mysql_query("SELECT ". $military_data[0] .", ". $ship_data[0] .", isle_part, settle_name, settle_mat1, settle_mat2, settle_mat3, settle_mat11, settle_points FROM ". SETTLE_TABLE ." WHERE settle_id = ". $_SESSION['this_settle'] ."");
$row = mysql_fetch_row($sql);
?>

und später machst du:
PHP:
<?php
    // Rohstoffe    
    $_SESSION['settle_mat'][1] = $row[$count_plusrow + 2];
    $_SESSION['settle_mat'][2] = $row[$count_plusrow + 3];
    $_SESSION['settle_mat'][3] = $row[$count_plusrow + 4];
    $_SESSION['settle_mat'][11] = $row[$count_plusrow + 7];

?>

Prüfe doch mal, ob in z.B. $row[$count_plusrow + 2] überhaupt existiert? Ich vermute kaum, weil aus deinem Query eigentl. im ersten Blick folgendes abzuleiten wäre (als Beispiel):

PHP:
<?php
$_SESSION['settle_mat'][1] = $row['settle_mat2'] + 2;
?>

Du prüfst auch nicht, ob es z.B. $row[$count_plusrow + 2] überhaupt gibt. Hast du dir schon mal die Variable angesehen oder zumindest das Array aus der Sql-Abfrage?
 
Bilder bitte hier hochladen und danach über das Bild-Icon (Direktlink vorher kopieren) platzieren.
Antworten auf deine Fragen:
Neues Thema erstellen

Willkommen auf PSD-Tutorials.de

In unseren Foren vernetzt du dich mit anderen Personen, um dich rund um die Themen Fotografie, Grafik, Gestaltung, Bildbearbeitung und 3D auszutauschen. Außerdem schalten wir für dich regelmäßig kostenlose Inhalte frei. Liebe Grüße senden dir die PSD-Gründer Stefan und Matthias Petri aus Waren an der Müritz. Hier erfährst du mehr über uns.

Stefan und Matthias Petri von PSD-Tutorials.de

Nächster neuer Gratisinhalt

03
Stunden
:
:
25
Minuten
:
:
19
Sekunden

Neueste Themen & Antworten

Flatrate für Tutorials, Assets, Vorlagen

Zurzeit aktive Besucher

Statistik des Forums

Themen
118.642
Beiträge
1.538.512
Mitglieder
67.559
Neuestes Mitglied
Andi Schäfer
Oben