Ka32 Posté 29 Octobre 2006 Posté 29 Octobre 2006 (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 : <?phprequire '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 enregistrementwhile($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é 29 Octobre 2006 par Ka32
objectifweb Posté 30 Octobre 2006 Posté 30 Octobre 2006 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
Ka32 Posté 30 Octobre 2006 Auteur Posté 30 Octobre 2006 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 ) <?phprequire '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 enregistrementwhile($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
objectifweb Posté 30 Octobre 2006 Posté 30 Octobre 2006 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 enregistrementwhile($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
Ka32 Posté 30 Octobre 2006 Auteur Posté 30 Octobre 2006 (modifié) Oui ca m'eclaire sur certain point mais pas sur d'autre 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é 30 Octobre 2006 par Ka32
objectifweb Posté 30 Octobre 2006 Posté 30 Octobre 2006 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
Ka32 Posté 30 Octobre 2006 Auteur Posté 30 Octobre 2006 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 enregistrementwhile($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
objectifweb Posté 30 Octobre 2006 Posté 30 Octobre 2006 ouf, me demandais comment on allait bien pu faire pour t'aider ! Patrick
Sujets conseillés
Veuillez vous connecter pour commenter
Vous pourrez laisser un commentaire après vous êtes connecté.
Connectez-vous maintenant