Une bouteille de champagne contre modification d'un fichier.

12 messages   •   Page 1 sur 1
Petit nouveau ! | 5 Messages

29 févr. 2008, 00:24

Bonjour à tous,

Je suis le webmaster amateur d'un petit site de rencontres réalisé avec le script américain Osdate.Le site est tout récent mais je suis déjà parvenu,avec mes maigres connaissances en informatique et aucune compétence pour le Php,à l'adapter à mes besoins.
Cependant,un fichier de ce script me file la migraine ! Pas moyen de le transformer comme je le voudrais ! Ce fichier active l'affichage d'une sélection de profils .Le classement de ces profils se fait par ordre d'inscription sur le site or je souhaiterais que les profils s'affichent en fonction de leur ancienneté de connexion,des plus récents aux plus anciens.
Le fichier du script Osdate à modifier est,je ne pense pas me tromper,le fichier "mymatches.php".
<?php
if ( !defined( 'SMARTY_DIR' ) ) {

	include_once( 'init.php' );
}

include( 'sessioninc.php');

if ( $_GET['results_per_page'] ) {

	$psize = $_GET['results_per_page'];

	$config['search_results_per_page'] = $_GET['results_per_page'] ;

	$_SESSION['ResultsPerPage'] = $_GET['results_per_page'];

} elseif( $_SESSION['ResultsPerPage'] != '' ) {

	$psize = $_SESSION['ResultsPerPage'];

	$config['search_results_per_page'] = $_SESSION['ResultsPerPage'] ;

} else {

	$psize = $config['search_results_per_page'];

	$_SESSION['ResultsPerPage'] = $config['search_results_per_page'];

}

$t->assign ( 'psize',  $psize );

$user = $db->getRow( 'SELECT * FROM ! WHERE id = ?',array( USER_TABLE,  $_SESSION['UserId']) );

$radius = $user['lookradius'];

$radiustype = $user['radiustype'];

$zipcodes_in = "";

/* Check for zip code proximity search */
if ($user['lookzip'] != '' && isset($radius) && $radius > 0) {

	$ziprow = $db->getRow('select * from ! where code=?  and countrycode=?',array(ZIPCODES_TABLE, $user['lookzip'], $user['lookcountry'] ) );

	$lat = $ziprow['latitude'];
	$lng = $ziprow['longitude'];

	if ($lng!='' && $lat!='') {

		if ($radiustype == 'kms') {
			/* Kilometers calculation */
			$sql = "select DISTINCT code, sqrt(power(69.1*(latitude - $lat),2) +  power( 69.1 * (longitude-$lng) * cos(latitude/57.3),2)) as dist from ! where countrycode=? and sqrt(power(69.1*(latitude - $lat),2)+power(69.1*(longitude-$lng)*cos(latitude/57.3),2)) <= " . $radius ;
		} else {
			/* Miles  */
			$sql = "select DISTINCT code, (3958* 3.1415926 * sqrt((latitude - $lat) * (latitude- $lat) + cos(latitude / 57.29578) * cos($lat/57.29578)*(longitude - $lng) * (longitude - $lng))/180) as dist from ! where countrycode=? and (3958* 3.1415926 * sqrt((latitude - $lat) * (latitude- $lat) + cos(latitude / 57.29578) * cos($lat/57.29578)*(longitude - $lng) * (longitude - $lng))/180) <= " . $radius ;
		}

		$zipcodes = $db->getAll($sql, array(ZIPCODES_TABLE, $user['lookcountry'] ) );

		foreach ($zipcodes as $val) {
			if ($zipcodes_in != '') $zipcodes_in.=", ";
			$zipcodes_in.= "'".$val['code']."'";
		}

		if ($zipcodes_in != '') {
			$zipcodes_in = " and user.zip in (".$zipcodes_in.") ";
		} else {
			$zipcodes_in = " and user.zip is null ";
		}
	}
}

$bannedlist = '';
$bannedusers = $db->getAll('select usr.id as ref_userid from ! as bdy, ! as usr where bdy.act=? and ((usr.username = bdy.username and bdy.ref_username = ?) or (usr.username = bdy.ref_username and bdy.username = ? ) )', array(BUDDY_BAN_TABLE, USER_TABLE, 'B', $_SESSION['UserName'], $_SESSION['UserName']) );
if (count($bannedusers) > 0) {
	$bannedlist=' and user.id not in (';
	$bdylst = '';
	foreach ($bannedusers as $busr) {
		if ($bdylst != '') $bdylst .= ',';
		$bdylst .= "'".$busr['ref_userid']."'";
	}
	$bannedlist .=$bdylst.') ';
}


$sqlSelect = 'SELECT user.*, floor((to_days(curdate())-to_days(birth_date))/365.25)  as age';

$sqlFrom = ' FROM ! user, ! mem ';

$sqlWhere = ' WHERE user.id > 0  AND mem.roleid=user.level and mem.includeinsearch=1 ';

$sqlWhere .= $bannedlist;

$txtgender_search = " AND user.lookgender in  ( 'A', ";

if ($user['gender'] == 'M' or $user['gender'] == 'F') {
	$txtgender_search .= "'B',";
}

$txtgender_search .= "'".$user['gender']."' )";


$txtlookgender_search = '';

if ($user['lookgender'] == 'B') {
	$txtlookender_search = " AND user.gender in ('M','F') ";
} elseif ($user['lookgender'] != 'A') {
	$txtlookgender_search = " AND user.gender = '".$user['lookgender']."' ";
}

$sqlWhere .= ' AND status in (\'Active\',\' '.get_lang('status_enum','active')."') " . $txtlookgender_search . $txtgender_search;

if( $user['lookcountry'] ){

	if( $user['lookcountry'] == 'AA' ) {

		$sqlWhere .= ' AND country LIKE \'%\' ';

	}else{

	$sqlWhere .= ' AND country = \'' . $user['lookcountry'] ."' ";
	}
}

if( $user['lookstate_province'] ){

	if( $user['lookstate_province'] == 'AA' ) {

		$sqlWhere .= ' AND state_province LIKE \'%\' ';

	}else{

	$sqlWhere .= ' AND state_province = \'' . $user['lookstate_province'] ."' ";
	}
}

if( $user['lookcounty'] ){

	if( $user['lookcounty'] == 'AA' ) {

		$sqlWhere .= ' AND county LIKE \'%\' ';

	}else{

	$sqlWhere .= ' AND county = \'' . $user['lookcounty'] ."' ";
	}
}

if( $user['lookcity'] ){

	if( $user['lookcity'] == 'AA' ) {

		$sqlWhere .= ' AND city LIKE \'%\' ';

	}else{

	$sqlWhere .= ' AND city = \'' . $user['lookcity'] ."' ";
	}
}

if( $user['lookzip'] ) {
	if (!isset($radius) ){

		if( $user['lookzip'] == 'AA' ) {

			$sqlWhere .= ' AND zip LIKE \'%\' ';

		}else{

			$sqlWhere .= ' AND zip = \'' . $user['lookzip'] ."' ";
		}
	} else {

		$sqlWhere .= $zipcodes_in;
	}
}


$sqlWhere .= ' AND floor(period_diff(extract(year_month from NOW()),extract(year_month from birth_date))/12) BETWEEN '
	. $user['lookagestart'] . ' AND ' . $user['lookageend'] ;

$sql = $sqlSelect . $sqlFrom . $sqlWhere;

$cpage = $_GET['page'];

if( $cpage == '' ) $cpage = 1;

$rs = $db->query( $sql, array( USER_TABLE, MEMBERSHIP_TABLE ) );

$rcount = $rs->numRows();

if( $rcount > 0 ) {

	$t->assign( 'totalrecs', $rcount );

	$pages = ceil( $rcount / $psize );

	$start = ( $cpage - 1 ) * $psize;

	$t->assign ( 'start', $start );

	if( $pages > 1 ) {

		if ( $cpage > 1 ) {

			$prev = $cpage - 1;

			$t->assign( 'prev', $prev );

		}

		$t->assign ( 'cpage', $cpage );

		$t->assign ( 'pages', $pages );

		if ( $cpage < $pages ) {

			$next = $cpage + 1;

			$t->assign ( 'next', $next );

		}
	}

	$sql .= " limit $start, $psize"	;
}

$data = $db->getAll ( $sql, array( USER_TABLE, MEMBERSHIP_TABLE ) );

$t->assign( 'user', $user );

if ( count($data) <= 0 ) {

	$t->assign ( 'error', "1" );

	$t->assign ( 'backlink', 'index.php' );

	$t->assign ( 'lang', $lang );

	$t->assign('rendered_page', $t->fetch('mymatches.tpl') );

	$t->display ( 'index.tpl' );

	exit;

} else {

	$t->assign ( 'backlink', 'index.php' );

	$t->assign ( 'message_right', hasRight('message') );

	$t->assign ( 'view_pic_profile_right', hasRight('seepictureprofile') );

	$users = array();

	foreach ($data as $row) {

		$row['countryname'] = $db->getOne('select name from ! where code = ?', array( COUNTRIES_TABLE, $row['country'] ) );

		$row['statename'] = $db->getOne('select name from ! where code = ? and countrycode = ?', array( STATES_TABLE, $row['state_province'], $row['country'] ) );

		$row['statename'] = ($row['statename'] != '') ? $row['statename'] : $row['state_province'];

		$row['statename'] = ($row['statename'] == 'AA') ? get_lang('any_where'): $row['statename'];
$piccnt = $db->getOne('select picno from ! where userid = ? and ( album_id is null or album_id = ?)',array(USER_SNAP_TABLE, $row['id'],'0' ) );
if (!isset($piccnt)) // The user has not uploaded a public photo, so we are going to use a static one!
	    $row['staticPhoto'] = 'images/'.(($row['gender'] == "M") ? "male" : (($row['gender'] == "F") ? "female" : "couple")).'.jpg';
		$users[] = $row;
	}


	$t->assign ( 'data', $users );

	$t->assign ( 'lang', $lang );

	$t->assign('rendered_page', $t->fetch('mymatches.tpl') );

	$t->display ( 'index.tpl' );

	exit;
}
?>
J'offre une bouteille de champagne et toute ma reconnaissance à celui ou celle qui parviendra à apporter la modification souhaitée à ce fichier :)
Merci d'avance.

Eléphant du PHP | 445 Messages

29 févr. 2008, 01:11

Edit : Après avoir téléchargé OsDate, j'ai lu le readme et je suis tombé sur ceci :
2. Sort by Membership level is included. In Global configuration settings, there is a parameter
for defautl sort order (search_sort_by). Default is username. You should set this parameter
if you want to have anything as default search sort order.

Programs modified are
advmatch.php,
/admin/advmatch.php,
searchmatch.php,
/templates/default/advmatch.tpl,
/templates/default/showsimpsh.tpl,
/templates/default/admin/advmatch.tpl

/sql/system.sql is included which contain new record for this parameter. This is for those
users who may do a full install.

For membership level sorting to work, the memberships should be listed in the order of
importance in the table. Also, changes should be made to existing users to reflect new user
level for existing level. THis should be done manually using sql interface.
Je pense que tu dois pouvoir le modifier par l'interface d'administration ou par un fichier (genre config.php ou autre).

Sinon, il se trouve dans la table osdate_glblsettings

config_variable = search_sort_by
config_value = username (remplace le par lastvisit)
description = Default sort order for search results

Edit2 : Si tu as une version plus ancienne a la 2.0.7 - Essayes cela :
$sql = $sqlSelect . $sqlFrom . $sqlWhere . ' ORDER BY lastvisit DESC'; 
Modifié en dernier par h0_noMan le 01 mars 2008, 02:44, modifié 3 fois.

ViPHP
AB
ViPHP | 5818 Messages

29 févr. 2008, 01:52

Un magnum pour h0_noMan :?:

Petit nouveau ! | 5 Messages

29 févr. 2008, 14:48

Merci de ta tentative :)

Ma version est la 2.0.3 .La modification du fichier mymatches.php,en ajoutant 'ORDER BY lasvisit DESC' , ne fonctionne pas !
Dans la table osdate_glblsettings,config_value = username n'existe pas.
J'ai tenté des modifications dans config.php,init.php,config.inc.php mais ça ne change rien.
Le problème reste entier :(

[Note : ce message a été posté de manière anonyme avant d'être réattribué à son auteur]

Eléphant du PHP | 445 Messages

29 févr. 2008, 15:23

Peux tu donner la structure de la table : user

Petit nouveau ! | 5 Messages

29 févr. 2008, 20:40

La voici :

Code : Tout sélectionner

id int(11) Non active tinyint(1) Oui 0 username varchar(25) Non password varchar(32) Non lastvisit int(11) Non 0 regdate int(11) Non 0 level tinyint(4) Oui 4 timezone decimal(5,2) Oui 0.00 allow_viewonline tinyint(1) Oui 1 rank int(11) Oui 0 email varchar(255) Oui NULL country varchar(11) Oui actkey varchar(32) Oui NULL firstname varchar(50) Oui NULL lastname varchar(50) Oui NULL gender char(1) Non M lookgender char(1) Oui lookagestart int(11) Oui 0 lookageend int(11) Oui 0 address_line1 varchar(100) Oui NULL address_line2 varchar(100) Oui NULL state_province varchar(50) Oui NULL county varchar(50) Oui NULL city varchar(100) Oui NULL zip varchar(30) Oui NULL birth_date date Non 0000-00-00 lookcountry varchar(255) Oui lookstate_province varchar(50) Oui NULL lookcounty varchar(50) Oui NULL lookcity varchar(100) Oui NULL lookzip varchar(100) Oui NULL lookradius varchar(5) Oui NULL radiustype varchar(5) Oui miles picture char(1) Oui 0 pictures_cnt int(4) Oui 0 videos_cnt int(4) Oui 0 about_me text Oui NULL couple_usernames varchar(255) Oui NULL status varchar(20) Non Pending levelend int(11) Oui NULL php121_user_chatting int(11) Non 0 php121_smilies tinyint(1) Non 1 php121_level tinyint(1) Non 1 php121_showrequest tinyint(1) Non 1 php121_beep_newmsg tinyint(1) Non 1 php121_focus_newmsg tinyint(1) Non 1 php121_banned tinyint(1) Non 0 php121_timezone tinyint(3) Non 0 php121_timestamp tinyint(1) Non 1 php121_language varchar(30) Non English php121_auto_email_transcript tinyint(1) Non 0 php121_cl_update_key int(11) Non 0 ip text Oui NULL

Eléphant du PHP | 445 Messages

29 févr. 2008, 21:17

Normal j'ai oublié un t dans le code.
$sql = $sqlSelect . $sqlFrom . $sqlWhere . 'ORDER BY lastvisit DESC';

Petit nouveau ! | 5 Messages

29 févr. 2008, 21:33

Je viens de tenter !

Ca ne marche pas.Le site me retourne un message d'erreur : DB Error: syntax errordb_error Object

C'est sympa à toi de passer du temps sur mon ti problème :) Merci

Eléphant du PHP | 445 Messages

29 févr. 2008, 22:22

J'ai encore fait une faute. :roll:
Il faut un espace avant le ORDER.
$sql = $sqlSelect . $sqlFrom . $sqlWhere . ' ORDER BY lastvisit DESC'; 


Si cela ne fonctionne toujours pas, mets un echo $sql; après cette ligne et donnes nous le résultat.

Petit nouveau ! | 5 Messages

29 févr. 2008, 22:36

Tu viens de la gagner ta bouteille :) Trop fort :)

Merci beaucoup.

Mon adresse mail est visible sur ce forum, en principe.Donnes moi ton adresse postale par mail et tu reçevras ton ti colis en début de semaine.

Et j'espère qu'on gardera le contact pour de futures modifications de code :)

Merci encore.

Eléphant du PHP | 445 Messages

29 févr. 2008, 22:44

Cela tombes bien, mon anniversaire est dans 10 jours.

Si tu souhaites faire de même sur d'autre pages, il faudra effectuer la même modification dans les fichiers correspondant.

En fait, j'avais la bonne requête des le début mais la fatigue augmente la probabilité d'apparitions de boulettes.

Mammouth du PHP | 1511 Messages

01 mars 2008, 00:53

Tu viens de la gagner ta bouteille :) Trop fort :)

Merci beaucoup.

Mon adresse mail est visible sur ce forum, en principe.Donnes moi ton adresse postale par mail et tu reçevras ton ti colis en début de semaine.

Et j'espère qu'on gardera le contact pour de futures modifications de code :)

Merci encore.
Ralala, on va encore passer pour des alcooliques... Tssss... :lol:
La cafeine, il n'y a que ca de vrai dans l'informatique :D

12 messages   •   Page 1 sur 1