echo functie werkt niet

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Michael R

Michael R

27/04/2014 21:44:16
Quote Anchor link
Hallo allemaal,

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)
PHP script in nieuw venster Selecteer het PHP script
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
<?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!");
                                    }
                         }

?>


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?
 
PHP hulp

PHP hulp

26/04/2024 04:41:06
 
Obelix Idefix

Obelix Idefix

27/04/2014 21:54:08
Quote Anchor link
Mooie foutafhandeling heb je op je query's zitten.

Waar komt $misdaadtype op regel 4 vandaan?

Zet error-reporting eens aan.

Al aan het debuggen geweest?
Plaats eens op regel 4
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
echo 'regel 4';
. Wordt die getoond?
Kijk op die manier of het script wel doet wat je verwacht.
 
Frank Nietbelangrijk

Frank Nietbelangrijk

27/04/2014 21:59:03
Quote Anchor link
Maakt het script gebruik van output buffering? (ob_start() en dergelijke)

http://www.php.net/manual/en/book.outcontrol.php
 
Michael R

Michael R

27/04/2014 21:59:26
Quote Anchor link
was dat sarcastisch of echt? :P
ik ga ff kijken of ik kan debuggen
 
Frank Nietbelangrijk

Frank Nietbelangrijk

27/04/2014 22:05:30
Quote Anchor link
niets sarcastisch, als die queries uitgevoerd worden zoals jij zegt dan wordt ook een van de echo's uitgevoerd.
maar indien er gebruik gemaakt wordt van output buffering dan worden de echo's gebufferd.
 
Obelix Idefix

Obelix Idefix

27/04/2014 22:05:48
Quote Anchor link
@Frank: ik denk dat die opmerking betrekking heeft op mijn reactie.

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
 
Frank Nietbelangrijk

Frank Nietbelangrijk

27/04/2014 22:12:59
Quote Anchor link
geloof dat ik iets gemist heb :-)
 
Michael R

Michael R

27/04/2014 22:21:57
Quote Anchor link
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

Toevoeging op 27/04/2014 22:32:19:

Trouwens $misdaadtype is een waarde die meegegeven wordt.
 
Pipo Clown

Pipo Clown

27/04/2014 23:28:39
Quote Anchor link
Wanneer ik naar regel 10 kijk dan is $misdaadtype volgens mij een array, je zet er tenminste een index achter.

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.
 
Frank Nietbelangrijk

Frank Nietbelangrijk

27/04/2014 23:55:03
Quote Anchor link
Dus staat error reporting uit Michael? GRRRRR
 
Obelix Idefix

Obelix Idefix

28/04/2014 08:03:25
Quote Anchor link
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.
 
Michael R

Michael R

03/05/2014 23:23:01
Quote Anchor link
Het is ook niet de gehele code, alleen een deel. Dit is de hele code:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
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
<?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("&euro;".$gebruiker['balans'].",-"); ?><br/>
            <br/>
            <u>Contant:</u> <?php echo("&euro;".$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.
 
Frank Nietbelangrijk

Frank Nietbelangrijk

04/05/2014 00:10:03
Quote Anchor link
Dat kan wel want dat is een PHP instelling. zet eens bovenin je script
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<?php
error_reporting(E_ALL);
?>


Krijg je nu enige foutmelding?
 
Michael R

Michael R

09/05/2014 18:15:18
Quote Anchor link
Nee, nog steeds geen foutmelding. Maar de queries voert hij wel uit, alleen de echo() functie niet.
 
Ger van Steenderen
Tutorial mod

Ger van Steenderen

09/05/2014 18:45:29
Quote Anchor link
Frank Nietbelangrijk op 04/05/2014 00:10:03:
Dat kan wel want dat is een PHP instelling. zet eens bovenin je script
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<?php
error_reporting(E_ALL);
?>

Wellicht is het ook wel handig dat je dan error displaying aan zet:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<?php
ini_set('display_errors', 1);
?>
 
Michael R

Michael R

09/05/2014 21:00:09
Quote Anchor link
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.
 
- Pepijn  -

- Pepijn -

09/05/2014 21:20:06
Quote Anchor link
Ik krijg bij mij ook geen error (2 manieren getest)
 
Frank Nietbelangrijk

Frank Nietbelangrijk

10/05/2014 14:58:27
Quote Anchor link
welke waarde zit er in $kans op regel 83?
 
Michael R

Michael R

10/05/2014 17:16:52
Quote Anchor link
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.
 
Obelix Idefix

Obelix Idefix

11/05/2014 11:00:05
Quote Anchor link
Wanneer 'verdwijnt' die echo? In de code in je openingspost pas op het moment van het verwerken van het formulier. Afgaande op de code die je post op 03/05/2014 23:23:01 gebruik je echter al eerder echo. Laat die die ook niet zien?

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?
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.