Aide code PHP (donné un level )
Bonjour,

J'ai crée un petit scripte PHP pour donné un level voici le scripte :

Code PHP :
<?php
session_start
();
 
$_SESSION['guid'] = 5;
include (
'./inc/config.php');
if(isset(
$_SESSION['guid']) && $_SESSION['guid'] != '')
{
    
mysql_connect($dbIP$dbUSER$dbPSWD);
    
mysql_select_db($dbOTHER);  
    switch(@
$_GET['action'])
    {
        case 
'update':
            if(isset(
$_POST['send']) && $_POST['send'] != '')
            {
                if(isset(
$_POST['perso']) && is_numeric($_POST['perso']) && $_POST['perso'] != '' && isset($_POST['level']) && is_numeric($_POST['level']) && $_POST['level'] != '')
                {
                    
$sql mysql_query("SELECT * FROM personnages WHERE guid = ".$_POST['perso']);
                    
$data mysql_fetch_assoc($sql);
                    if(
$_SESSION['guid'] == $data['account'])
                    {
                        if( 
$_POST['level'] <= (600-$data['level']))
                        {
                            
$sql mysql_query("SELECT * FROM accounts WHERE guid = ".$_SESSION['guid']);
                            
$data_a mysql_fetch_assoc($sql);
                            if(
$data_a['points'] >= ($_POST['level']*10))
                            {

                            
mysql_query("UPDATE accounts SET points = points - ".($_POST['level']*10)." WHERE guid = ".$_SESSION['guid']) or die(mysql_error());                                
                            
mysql_query("UPDATE personnages SET level = level + ".($_POST['level']+1)." WHERE guid = ".$_POST['perso']) or die(mysql_error());
                                echo 
'Votre personnage '.$data['name'].' est maintenant niveau '.($data['level']+$_POST['level']);
                            }
                            else
                            {
                                echo 
'Vous n\'avez pas asser de points';
                            }
                        }
                        else
                        {
                            echo 
'Le niveau que vous avez entrer et trop elever';
                        }
                    }
                    else
                    {
                        echo 
'Ce personne n\'est pas a vous';
                    }
                }
                else
                {
                    echo 
'Un erreur est survenue';
                }
            }
            break;
        case 
'selected':
            if(isset(
$_GET['perso']) && is_numeric($_GET['perso']) && $_GET['perso'] != '')
            {
                
$sql mysql_query("SELECT * FROM personnages WHERE guid = ".$_GET['perso']);
                
$data mysql_fetch_assoc($sql);
                if(
$_SESSION['guid'] == $data['account'])
                {
                    echo 
'<b>Personnage</b> : '.$data['name'].'<br />
                        <b>Level</b> : '
.$data['level'].'<br /><br />
                        Vous pouvez acheter maximum '
.(600-$data['level']).' soit '.((600-$data['level'])*10).' points (1 level = 10 points)
                        <form method="post" action="level.php?action=update">
                            <input type="hidden" name="perso" value="'
.$data['guid'].'"/>
                            Nombre de level voulu : <input type="text" name="level" value="" size="2" maxlength="3" />
                            <input type="submit" name="send" value="Acheter" />
                        </form>
                        <a href="level.php"><< Retour a la selection des personnages</a>'
;
                }
                else
                {
                    echo 
'Ce personne n\'est pas a vous';
                }
            }
            else
            {
                echo 
'Un erreur est survenue';
            }
            break;
        default:
            echo 
'<b>Selectionnez votre personnage</b> :<br /><br />';
            
$sql mysql_query("SELECT * FROM personnages WHERE account = ".$_SESSION['guid']);
            while(
$data mysql_fetch_assoc($sql))
            {
                echo 
'<a href="level.php?action=selected&perso='.$data['guid'].'">'.$data['name'].'</a><br />';
            }
            break;
    }
}
?>

ça ne donne aucun level...

Merci de l'aide Langue

ps : ce n'est pas WoW
Tu es fort toi .. tu utilise à la fois GET et POST dans une même requête HTTP .. ca ne risque pas de marcher.. SOIT c'est GET soit c'est POST .. pas les 2 sur le même script.

As-tu tenté de le débugger par toi même à coup de << echo "toto"; >> dans les bloc conditionnels ? Ce genre d'erreurs sont vite détectées par ce biais...


Je passe le fait que tes requêtes en sont pas DU TOUT protégées par l'injection SQL aussi.. tu devras le faire. (SI tu rends public le script sur un site là, dans l'état en 5 seconde au mieux on pète toute ta base de données, au pire on a full accès à ton serveur SQL...)

Par contre évite de tout mettre dans UN SEUL script PHP c'est sale.
Exact, je n'ai pas fait attention.
Non, je ne connais pas cette méthode pour débugger, je l'utiliserai à l'avenir.

Merci du coup du main.
Pas de soucis je t'en prie.

Un +1 est toujours apprécié...
Encore mieux , fais une classe ! Smile
(09-05-2011 18:12)Elmsroth a écrit :  Tu es fort toi .. tu utilise à la fois GET et POST dans une même requête HTTP .. ca ne risque pas de marcher.. SOIT c'est GET soit c'est POST .. pas les 2 sur le même script.

C'est tout a fait possible. Et d'ailleurs assez utile de temps en temps. Je te donne un exemple rapide :

Code :
<form method="post" action="script.php?action=54">
<input type="text" name="name"/>
<input type="submit">
</form>

Dans le code de script.php tu pourras avoir $_GET['action'] et $_POST['name'].
Quand je parle d'une seul méthode je veux dire qu'il n'est possibles d’envoyer les champs du formulaire que par UNE SEULE méthode à la fois.
Et ça tu peux rien y faire c'est dans les normes

Tout ce qui est dans ton form à envoyer de "variable" qui est des entrées utilisateur (inputs, selects... ne passera que par uen méthode ,
Si tu ajoute des params en GET ben faudra les setter à la main en dur ou via un javascript qui met à jour tout seul la propriété action de la balise form : Ce que tu fais en mettant "?action" .... c'est statique
Le action peut être entré par l'utilisateur, c'est n'est pas du tout statique.
N'importe qui peut reprendre le lien et le modifier en script.php?action=toto

Donc même si c'est toi qui fait le lien à la base, il faut vérifier la valeur tout de même.

Mais sauf que dans le cas précis :
Citation :Tu es fort toi .. tu utilise à la fois GET et POST dans une même requête HTTP .. ca ne risque pas de marcher.. SOIT c'est GET soit c'est POST .. pas les 2 sur le même script.

Tu parles bien côté script et non côté formulaire. Or, avec mon exemple, côté script on a bien $_GET et $_POST qui contiennent des valeurs.
Non je veux dire tu as un formulaire de base, et tu veux que le action soit différent de manière automatique...(genre au changement d'un selectbox ta cible action change imaginons...) sans passer par une couche javascript tu auras du mal car tu dois éditer la propriété action du form.

Sinon tu t'embêtes pas et tu fais aucun formulaire et tout en ajax...
(regarde le site de killingspree, la connexion au site c'est que des éléments input.. aucun <form..> et ca marche niquel.)
Ah oui c'est sur que le champ action dans mon exemple n'est pas destiné à être changé.

Pour les formulaires Ajax c'est une tout autre histoire qui n'a pas grand à voir avec le sujet de départ Hihi

Retourner en haut Accueil