Php probleem variable

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Pix Pixer

Pix Pixer

04/07/2013 11:24:12
Quote Anchor link
Hi,

Ik heb een probleem met mijn script. Ik wil ervoor zorgen dat $naam wordt mee genomen van warns.php naar verwerken.php. Helaas krijg ik op dit moment bij verwerken.php een error met dat die de variable niet herkent.

Warns.php
Quote:
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
<?php
    mysql_connect("localhost","XX","XX");
    mysql_select_db("bans");
    $select = mysql_query("SELECT player_id,COUNT(type) FROM `bans` WHERE `type`=4 GROUP BY `player_id` ORDER BY COUNT(type) DESC") or die(mysql_error());
    $nr = 1;
    
    echo "<table border='1'>
    <tr>
    <th>&nbsp;&nbsp;&nbsp;&nbsp;</th>
    <th>Naam</th>
    <th>Waarschuwingen</th>
    <th>Verbannen</th>
    </tr>"
;
    while($ft = mysql_fetch_assoc($select)){
        if($ft['COUNT(type)']>2){
            echo '<form action="verwerken.php" method="post">';
            echo '<tr>';
            echo '<td>'.$nr.'</td>';
            echo '<td>'.playernaam($ft['player_id']).'</td>';
            $naam = playernaam($ft['player_id']);
            echo '<td>'.$ft['COUNT(type)'].'</td>';
            echo '<td><input type="submit"/></td>';
            echo '<tr>';
            $nr++;
        }
        
    }

    echo '</table>';
    
    function
playernaam($playerid){
        $sql = mysql_query("SELECT `name` FROM `users` WHERE `id`='$playerid'") or die(mysql_error());
        $pn = mysql_fetch_assoc($sql);
        return $pn['name'];
    }
    
    function
getbanned($playerid){
        $sql2 = mysql_query("SELECT * FROM `bans` WHERE `player_id` = '$playerid' and `type` = 1") or die(mysql_error());
        if(mysql_num_rows($sql2)>=1){
            return 'Ja';
        }

        else{
            return 'Nee';
        }
    }

?>


Verwerken.php (de Websend kan geneerd worden)
Quote:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
<?php
    include_once 'Websend.php';

    $ws = new Websend("IPWASHIER");
    $ws->connect("WACHTWOORD");
    $ws->doCommandAsConsole(" $naam !:)");
    $ws->disconnect();
    echo "Gedaan, kijk nu ingame";
?>


Alvast bedankt.
Gewijzigd op 04/07/2013 11:24:52 door Pix Pixer
 
PHP hulp

PHP hulp

20/04/2024 03:02:12
 
Kris Peeters

Kris Peeters

04/07/2013 12:22:15
Quote Anchor link
warns.php bevat een formulier.
Geef het daar mee, in een hidden.

bv

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
<?php
...
 echo '<form action="verwerken.php" method="post">';
 echo '<input type="hidden" name="naam" value="' . $naam . '">';
...
      
?>


Dan vind je ze in Verwerken.php terug met $_POST['naam']
 
Marvin H

Marvin H

04/07/2013 13:16:45
Quote Anchor link
of maak gebruik van een $_SESSION of $_COOKIE om je variabele in op te slaan
 
Pix Pixer

Pix Pixer

04/07/2013 13:29:45
Quote Anchor link
Werkt nu, bedankt. Ik heb nog een probleem, zal hem zo even posten. Dank.

Toevoeging op 04/07/2013 13:46:12:

Wat ik dus probeer te maken is een tabel waar ik gebruikers met de meeste waarschuwingen in staan. Met 1 knop moet ik ze dan kunnen verbannen.

Afbeelding

Probleem is nu dat die bij verwerken.php nu steeds alleen de naam van de laatste user pakt en niet bij elke knop de user die ervoor staan.

Script;

Quote:
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
<?php
    mysql_connect("localhost","XX","XX");
    mysql_select_db("bans");
    $select = mysql_query("SELECT player_id,COUNT(type) FROM `bans` WHERE `type`=4 GROUP BY `player_id` ORDER BY COUNT(type) DESC") or die(mysql_error());
    $nr = 1;
    
    echo "<table border='1'>
    <tr>
    <th>&nbsp;&nbsp;&nbsp;&nbsp;</th>
    <th>Naam</th>
    <th>Waarschuwingen</th>
    <th>Verbannen</th>
    </tr>"
;
    while($ft = mysql_fetch_assoc($select)){
        if($ft['COUNT(type)']>2){
             echo '<form action="verwerken.php" method="post">';
            echo '<tr>';
            echo '<td>'.$nr.'</td>';
            echo '<td>'.playernaam($ft['player_id']).'</td>';
            $naam = playernaam($ft['player_id']);
            echo '<td>'.$ft['COUNT(type)'].'</td>';
            echo '<input type="hidden" name="naam" value="' . $naam . '">';
            echo '<td><input type="submit"/></td>';
            echo '<tr>';
            $nr++;
        }
        
    }

    echo '</table>';

    
    function
playernaam($playerid){
        $sql = mysql_query("SELECT `name` FROM `users` WHERE `id`='$playerid'") or die(mysql_error());
        $pn = mysql_fetch_assoc($sql);
        return $pn['name'];
    }
    
    function
getbanned($playerid){
        $sql2 = mysql_query("SELECT * FROM `bans` WHERE `player_id` = '$playerid' and `type` = 1") or die(mysql_error());
        if(mysql_num_rows($sql2)>=1){
            return 'Ja';
        }

        else{
            return 'Nee';
        }
    }

?>


Wat ik denk is dat hij maar 1 naam kan verzenden met POST. Misschien dan toch sessions gebruiken? Heb alleen geen idee hoe dat moet.

Bedankt.
Gewijzigd op 04/07/2013 13:48:10 door Pix Pixer
 
Erwin H

Erwin H

04/07/2013 13:55:52
Quote Anchor link
Het ophalen van de speler namen moet je echt niet zo doen. Je runt nu tig queries, terwijl je het in 1 kan doen:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
SELECT player_id, name, COUNT(type)
FROM `bans`
LEFT JOIN users ON bans.player_id = users.id
WHERE `type`=4
GROUP BY `player_id`
ORDER BY COUNT(type) DESC

Het probleem met je verbannen van de juiste speler komt omdat je alle namen van de spelers in een hidden input zet, maar al die hidden inputs hebben dezelfde naam. Alleen de laatste blijft dus over, die overschrijft alle anderen.
Ik zou ervoor kiezen om voor elke knop een apart form te maken, met daarin alleen de knop en de hidden input voor die speler. Zo gaat alleen de naam mee van de speler die je een ban wilt geven. Je krijgt dus een apart form in elke rij in je tabel.

Toevoeging op 04/07/2013 13:57:03:

En wel je form tag afsluiten, dat doe je namelijk helemaal niet!
 
Pix Pixer

Pix Pixer

04/07/2013 14:06:51
Quote Anchor link
Erwin H op 04/07/2013 13:55:52:
Het ophalen van de speler namen moet je echt niet zo doen. Je runt nu tig queries, terwijl je het in 1 kan doen:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
SELECT player_id, name, COUNT(type)
FROM `bans`
LEFT JOIN users ON bans.player_id = users.id
WHERE `type`=4
GROUP BY `player_id`
ORDER BY COUNT(type) DESC

Het probleem met je verbannen van de juiste speler komt omdat je alle namen van de spelers in een hidden input zet, maar al die hidden inputs hebben dezelfde naam. Alleen de laatste blijft dus over, die overschrijft alle anderen.
Ik zou ervoor kiezen om voor elke knop een apart form te maken, met daarin alleen de knop en de hidden input voor die speler. Zo gaat alleen de naam mee van de speler die je een ban wilt geven. Je krijgt dus een apart form in elke rij in je tabel.

Toevoeging op 04/07/2013 13:57:03:

En wel je form tag afsluiten, dat doe je namelijk helemaal niet!


Dank. Heb je toevallig een klein voorbeeld hoe ik dit doe?
 
Erwin H

Erwin H

04/07/2013 14:24:35
Quote Anchor link
Pardon? Je hebt alles al, je moet alleen een afsluitende form tag erbij zetten. Daar heb je hoop ik toch geen voorbeeld voor nodig....
 
Pix Pixer

Pix Pixer

04/07/2013 14:26:32
Quote Anchor link
Erwin H op 04/07/2013 14:24:35:
Pardon? Je hebt alles al, je moet alleen een afsluitende form tag erbij zetten. Daar heb je hoop ik toch geen voorbeeld voor nodig....


Nee nee, dat zou niet goed zijn. Ik ga even proberen of het nu wel werkt, dank.

//Edit Hij werkt nu top, stomme fout van mij. Ik ga even verder het script uitbreiden, erg bedankt Erwin!
Gewijzigd op 04/07/2013 14:29:25 door Pix Pixer
 



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.