Fork me on GitHub


 Bas   Précédent   Suivant

« 1 ... 33 34 35 (36) 37 38 »


Re: Criteria is not null
Régulier
Inscrit: 06/01/2006 23:55
Messages: 379
ca revient au meme que l'utilisation de la fonction ifnull...

C un petit bricolage qui fonctionne pour ce cas precis comme pour moi avec 0 mais fonctionnellement c'est pas toujours le cas...
Imagines que tu geres un compte d'un client... un compte a null ca peut vouloir dire un compte qui n'a jamais eu aucune operation, un compte a 0 c'est pas pareil ...

Null ca veut bien dire quelquechose, c'est pas toujours pareil que 0 ou qu'une chaine vide. Et c'est bien dommage que les requetes de base IS null ou IS NOT null ne soient pas possibles avec la classe criteria tel qu'elle est aujourd'hui.

Posté le : 27/08/2006 20:37
Transférer la contribution vers d'autres applications Transférer


Re: Criteria is not null
Régulier
Inscrit: 06/01/2006 23:55
Messages: 379
Essayes de pas rajouter de booleen... ca rime a rien en terme logique de structure de base et tu doublonnes enfait le fonctionnement de ta base de donnée ;)
Typiquement une donnée nulle en base c'est gere par un bit indiquant si la donnée est renseignée ou pas, donc un flag ;) sauf que 1 bit pour une colonne, ca veut dire que tu geres plusieurs colonnes avec un seul octet...

Tu peux faire ton test en utilisant la meme solution que celle que j'ai utilisé moi en utilisant la fonction ifnull (cf le sujet que je t'ai mis en lien au dessus)

Le probléme qu'il y a avec la solution que j'ai utilisé et qui devrait marcher pour toi aussi, c'est que je considere pour moi, que NULL ou 0 c'est pareil. Mais des fois fonctionnellement c'est pas du tout le cas!!! Et on peut pas le faire dans l'etat actuel des choses dans xoops avec la classe criteria!!!!
Et c'est assez grave a mon avis...

Posté le : 27/08/2006 00:22
Transférer la contribution vers d'autres applications Transférer


Re: Criteria is not null
Régulier
Inscrit: 06/01/2006 23:55
Messages: 379

Posté le : 25/08/2006 12:38
Transférer la contribution vers d'autres applications Transférer


Re: Besoin aide pour requete mysql
Régulier
Inscrit: 06/01/2006 23:55
Messages: 379
Attention a ta requete la...

Si mes souvenirs sont bons le OR est prioritaire donc ca
$sql "SELECT Count(*) FROM ".$xoopsDB->prefix("mylove")." WHERE (uid=$uid AND fuid=$friendid  OR uid=$friendid AND blockeduid=$uid)";

ca fait ca
$sql "SELECT Count(*) FROM ".$xoopsDB->prefix("mylove")." WHERE (uid=$uid AND (fuid=$friendid  OR uid=$friendid) AND blockeduid=$uid)";


Attention a mettre les parentheses, c plus facile a lire et au moins personne se pose de question sur ce qui est reellement voulu. La pour moi il me semble que tu veux cela normalement
$sql "SELECT Count(*) FROM ".$xoopsDB->prefix("mylove")." WHERE (uid=$uid AND fuid=$friendid ) OR (uid=$friendid AND blockeduid=$uid)";

Et la tu verifies si j'ai bien compris que l'utilisateur uid n'a pas deja friendid dans ses amis ou si l'utilisateur uid ne fait pas partie de la liste des gens bloqués par friendid.

Posté le : 19/08/2006 13:12
Transférer la contribution vers d'autres applications Transférer


Re: Besoin aide pour requete mysql
Régulier
Inscrit: 06/01/2006 23:55
Messages: 379
ok alors si je comprends bien
uid c le uid de l'utilisateur
friendid c sense etre uid d'un ami
blockeduid c sense etre l'uid que tu as bloques

En gros tu veux savoir si l'uid que tu veux rajouter est dans ta liste d'utilisateur bloque ou ami

Ton avant dernier essai est presque bon :
case "addfriend"// Add someone to your friendlist
$member_handler =& xoops_gethandler('member');
$thisUser =& $member_handler->getUser($friendid);
if (!
is_object($thisUser) || !$thisUser->isActive()) { // Only add valid profiles as your friendlist
redirect_header("myfriend.php",3,_PROFILE_MA_SELECTNG);
exit();
}
$sql "SELECT Count(*) FROM ".$xoopsDB->prefix("mylove")." WHERE (uid=$uid AND blockeduid=$friendid)";
$res $xoopsDB->query($sql);
list(
$ismyfriend) = $xoopsDB->fetchRow($res);
if (
$ismyfriend == 0) {redirect_header('myfriend.php',5,_MLS_BLOCKED_PROFIL);
exit();
}

$sql "SELECT Count(*) FROM ".$xoopsDB->prefix("mylove")." WHERE (uid=$uid AND fuid=$friendid)";
$res $xoopsDB->query($sql);
list(
$ismyfriend) = $xoopsDB->fetchRow($res);
if (
$ismyfriend == 0) { // This member isn't your friend yet.
$sqlstr ="INSERT INTO ".$xoopsDB->prefix("my love")." (uid, fuid) VALUES ($uid$friendid)";
$req1=mysql_query($sqlstr);

redirect_header('myfriend.php',5,_MLS_FRIEND_ADDED);
exit();
} else {
redirect_header('myfriend.php',5,_MLS_FRIEND_ALREADY);
exit();
}

ton erreur est sur ton test de redirection pour tester si c bloque
tu dois pas tester si c == 0 mais au contraire si c'est different, et oui si tu recuperes rien c justement que ton utilisateur n'est pas bloqué
Donc a priori avec la comprehension que j'ai de ton pb ca serait plutot cela
case "addfriend"// Add someone to your friendlist
$member_handler =& xoops_gethandler('member');
$thisUser =& $member_handler->getUser($friendid);
if (!
is_object($thisUser) || !$thisUser->isActive()) { // Only add valid profiles as your friendlist
redirect_header("myfriend.php",3,_PROFILE_MA_SELECTNG);
exit();
}
$sql "SELECT Count(*) FROM ".$xoopsDB->prefix("mylove")." WHERE (uid=$uid AND blockeduid=$friendid)";
$res $xoopsDB->query($sql);
list(
$ismyfriend) = $xoopsDB->fetchRow($res);
if (
$ismyfriend != 0) {redirect_header('myfriend.php',5,_MLS_BLOCKED_PROFIL);
exit();
}

$sql "SELECT Count(*) FROM ".$xoopsDB->prefix("mylove")." WHERE (uid=$uid AND fuid=$friendid)";
$res $xoopsDB->query($sql);
list(
$ismyfriend) = $xoopsDB->fetchRow($res);
if (
$ismyfriend == 0) { // This member isn't your friend yet.
$sqlstr ="INSERT INTO ".$xoopsDB->prefix("my love")." (uid, fuid) VALUES ($uid$friendid)";
$req1=mysql_query($sqlstr);

redirect_header('myfriend.php',5,_MLS_FRIEND_ADDED);
exit();
} else {
redirect_header('myfriend.php',5,_MLS_FRIEND_ALREADY);
exit();
}

Posté le : 18/08/2006 11:50
Transférer la contribution vers d'autres applications Transférer


Re: Besoin aide pour requete mysql
Régulier
Inscrit: 06/01/2006 23:55
Messages: 379
non les 2 propositions sont exactement pareil en php
ca
$sql " WHERE (uid=".$uid." AND lovuid=".$friendid." AND blockeduid=".$friendid".)";

c'est pareil que ca
$sql " WHERE (uid=$uid AND lovuid=$friendid AND blockeduid=$friendid)";

C'est la difference entre " et '
si ca avait ete entre ' c clair que la c'etait pas pareil...
Si tu codes
$toto = 1;
$sql = '$toto';
et que tu affiches echo $sql
tu auras comme resultat $toto a l'ecran
si tu codes
$toto = 1;
$sql = "$toto";
echo $toto donnera 1 à l'ecran.

Maintenant par contre si tes donnees a tester sont des chaines de caracteres par contre c'est pas bon ni l'une ni l'autre (typiquement si il blockeduid est une chaine de caractere c'est pas comme cela qu'il faut l'ecrire) mais j'ai des doutes que des uid soient des chaines de caracteres.

Maintenant comme cela ne connaissant pas la structure de ta table, franchement je peux pas t'aider... en tout cas la c'est cense de compter le nombre de ligne ou uid, lovuid et blockeuid sont connus

Enfin donnes nous ta structure de table et ce a quoi correspond tes donnees et ce que tu veux obtenir, et on pourra peut etre t'aider.

Posté le : 18/08/2006 00:17
Transférer la contribution vers d'autres applications Transférer


Re: Proposition de classe XoopsFormSelectColor
Régulier
Inscrit: 06/01/2006 23:55
Messages: 379
bon j'ai fait ce que j'ai pu sur sourceforge...

Posté le : 15/08/2006 20:06
Transférer la contribution vers d'autres applications Transférer


Re: Proposition de classe XoopsFormSelectColor
Régulier
Inscrit: 06/01/2006 23:55
Messages: 379
Le but semble etre a peu pres le meme effectivement.

La presentation differe pourtant, moi cela fait apparaitre comme son nom l'indique une boite select en fait exactement comme celle qui apparait dans l'editeur.

En ce qui concerne la contribution a Xoops. J'ai beau relativement bien lire l'anglais (par obligation professionnel), j'evite en regle general de le parler et de l'ecrire, car j'ai peur de pas etre super comprehensible (surtout l'ecrit d'ailleurs parler on arrive toujours a se comprendre avec la personne en face).
Et le but de la communaute Franco n'est-il pas aussi de pouvoir proposer des choses et en Francais? Si on peut pas le faire en français vous aller perdre toutes les bonnes volontes ne s'exprimant pas tres bien en anglais et toutes les bonnes idees que des developpeurs français et ne sachant pas s'exprimer en anglais pourraient avoir.

Posté le : 15/08/2006 19:42
Transférer la contribution vers d'autres applications Transférer


Re: Proposition de classe XoopsFormSelectColor
Régulier
Inscrit: 06/01/2006 23:55
Messages: 379
lol

Ben ca montre que c utile alors ;)

Ca serait pas mal de rajouter cela direct dans xoops alors...

Posté le : 15/08/2006 18:35
Transférer la contribution vers d'autres applications Transférer


Proposition de classe XoopsFormSelectColor
Régulier
Inscrit: 06/01/2006 23:55
Messages: 379
Bonjour, je sais pas si je suis au bon endroit alors tant pis je le fait ici

Voila, j'ai eu un besoin de pouvoir choisir des couleurs pour une preference de module, et là je me suis aperçu qu'il n'y avait pas de classe predefinie pour cela au niveau des classes FormSelect qui sont utilisées pour la gestion des formulaires de façons generales et surtout par l'administration.

J'ai donc palié a mon besoin et je le mets ici, cela peut etre utile à d'autre .

J'ai cree une classe XoopsFormSelectColor qui peut servir a modifier la couleur du texte (style color) ou du fond (style backgroundcolor).
Dans class/xoopsform/formselectcolor.php
<?php
/*
 * Created on 15 août 06
 *
 */
if (!defined('XOOPS_ROOT_PATH')) {
    die(
"XOOPS root path not defined");
}

/**
 * A select field
 * 
 * @package     kernel
 * @subpackage  form
 * 
 * @author        Lionel FORTE aka Garrath
 * @copyright    
 */
class XoopsFormSelectColor extends XoopsFormSelect {
    var 
$_back false;

    
/**
     * Constructor
     * 
     * @param    string    $caption    Caption
     * @param    string    $name       "name" attribute
     * @param    mixed    $value        Pre-selected value (or array of them).
     * @param    bool    $back            if back is true then backgroundcolor else color
     */
    
function XoopsFormSelectColor($caption$name$value=null$back=false ){
        
$this->_back $back;        
        
$this->XoopsFormSelect($caption$name$value);
    }


    
/**
     * Prepare HTML for output
     * 
     * @return    string  HTML
     */
    
function render(){
        
$color $this->getValue();    //Il ne peut pas y avoir plusieurs choix ici
        
$style $this->_back'background-color':'color';
        
$stylejs $this->_back'backgroundColor':'color';
        
$ret "<select  size='".$this->getSize()."'".$this->getExtra()." style='".$style.":".$color[0]."' onchange='style.".$stylejs."=this.options[this.selectedIndex].value;'";
        
$ret .= " name='".$this->getName()."' id='".$this->getName()."'>n";
        
        
        if (
count($this->getOptions()) ){
            foreach ( 
$this->getOptions() as $value => $name ) {
                
$color htmlspecialchars($valueENT_QUOTES);
                
$ret .= "<option value='".$color."' style='".$style.":".$color.";'";
                if (
count($this->getValue()) > && in_array($value$this->getValue())) {
                    
$ret .= " selected='selected'";
                }
            
$ret .= ">".$name."</option>n";
            }
        }
        else{
            
$colorarray = array("00""33""66""99""CC""FF");
            
$ret .= "<option value='COLOR'>"._COLOR."</option>n";
            foreach ( 
$colorarray as $color1 ) {
                foreach ( 
$colorarray as $color2 ) {
                    foreach ( 
$colorarray as $color3 ) {
                        
$ret .= "<option value='#".$color1.$color2.$color3."' style='background-color:#".$color1.$color2.$color3.";color:#".$color1.$color2.$color3.";'>#".$color1.$color2.$color3."</option>n";
                    }
                }
            }
        }
        
$ret .= "</select>";
        return 
$ret;

    }
}
?>


Voilà pour la classe.

Pour l'utiliser il faut modifier le fichier class/xoopsformloader.php pour rajouter le chemin vers la nouvelle classe
include_once XOOPS_ROOT_PATH."/class/xoopsform/formselectcolor.php";


Pour que cette classe soit utilisé pour les preferences d'un module il faut modifier le fichier modules/system/admin/preferences/main.php
rajouter ce bout de code
case 'selectcolorback':
                
$back true;
           case 
'selectcolor':
                
$ele = new XoopsFormSelectColor($title$config[$i]->getVar('conf_name'), $config[$i]->getConfValueForOutput(), isset($back));
                unset(
$back);
                
$options =& $config_handler->getConfigOptions(new Criteria('conf_id'$config[$i]->getVar('conf_id')));
                
$opcount count($options);
                for (
$j 0$j $opcount$j++) {
                    
$optval defined($options[$j]->getVar('confop_value')) ? constant($options[$j]->getVar('confop_value')) : $options[$j]->getVar('confop_value');
                    
$optkey defined($options[$j]->getVar('confop_name')) ? constant($options[$j]->getVar('confop_name')) : $options[$j]->getVar('confop_name');
                    
$ele->addOption($optval$optkey);
                }
                break;

dans les 2 boucles avec le switch a l'interieure des tests sur op est egale a show et showmod

Et maintenant au niveau du xoops_version de votre module il n'y a plus qu'a mettre cela par exemple pour definir une couleur de fond
$modversion['config'][2]['name'] = 'PM_COLOR_THISBOX';
$modversion['config'][2]['title'] = '_MI_PM_COLOR_THISBOX';
$modversion['config'][2]['description'] = '_MI_PM_COLOR_THISBOX_DESC';
$modversion['config'][2]['formtype'] = 'selectcolorback';
$modversion['config'][2]['valuetype'] = 'string';
$modversion['config'][2]['default'] = 'red';
$modversion['config'][2]['options'] = $tabcouleur;

avec ici un tableau de couleur predefinie dans $tabcouleur de ce type la :
$tabcouleur = array('aliceblue' => 'aliceblue',  
'antiquewhite' => 'antiquewhite'
'aqua' => 'aqua'
'aquamarine' => 'aquamarine'
'azure' => 'azure'
'beige' => 'beige'
'bisque' => 'bisque'
'black' => 'black'
'blanchedalmond' => 'blanchedalmond'
'blue' => 'blue'
'blueviolet' => 'blueviolet'
'brown' => 'brown'... );


Si vous ne voulez pas definir un tableau de couleur, il en sera créé un automatiquement un utilisant les codes en hexa (exactement le meme que sur l'editeur).


ceci defini par exemple une couleur d'ecriture avec le tableau de couleur genere automatiquement.
$modversion['config'][3]['name'] = 'PM_COLOR_ALLBOX';
$modversion['config'][3]['title'] = '_MI_PM_COLOR_ALLBOX';
$modversion['config'][3]['description'] = '_MI_PM_COLOR_ALLBOX_DESC';
$modversion['config'][3]['formtype'] = 'selectcolor';
$modversion['config'][3]['valuetype'] = 'string';
$modversion['config'][3]['default'] = '#006699';



Vous allez me dire: quel est l'interet?
J'en avais besoins et rajouter des classes css pour ce que je voulais faire avec me paraissait pas super top et puis la classe peut etre utilisé par ailleurs dans n'importe quel type de formulaire (comme dans l'editeur par exemple...).

Posté le : 15/08/2006 17:55
Transférer la contribution vers d'autres applications Transférer



 Haut
« 1 ... 33 34 35 (36) 37 38 »




Propulsé avec XOOPS | Graphisme adapté par Tatane, Grosdunord, Montuy337513

30 Personne(s) en ligne (21 Personne(s) connectée(s) sur Forum) | Utilisateur(s): 0 | Invité(s): 30 | Plus ...