Teclis01
Messages postés1423Date d'inscriptionmardi 14 décembre 2004StatutMembreDernière intervention29 décembre 2012
-
16 oct. 2005 à 12:18
malalam
Messages postés10839Date d'inscriptionlundi 24 février 2003StatutMembreDernière intervention 2 mars 2010
-
18 oct. 2005 à 08:57
Bon voila j'ai un petit soucis de traitement car je lis un fichier avec 151433 carateres et je n'arrivais pas a le traiter bizarement et lorsque j'ai voulu afficher ce qu'il lisait du fichier txt quel ne fut pas ma surprise ... le fichier a été correctement fait mais la lecture se passe assez mal.
Est ce normal?
Si oui quel remedes y a t il ? ( car dans ce fichier txt il y a des id_item et les nom_item issues de 3 tables)
-------------------------------------------------------------------------------------------------------
Il vaut mieux poser une question et passer pour bête que le rester toute sa vie
Teclis01
Messages postés1423Date d'inscriptionmardi 14 décembre 2004StatutMembreDernière intervention29 décembre 20124 17 oct. 2005 à 01:08
Le probleme vient du fait que la variable contenu dans $row["item_id"] change mais son nom associé non
le fichier d ou sont extrais les noms contient: iditem1;nomitem1;iditem2;nomitem2;
je fais donc une recherche sur chaque iditem d un personnage et je fais correspondre cela a son nom.
le resultat est un tableau ou il y a 3 colones
/iditem/nomitem/recipient
Voici le code!
<?php /* Date de création: 14/10/2005 */ ?>
<html>
<?php
/*************************/
/* By:Teclis */
/* Sous License GNU */
/* Thx To : My Faerie */
/* And More... */
/*************************/
echo "<STYLE>" ;
echo ".tabnormal{background-color:white; color:navy; font-weight:normal}";
//couleur sans passage de souris
echo ".tabover{background-color:green; color:white; font-weight:normal}" ;
//couleur avec passage de souris
echo "</STYLE>";
//conexion a la bdd sql
$link = mysql_connect("localhost","root", "")
or die("Impossible de se connecter : " . mysql_error());
//selection de la base
$db_selected = mysql_select_db('l2jdb', $link);
if (!$db_selected) {
die ('Impossible d\'utiliser la base : ' . mysql_error());
}
$table= "characters";
$query = "SELECT * FROM $table";
$result = mysql_query($query) or die("Echec de la requête");
if (mysql_num_rows($result) == 0) { //si aucun resultat
echo "Aucune ligne trouvée, rien à afficher.";
exit; }
//choix perso
echo "<SELECT NAME="comboperso">"; //si resultat
while ($row = mysql_fetch_assoc($result)) { //creation d'une combobox
$nomperso= $row["char_name"]; //avec boucle while (ligne par ligne)
$idperso= $row["obj_Id"]; //recuperation de variables de la table
echo "<OPTION VALUE="$idperso">";
printf(" %s ",$row["char_name"]);
}
echo "</table>";
echo "
</center>";
}
function verif_perso(){
$idperso=$_GET['comboperso'];
$recipient=$_GET['combooption'];
$fichier="listitems.txt";
//on va regarder combien d item ont ete synchronise
/*Lecture du fichier addlist.txt*/
$fp = fopen ($fichier, "r");
$text= fread($fp,300000);
//on cherche le nombre d'entrees
$nbentrees=substr_count($text,";");
//nombre de requete au max
$nbrequete=$nbentrees/2;
//on eclate la chaine avec pour separateur ;
$liste = explode( ";",$text);
//conexion a la bdd sql
$link = mysql_connect("localhost","root", "")
or die("Impossible de se connecter : " . mysql_error());
//selection de la base
$db_selected = mysql_select_db('l2jdb', $link);
$table= "items";
if (!$db_selected) {
die ('Impossible d\'utiliser la base : ' . mysql_error());
}
if($recipient!="TOUS"){ $query "SELECT * FROM $table WHERE owner_id '$idperso' AND loc = '$recipient'";
$result = mysql_query($query) or die("Echec de la requête");
if (mysql_num_rows($result) == 0) { //si aucun resultat
echo "Aucune ligne trouvée, rien à afficher.";
exit; }
$indexe =0;
if($indexe == 0){
//creation tableau pilote
//tableau d affichage des parametres decrivant les items
echo "<TABLE border=1 cellpadding=0 cellspacing=0 style=border-width:1px;border-style:solid;border-color:navy>";
echo "<TD> id objet</TD>";
echo "<TD> objet</TD>";
echo "<TD> Recipient</TD>";
echo "</TR>";
$indexe =1; //le tableau est indexe
}
if($indexe==1){ //si tableau indexe
while ($row = mysql_fetch_array($result, MYSQL_ASSOC)) {
$item = $row["item_id"]; //on recupere chaque champ dans une variable
for($i=0;$i<=$nbrequete;$i=$i+2){
if($liste[$i]==$row["item_id"]){ //c'est ici ou ca se passe mal
$item1=$liste[$i+1];
}
}
$item2 = $recipient;
//ecriture de chaque parametre
echo "<TR class=tabnormal onmouseover=this.className='tabover' onmouseout=this.className='tabnormal'>";
echo "<TD>$item </TD>";
echo "<TD>$item1 </TD>";
echo "<TD>$item2 </TD>";
echo"</TR>";
}
}
}
else{ $query "SELECT * FROM $table WHERE owner_id $idperso";
$result = mysql_query($query) or die("Echec de la requête");
if (mysql_num_rows($result) == 0) { //si aucun resultat
echo "Aucune ligne trouvée, rien à afficher.";
exit; }
$indexe =0;
if($indexe == 0){
//creation tableau pilote
//tableau d affichage des parametres decrivant les items
echo "<TABLE border=1 cellpadding=0 cellspacing=0 style=border-width:1px;border-style:solid;border-color:navy>";
echo "<TD> id objet</TD>";
echo "<TD> objet</TD>";
echo "<TD> Recipient</TD>";
echo "</TR>";
$indexe =1; //le tableau est indexe
}
if($indexe==1){ //si tableau indexe
while ($row = mysql_fetch_array($result, MYSQL_ASSOC)) {
$item = $row["item_id"]; //on recupere chaque champ dans une variable
for($i=0;$i<=$nbrequete;$i=$i+2){
if($liste[$i]==$row["item_id"]){ //c'est ici ou ca se passe mal
$item1=$liste[$i+1];
}
}
$item2 = $row["loc"];
//ecriture de chaque parametre
echo "<TR class=tabnormal onmouseover=this.className='tabover' onmouseout=this.className='tabnormal'>";
echo "<TD>$item </TD>";
echo "<TD>$item1 </TD>";
echo "<TD>$item2 </TD>";
echo"</TR>";
-------------------------------------------------------------------------------------------------------
Il vaut mieux poser une question et passer pour bête que le rester toute sa vie
Teclis01
Messages postés1423Date d'inscriptionmardi 14 décembre 2004StatutMembreDernière intervention29 décembre 20124 17 oct. 2005 à 16:33
Mais euh mon code est simple :O)
Bon alors j essayes de re-expliquer!
j'ai un fichier listitems.txt dans lequel il y a :
id1;item1;id2;item2;...idn;itemn;
Le nombre de recherche a faire dans le fichier texte est correspond donc au nombre de : ";" divisé par 2.
Lors de la requete :$query "SELECT * FROM $table WHERE owner_id '$idperso' AND loc = '$recipient'";
OU$query "SELECT * FROM $table WHERE owner_id $idperso";
qui est choisie par l utilisateur suivant 2 combobox decrites ici:
//choix perso
echo "<SELECT NAME="comboperso">"; //si resultat
while ($row = mysql_fetch_assoc($result)) { //creation d'une combobox
$nomperso= $row["char_name"]; //avec boucle while (ligne par ligne)
$idperso= $row["obj_Id"]; //recuperation de variables de la table //ICI ON RECUPERE TOUS LES OBJETS DETENUS PAR UN PERSO
echo "<OPTION VALUE="$idperso">";
printf(" %s ",$row["char_name"]);
}
Le but de ce script est de faire apparaitre dans un tableau et suivant la colonne, l id des items detenus par le perso, le noms des items qui correspondent a cet id et le recipient (par exemple inventaire, coffre...)
Ce qui fonctionne:
affichage de chaque id des items
affichage du recipient
Ce qui ne fonctionne pas:
l affichage du nom de l item correspondant a l id
J espere que c'est plus clair.
Merci
-------------------------------------------------------------------------------------------------------
Il vaut mieux poser une question et passer pour bête que le rester toute sa vie
Teclis01
Messages postés1423Date d'inscriptionmardi 14 décembre 2004StatutMembreDernière intervention29 décembre 20124 17 oct. 2005 à 19:21
je viens re remarquer une chose assez étrange... lors de la sous traitance et la construction du fichier txt, et lors de sa lecture en weblocal avec easyphp il y avait des especes de trous entre les valeur et lors du surlignement avec la souris, les lignes réaparaissaient ...j ai easy php 1.7 ca viendrait de ça qu il ne les vois pas et que le script se plante monumentalement? au passage mon fichiers txt contient 151433 caracteres ... je vais voir pour le faire autrement! meme si le code sera assez inbuvable ...
-------------------------------------------------------------------------------------------------------
Il vaut mieux poser une question et passer pour bête que le rester toute sa vie