Aller au contenu

Aide pour creer une signature de jeu en direct


Sujets conseillés

Posté (modifié)

Bonjour,

Je viens vous voir car j'ai un petit probleme concernant mon script, je souhaite obtenir des infos en fonction d'un champ dans un bdd et le rediriger avec une adresse du style mapage.php?=...

alors j'ai commencer a faire un bout de code mais je comprends pas deja comment faire des le debut :

<?php
require 'memory.php';
$database="ragnarok_database";
_AT_mysql_select_db($database) or die( "Unable to select database");


$id = $_GET["id"];
if( $id == "2000011" )
{

$pseudo="SELECT name, base_level, job_level FROM `char` WHERE account_id=".$id."";
$result=mysql_query($pseudo);

// on fait une boucle qui va faire un tour pour chaque enregistrement
while($data = mysql_fetch_assoc($result))
{
// on affiche les informations de l'enregistrement en cours
echo '<b>Pseudo : '.$data['name'].' </b>
<br> Base level : '.$data['base_level'].'
<br> Job level : '.$data['job_level'].' <br>';
header("Location: projet_signature.php?id=".$id."");
}

}

else
{
echo 'marche pas';
}

mysql_close;
?>

Voila est-ce que quelqu'un peu m'aider?

merci d'avance

Modifié par Ka32
Posté

Bonjour,

déjà, cela tu ne peux pas le faire !

	echo '<b>Pseudo : '.$data['name'].' </b>
<br> Base level : '.$data['base_level'].'
<br> Job level : '.$data['job_level'].' <br>';
header("Location: projet_signature.php?id=".$id."");

Avant un header location, tu ne peux rien envoyer à l'écran de ton visiteur même pas un blanc, donc tes echos sûrement pas.

Solution:

Tu fais ta boucle pour chercher ton utilisateur, tu stockes ton résultat dans une variable et après ta boucle, tu fais ton header location

Un commentaire quand même sur ta boucle, normalement il ne peut y avoir qu'un seul utilisateur sinon ce sera toujours le dernier qui sera considéré, je n'ai pas bien compris si chaque utilisateur devait attérir sur 'sa' page ou bien si il fait partie d'un groupe

Patrick

Posté

Bah en fait en attendant de faire plus soffistiqué je vais dans un premier temps rajouter le meme code pour chaques utilisateurs (faute de moyens pour faire mieux ... je ne suis pas assez experimenté ) donc pour l'instant ma commande fait que en fonction d'un id utilisateur, il va chercher tout les personnages se referant a cette ID (ici l'account ID )

<?php
require 'memory.php';
$database="ragnarok_database";
_AT_mysql_select_db($database) or die( "Unable to select database");


$id = $_GET["id"];
if( $id == "2000011" )
{

$pseudo="SELECT name, base_level, job_level FROM `char` WHERE account_id=".$id."";
$result=mysql_query($pseudo);

// on fait une boucle qui va faire un tour pour chaque enregistrement
while($data = mysql_fetch_assoc($result))
{
// on affiche les informations de l'enregistrement en cours
$pseudo = $data['name'];
$base = $data['base_level'];
$job = $data['job_level'];
}
echo '<b>Pseudo : '.$pseudo.' </b>
<br> Base level : '.$base.'
<br> Job level : '.$job.' <br>';
header("Location: projet_signature.php?id=".$id."");

}
else
{
echo 'pouet';
}

mysql_close;
?>

Maintenant j'ai un affichage d'une seule valeur et non de toute les valeurs associés à l'account ID, j'ai egalement une erreur :

Warning: Cannot modify header information - headers already sent by (output started at /home/morgendavid/public_html/CP_4.3.4a/projet_signature.php:24) in /home/morgendavid/public_html/CP_4.3.4a/projet_signature.php on line 26

Posté

Hello,

Bé oui, tu fais de nouveau des echos avant ton header location, donc tu reçois ce message d'erreur, d'ailleurs je ne vois pas l'utilité de ta boucle vu que dès que tu la parcours tu fais un header location, ce qui ferait que tu changes de page, et donc aucune chance de continuer de parcourir le deuxième enregistrement de ta boucle !?

Si j'ai bien compris ton script (ce qui est pas sûr) tu peux mettre en session les données que tu veux passer

session_start();

dans ta boucle tu mets pseudo,base et job dans un tableau en session et à la sortie de la boucle, tu fais ton header location

Sur l'autre page, tu récupère ton tableau en session...

Autre possibilité, passer ton paramètre dans l'url (si juste un enregistrement valide)

// on fait une boucle qui va faire un tour pour chaque enregistrement
while($data = mysql_fetch_assoc($result))
{
// on affiche les informations de l'enregistrement en cours
$pseudo = $data['name'];
$base = $data['base_level'];
$job = $data['job_level'];
}
$monurlfinal="projet_signature.php?id=".$id."&pseudo=".$pseudo."&base=".$base."&job=".$job;

}
else
{
echo 'pouet';
}

mysql_close;

header("Location: $monurlfinal);

mais à cause de ta boucle, seul le dernier enregistrement sera pris, désolé, ton explication n'est pas assez claire mais peut-être que j'arriverais à te mettre sur une piste avec les miennes

Patrick

Posté (modifié)

Oui ca m'eclaire sur certain point mais pas sur d'autre :P

C'est de ma faute c'est vrai que je donne pas assez d'expliquation, je vais essayer d'en donner des plus claire:

Ma bdd se compose comme suit :

account_ID = le numero du compte

name = le personnage du compte

base_level = le lvl base du personnage

job_level = le lvl job du personnage

Un exemple pour illustrer : pour les account id = 200011

on a :

  • name : ka32 base : 50 job : 50
  • name : mago base : 60 job : 50
  • name : test base : 60 job : 50

je souhaite que des que dans l'adresse : projet_signature.php?id=200011 tout les personnage ayant l'account ID 200011 s'affiche

donc que la requete sql prenne en compte l'ID indiqué dans l'adresse :

$pseudo="SELECT  name, base_level, job_level FROM `char` WHERE account_id=".$id."";

voila j'espere que mes expliquations t'aiderons un peu plus...

merci encore

Modifié par Ka32
Posté

heu ...non

A mon avis, tu peux afficher les personnages directement dans une seule page après une requête sur les comptes id

requête sur le compte id '200011'

boucle

-- affichage de chaque personnage

fin de boucle

mais j'ai toujours rien compris à ton application ...

Patrick

Posté

Impecable en fait vous m'avez bien aidé ;) je suis parvenu a mes fin :

$id = $_GET["id"];
header("Location: $monurlfinal");


$pseudo="SELECT name, base_level, job_level, online FROM `char` WHERE account_id=".$id."";
$result=mysql_query($pseudo);

// on fait une boucle qui va faire un tour pour chaque enregistrement
while($data = mysql_fetch_assoc($result))
{

// on affiche les informations de l'enregistrement en cours
$online = $data['online'];

if ( $online == '1' ) {
echo ' <font color=green >ON </font>'; }
else if ($online == '0' ) { echo '<font color=red >off </font>';}

echo '<b>Pseudo : '.$data['name'].' </b>
Base level : '.$data['base_level'].'
Job level : '.$data['job_level'].' <br>';

}

$monurlfinal="signature.php?id=".$id."";

mysql_close;

?>

J'ai egalement rajouté une valeur dans mon code ^^

Veuillez vous connecter pour commenter

Vous pourrez laisser un commentaire après vous êtes connecté.



Connectez-vous maintenant
×
×
  • Créer...