echo functie werkt niet
ik ben een maffia spel met php aan het maken en ik heb het volgende probleem. Ik heb een misdaad script gemaakt die een melding geeft als hij geslaagd is of niet. Maar hij laat geen tekst zien terwijl de queries wel werken. Dit is een deel van me code:
Code (php)
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
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
<?php
if($_SERVER['REQUEST_METHOD'] == "POST")
{
if(!isset($misdaadtype))
{
header("Location: misdaden.php");
}
$misdaadtype = mysqli_real_escape_string($db,$_POST['misdaad']);
$kans = $misdaad[$misdaadtype][$gebruiker[$misdaadtype]];
$dobbel = rand(1,100);
if($dobbel <= $kans)
{
// misdaad is geslaagd
$beloning = $misdaad[$misdaadtype]["beloning"];
mysqli_query($db,"UPDATE accounts SET balans = balans + ".$beloning." , ".$misdaadtype."_exp = ".$misdaadtype."_exp + ".$misdaad[$misdaadtype][$gebruiker[$misdaadtype]]." WHERE id = ".$gebruikerid." ") or die(mysqli_error($db));
echo("De misdaad is geslaagd!");
if($gebruiker[$misdaadtype.'_exp'] >= 100 )
{
// misdaad wordt een level hoger
mysqli_query($db,"UPDATE accounts SET ".$misdaadtype." = ".$misdaadtype." + 1 WHERE id = ".$gebruikerid." ") or die(mysqli_error($db));
}
}else{
//misdaad is mislukt
echo("De misdaad is mislukt!");
}
}
?>
if($_SERVER['REQUEST_METHOD'] == "POST")
{
if(!isset($misdaadtype))
{
header("Location: misdaden.php");
}
$misdaadtype = mysqli_real_escape_string($db,$_POST['misdaad']);
$kans = $misdaad[$misdaadtype][$gebruiker[$misdaadtype]];
$dobbel = rand(1,100);
if($dobbel <= $kans)
{
// misdaad is geslaagd
$beloning = $misdaad[$misdaadtype]["beloning"];
mysqli_query($db,"UPDATE accounts SET balans = balans + ".$beloning." , ".$misdaadtype."_exp = ".$misdaadtype."_exp + ".$misdaad[$misdaadtype][$gebruiker[$misdaadtype]]." WHERE id = ".$gebruikerid." ") or die(mysqli_error($db));
echo("De misdaad is geslaagd!");
if($gebruiker[$misdaadtype.'_exp'] >= 100 )
{
// misdaad wordt een level hoger
mysqli_query($db,"UPDATE accounts SET ".$misdaadtype." = ".$misdaadtype." + 1 WHERE id = ".$gebruikerid." ") or die(mysqli_error($db));
}
}else{
//misdaad is mislukt
echo("De misdaad is mislukt!");
}
}
?>
Toevoeging op 27/04/2014 21:44:57:
Ik ben al een aardig tijdje bezig om het probleem op te lossen maar het lukt niet. Wat zou de oorzaak kunnen zijn?
Waar komt $misdaadtype op regel 4 vandaan?
Zet error-reporting eens aan.
Al aan het debuggen geweest?
Plaats eens op regel 4 . Wordt die getoond?
Kijk op die manier of het script wel doet wat je verwacht.
ik ga ff kijken of ik kan debuggen
maar indien er gebruik gemaakt wordt van output buffering dan worden de echo's gebufferd.
Sarcastisch.
Or die is geen foutafhandeling. Jij gaat toch ook niet dood als je iets fout doet?
En je laat een gebruiker geen foutmelding zien, alleen voor jezelf in de testfase.
Gewijzigd op 27/04/2014 22:08:01 door Obelix Idefix
geloof dat ik iets gemist heb :-)
Toevoeging op 27/04/2014 22:32:19:
Trouwens $misdaadtype is een waarde die meegegeven wordt.
Op regel 22 plak je aan diezelfde array opeens de string '_ext' vast. Komt niet echt logisch over, lijkt mij ook een foutmelding te behoren te genereren.
Dit zal ook de reden zijn dat de if op regel 22 nooit true zal worden.
Dus staat error reporting uit Michael? GRRRRR
Michael R op 27/04/2014 22:21:57:
bij debuggen geeft hij alleen een error bij de sessie_id omdat die natuurlijk niet is aangemaakt. Maar voor de rest geeft hij geen errors
Welke sessie_id? Ik zie dat niet in de code staan.
Hij hoeft ook geen errors te geven, maar doet de code wat jij verwacht?
Kortom: wordt inderdaad voldaan aan regel 2? Worden de variabelen op regel 10 en 11 met een waarde gevuld? Klopt die waarde met hetgeen jij zou verwachten?
Wat is het resultaat van de vergelijking op regel 13? Welke echo verwacht je en wordt die ook gegeven?
Kortom: debuggen. Controleer de loop van je code en check of de variabelen die waarden hebben die je verwacht.
Code (php)
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
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
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
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
<?php
session_start();
include('imports/authorisation.php');
include('imports/db_config.php');
require_once('classes/class_atributen.php');
$gebruikerid = $_SESSION['gebruikerid'];
$gebruiker = mysqli_fetch_array(mysqli_query($db,"SELECT * FROM accounts WHERE id = ".$gebruikerid." LIMIT 1")) or die(mysqli_error($db));
// zware misdaad, gemiddelde misdaad, lichte misdaad
$misdaad = array("m1" => array(1 => 2, 2 => 4, 3 => 6, 4 => 9, 5 => 13, 6 => 15, 7 => 17, "beloning" => 40), "m2" => array(1 => 4, 2 => 7, 3 => 10, 4 => 13, 5 => 16, 6 => 18, 7 => 21, "beloning" => 80), "m3" => array(1 => 4, 2 => 9, 3 => 15, 4 => 19, 5 => 24, 6 => 28, 7 => 31, "beloning" => 130) );
?>
<!DOCTYPE HTML>
<html>
<head>
<title> </title>
<link type="text/css" rel="stylesheet" href="styles/spelermenu.css"/>
</head>
<body>
<div id="header"> </div>
<div id="linkMenu0">
<font color="gray" size=5>Account</font><br/>
<hr/><br/>
<font size="3">
<u>Naam:</u> <?php echo($gebruiker['gebruikersnaam']); ?><br/>
<br/>
<u>Achternaam:</u> <?php $atributen -> check_familie(); ?><br/>
<br/>
<u>Niveau:</u> <?php echo("#".$gebruiker['niveau']); ?><br/>
<br/>
<u>Bank:</u> <?php echo("€".$gebruiker['balans'].",-"); ?><br/>
<br/>
<u>Contant:</u> <?php echo("€".$gebruiker['contant'].",-"); ?><br/>
<br/>
<u>Gezondheid:</u>
<div style="height:20px; width:120px; border:1px solid black;" title="<?php echo($gebruiker['levens']); ?>/100 gezondheid over!"><div style="height:20px; width:<?php echo($gebruiker['levens']); ?>%; background-color:red;"></div></div><br/>
<br/>
<a href="uitloggen.php">Uitloggen</a>
</font>
</div>
<center>
<div style="border-radius:10px; width:600px; min-height:70%; margin-left:27%;" id="linkMenu0" >
<!-- misdaden weergeven -->
<?php
echo("
<form name='misdaden' action='".$_SERVER['PHP_SELF']."' method='post'>
<table>
<tr>
<td>Pleeg internetfraude</td><td><input name='misdaad' type='radio' value='m1' checked/></td>
</tr>
<tr>
<td>Beroof een persoon in een steegje</td><td><input name='misdaad' type='radio' value='m2'/></td>
</tr>
<tr>
<td>Iemand bestelen in een winkelstraat</td><td><input name='misdaad' type='radio' value='m3'/></td>
</tr>
<tr>
<td><input type='submit' value='Actie!'/></td>
</tr>
</table>
</form>
");
// de misdaad is gepleegd
if($_SERVER['REQUEST_METHOD'] == "POST")
{
if(!isset($misdaadtype))
{
header("Location: misdaden.php");
}
$misdaadtype = mysqli_real_escape_string($db,$_POST['misdaad']);
$kans = $misdaad[$misdaadtype][$gebruiker[$misdaadtype]];
$dobbel = rand(1,100);
if($dobbel <= $kans)
{
// misdaad is geslaagd
$beloning = $misdaad[$misdaadtype]["beloning"];
mysqli_query($db,"UPDATE accounts SET balans = balans + ".$beloning." , ".$misdaadtype."_exp = ".$misdaadtype."_exp + ".$misdaad[$misdaadtype][$gebruiker[$misdaadtype]]." WHERE id = ".$gebruikerid." ") or die(mysqli_error($db));
echo("De misdaad is geslaagd!");
if($gebruiker[$misdaadtype.'_exp'] >= 100 )
{
// misdaad wordt een level hoger
mysqli_query($db,"UPDATE accounts SET ".$misdaadtype." = ".$misdaadtype." + 1 WHERE id = ".$gebruikerid." ") or die(mysqli_error($db));
}
}else{
//misdaad is mislukt
//echo("De misdaad is mislukt!");
die("Test");
}
}
?>
</div>
<div style='float:left; margin-top:-60px; margin-left:20px; width:160px;'>
<?php
$ongelezenberichten = mysqli_query($db,"SELECT * FROM berichten WHERE ontvanger_id = ".$gebruikerid." AND gelezen = 0 ") or die(mysqli_error($db));
?>
</div>
</center>
</div>
<div id="linkMenu1">
<font color="gray" size=5>Acties</font><br/>
<hr/><br/>
<a href="profiel.php?id=<?php echo($gebruiker['id']); ?>">- Mijn identiteit</a><br/>
<a href="berichten.php">- Berichten(<?php echo(mysqli_num_rows($ongelezenberichten)); ?>)</a><br/>
<a href="#familielijst.php">- Familie lijst</a><br/>
<a href="#spelerlijst.php">- Speler lijst</a><br/>
<hr/>
<a href="#inventaris.php">- Inventaris</a><br/>
<a href="#bezittingen.php">- Bezittingen</a><br/>
<a href="#misdaden.php">- Misdaden</a><br/>
<a href="#wapenwinkel.php">- Wapenwinkel</a><br/>
<hr/>
<a href="#aanvallen.php">- Vermoorden</a><br/>
<a href="#opsporen.php">- Spion</a><br/>
</div>
</body>
</html>
session_start();
include('imports/authorisation.php');
include('imports/db_config.php');
require_once('classes/class_atributen.php');
$gebruikerid = $_SESSION['gebruikerid'];
$gebruiker = mysqli_fetch_array(mysqli_query($db,"SELECT * FROM accounts WHERE id = ".$gebruikerid." LIMIT 1")) or die(mysqli_error($db));
// zware misdaad, gemiddelde misdaad, lichte misdaad
$misdaad = array("m1" => array(1 => 2, 2 => 4, 3 => 6, 4 => 9, 5 => 13, 6 => 15, 7 => 17, "beloning" => 40), "m2" => array(1 => 4, 2 => 7, 3 => 10, 4 => 13, 5 => 16, 6 => 18, 7 => 21, "beloning" => 80), "m3" => array(1 => 4, 2 => 9, 3 => 15, 4 => 19, 5 => 24, 6 => 28, 7 => 31, "beloning" => 130) );
?>
<!DOCTYPE HTML>
<html>
<head>
<title> </title>
<link type="text/css" rel="stylesheet" href="styles/spelermenu.css"/>
</head>
<body>
<div id="header"> </div>
<div id="linkMenu0">
<font color="gray" size=5>Account</font><br/>
<hr/><br/>
<font size="3">
<u>Naam:</u> <?php echo($gebruiker['gebruikersnaam']); ?><br/>
<br/>
<u>Achternaam:</u> <?php $atributen -> check_familie(); ?><br/>
<br/>
<u>Niveau:</u> <?php echo("#".$gebruiker['niveau']); ?><br/>
<br/>
<u>Bank:</u> <?php echo("€".$gebruiker['balans'].",-"); ?><br/>
<br/>
<u>Contant:</u> <?php echo("€".$gebruiker['contant'].",-"); ?><br/>
<br/>
<u>Gezondheid:</u>
<div style="height:20px; width:120px; border:1px solid black;" title="<?php echo($gebruiker['levens']); ?>/100 gezondheid over!"><div style="height:20px; width:<?php echo($gebruiker['levens']); ?>%; background-color:red;"></div></div><br/>
<br/>
<a href="uitloggen.php">Uitloggen</a>
</font>
</div>
<center>
<div style="border-radius:10px; width:600px; min-height:70%; margin-left:27%;" id="linkMenu0" >
<!-- misdaden weergeven -->
<?php
echo("
<form name='misdaden' action='".$_SERVER['PHP_SELF']."' method='post'>
<table>
<tr>
<td>Pleeg internetfraude</td><td><input name='misdaad' type='radio' value='m1' checked/></td>
</tr>
<tr>
<td>Beroof een persoon in een steegje</td><td><input name='misdaad' type='radio' value='m2'/></td>
</tr>
<tr>
<td>Iemand bestelen in een winkelstraat</td><td><input name='misdaad' type='radio' value='m3'/></td>
</tr>
<tr>
<td><input type='submit' value='Actie!'/></td>
</tr>
</table>
</form>
");
// de misdaad is gepleegd
if($_SERVER['REQUEST_METHOD'] == "POST")
{
if(!isset($misdaadtype))
{
header("Location: misdaden.php");
}
$misdaadtype = mysqli_real_escape_string($db,$_POST['misdaad']);
$kans = $misdaad[$misdaadtype][$gebruiker[$misdaadtype]];
$dobbel = rand(1,100);
if($dobbel <= $kans)
{
// misdaad is geslaagd
$beloning = $misdaad[$misdaadtype]["beloning"];
mysqli_query($db,"UPDATE accounts SET balans = balans + ".$beloning." , ".$misdaadtype."_exp = ".$misdaadtype."_exp + ".$misdaad[$misdaadtype][$gebruiker[$misdaadtype]]." WHERE id = ".$gebruikerid." ") or die(mysqli_error($db));
echo("De misdaad is geslaagd!");
if($gebruiker[$misdaadtype.'_exp'] >= 100 )
{
// misdaad wordt een level hoger
mysqli_query($db,"UPDATE accounts SET ".$misdaadtype." = ".$misdaadtype." + 1 WHERE id = ".$gebruikerid." ") or die(mysqli_error($db));
}
}else{
//misdaad is mislukt
//echo("De misdaad is mislukt!");
die("Test");
}
}
?>
</div>
<div style='float:left; margin-top:-60px; margin-left:20px; width:160px;'>
<?php
$ongelezenberichten = mysqli_query($db,"SELECT * FROM berichten WHERE ontvanger_id = ".$gebruikerid." AND gelezen = 0 ") or die(mysqli_error($db));
?>
</div>
</center>
</div>
<div id="linkMenu1">
<font color="gray" size=5>Acties</font><br/>
<hr/><br/>
<a href="profiel.php?id=<?php echo($gebruiker['id']); ?>">- Mijn identiteit</a><br/>
<a href="berichten.php">- Berichten(<?php echo(mysqli_num_rows($ongelezenberichten)); ?>)</a><br/>
<a href="#familielijst.php">- Familie lijst</a><br/>
<a href="#spelerlijst.php">- Speler lijst</a><br/>
<hr/>
<a href="#inventaris.php">- Inventaris</a><br/>
<a href="#bezittingen.php">- Bezittingen</a><br/>
<a href="#misdaden.php">- Misdaden</a><br/>
<a href="#wapenwinkel.php">- Wapenwinkel</a><br/>
<hr/>
<a href="#aanvallen.php">- Vermoorden</a><br/>
<a href="#opsporen.php">- Spion</a><br/>
</div>
</body>
</html>
Toevoeging op 03/05/2014 23:26:43:
Frank Nietbelangrijk op 27/04/2014 23:55:03:
Dus staat error reporting uit Michael? GRRRRR
Dat kan niet, ik heb die software pas gedownload dus daar heb ik niks aan veranderd.
Nee, nog steeds geen foutmelding. Maar de queries voert hij wel uit, alleen de echo() functie niet.
Frank Nietbelangrijk op 04/05/2014 00:10:03:
Dat kan wel want dat is een PHP instelling. zet eens bovenin je script
Wellicht is het ook wel handig dat je dan error displaying aan zet:
Nog steeds geen errors. Zelf heb ik die hele code nog eens goed doorgelezen maar ik snap echt niet wat er mis is, ik heb ook overal foutafhandelingen dus eigenlijk had hij al meteen een error moeten geven maar dat doet hij dus niet.
Ik krijg bij mij ook geen error (2 manieren getest)
welke waarde zit er in $kans op regel 83?
Dat kan ik dus niet checken met een echo() functie omdat hij geen echo laat zien. Maar de bedoeling is dat er een integer uit komt.
Plaats eens op regel 3 'echo test' of zo.
Roep de pagina direct aan. Laat die die wel zien?
Loop zo het script na, door steeds verderop in het script een echo te zetten om te testen of a) de echo wordt getoond en b) om de variabelen te laten zien. Wanneer zie je die echo niet meer?
Als het op regel 3 al niet werkt, zou ik een nieuw bestand aanmaken en daar de code in kopiëren.
Al eens de browser-cache gewist?
Off topic: je gebruikt een css-style sheet, waarom dan ook nog (ouderwets) inline-css?