variable

Eléphanteau du PHP | 20 Messages

04 juin 2007, 13:42

Salut tout le monde,

Donc voici mon problème, dans une variable j'ai par exemple :

Cle 1

Et je voudrais savoir comment faire pour ne récupérer que le "1" de ma variable, je pensais eventuellement à la commande cut sous linux mais je ne vois pas comment faire.

merci d'avance

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

04 juin 2007, 13:50

Tu peux utiliser substr() pour tronquer la chaine à une position donnée, ou explode() sur l'espace pour diviser les différentes parties de ta chaine, ou même utiliser une expression régulière pour capturer la partie de la chaine qui t'intéresse ... bref, c'est pas les possibilités qui manquent :)
Ce n'est pas en améliorant la bougie que l'on a inventé l'ampoule...

Eléphanteau du PHP | 20 Messages

04 juin 2007, 14:12

merci de ta réponse donc j'ai essayé avec explode mais cela ne fonctionne pas.

il me met comme erreur :

Notice: Undefined offset: 1

j'ai une variable $result qui est le résultat d'une requête SQL et lorsque je fais un echo de cette variable j'ai "Cle 1".

Et donc j'ai faite ensuite
$cle = explode(" ", $result);
echo $cle[1];

et il me met l'erreur précédente. et je ne vois pas pourquoi

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

04 juin 2007, 14:26

Et si tu fais un echo $cle[0] après le explode, ça t'affiches "Cle 1" ? Essayes éventuellement un print_r() ou un var_dump()...

c'est peut être pas un simple espace que tu as entre les deux, mais un espace insécable (#160) à utiliser dans l'explode ?
Ce n'est pas en améliorant la bougie que l'on a inventé l'ampoule...

Eléphanteau du PHP | 20 Messages

04 juin 2007, 14:33

donc qd je fais echo $cle[0] sa m'affiche bien que "cle".

et donc comment faire alors?

et c'est quoi ton espace insécable?Comment on fait dans ce cas??

Merci beaucoup pour ton aide

Eléphanteau du PHP | 20 Messages

04 juin 2007, 14:42

Bon je viens tout juste d'essayer avec l'espace insécable (mm si je ne sais pas ce que c'est) et donc j'ai écrit :
$cle = explode(" ",$result);

et lorsque je fais echo $cle[1] cela me donne la mm erreur et lorsque je fais echo $cle[0] cela m'affiche bien "cle".

donc voili voilou, je ne comprends pas tout

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

04 juin 2007, 15:13

Essayes un print_r($cle) pour voir ce qu'il contient après le explode.

(Pour l'espace insécable, ca ne semble pas être le cas, puisque le explode te ramène bien la première partie de la chaine. En fait le   est l'entité html équivalente au caractère ascii #160; qui correspond à cet espace... mais bon ca n'à pas l'air de venir de là :))
Ce n'est pas en améliorant la bougie que l'on a inventé l'ampoule...

Eléphanteau du PHP | 20 Messages

04 juin 2007, 15:17

pour le print_r($cle) ça m'affiche

Array ( [0] => Cle )

et donc je ne comprends pas pourkoi il ne prends pas le "1"

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

04 juin 2007, 15:22

euh.. ben... pas mieux :)

et un print_r($result) ?
Ce n'est pas en améliorant la bougie que l'on a inventé l'ampoule...

Eléphanteau du PHP | 20 Messages

04 juin 2007, 15:26

ben ça m'affiche ça :

ADORecordSet_mysql Object ( [databaseType] => mysql [canSeek] => 1 [dataProvider] => native [fields] => Array ( [Cle] => 1 ) [blobSize] => 100
 => SELECT Chassis.Cle FROM Chassis WHERE Nom LIKE '%7%' [EOF] => [emptyTimeStamp] =>   [emptyDate] =>   [debug] => [timeCreated] => 0 [bind] => [fetchMode] => 1 [connection] => ADODB_mysql Object ( [databaseType] => mysql [dataProvider] => mysql [hasInsertID] => 1 [hasAffectedRows] => 1 [metaTablesSQL] => SHOW TABLES [metaColumnsSQL] => SHOW COLUMNS FROM `%s` [fmtTimeStamp] => 'Y-m-d H:i:s' [hasLimit] => 1 [hasMoveFirst] => 1 [hasGenID] => 1 [isoDates] => 1 [sysDate] => CURDATE() [sysTimeStamp] => NOW() [hasTransactions] => [forceNewConnect] => [poorAffectedRows] => 1 [clientFlags] => 0 [substr] => substring [nameQuote] => ` [compat323] => [_genIDSQL] => update %s set id=LAST_INSERT_ID(id+1); [_genSeqSQL] => create table %s (id int not null) [_genSeqCountSQL] => select count(*) from %s [_genSeq2SQL] => insert into %s values (%s) [_dropSeqSQL] => drop table %s [database] => takad [host] => localhost [user] => root [******] => ***** [debug] => [maxblobsize] => 262144 [concat_operator] => + [length] => length [random] => rand() [upperCase] => upper [fmtDate] => 'Y-m-d' [true] => 1 [false] => 0 [replaceQuote] => \' [charSet] => [metaDatabasesSQL] => [uniqueOrderBy] => [emptyDate] =>   [emptyTimeStamp] =>   [lastInsID] => [hasTop] => [readOnly] => [genID] => 0 [raiseErrorFn] => [cacheSecs] => 3600 [memCache] => [memCacheHost] => [memCachePort] => 11211 [memCacheCompress] => [arrayClass] => ADORecordSet_array [noNullStrings] => [numCacheHits] => 0 [numCacheMisses] => 0 [pageExecuteCountRows] => 1 [uniqueSort] => [leftOuter] => [rightOuter] => [ansiOuter] => [autoRollback] => [fnExecute] => [fnCacheExecute] => [blobEncodeType] => [rsPrefix] => ADORecordSet_ [autoCommit] => 1 [transOff] => 0 [transCnt] => 0 [fetchMode] => 2 [null2null] => null [_oldRaiseFn] => [_transOK] => [_connectionID] => Resource id #84 [_errorMsg] => [_errorCode] => [_queryID] => Resource id #85 [_isPersistentConnection] => [_bindInputArray] => [_evalAll] => [_affected] => [_logsql] => [_transmode] => [databaseName] => takad ) [_numOfRows] => 1 [_numOfFields] => 1 [_queryID] => Resource id #85 [_currentRow] => 0 [_closed] => [_inited] => 1 [_obj] => [_names] => [_currentPage] => -1 [_atFirstPage] => [_atLastPage] => [_lastPageNo] => -1 [_maxRecordCount] => 0 [datetime] => [adodbFetchMode] => 2 ) Cle 1

La je ne comprends rien du tout !!!!
Modifié en dernier par Z-obaze le 04 juin 2007, 16:34, modifié 1 fois.

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

04 juin 2007, 15:38

Arf, oki... en fait ta variable $result est un objet de type ADORecordSet_mysql qui contient toutes les infos que tu as affiché ci dessus et pas juste la chaine "Cle 1".

Il doit donc y avoir un moyen pour lire la valeur associée au champ clé directement.. probablement quelque chose du genre $result->Fields("Cle") vu la doc, mais là je maitrise pas trop...
Ce n'est pas en améliorant la bougie que l'on a inventé l'ampoule...

Eléphanteau du PHP | 20 Messages

04 juin 2007, 16:03

bon je te remercie pour ton aide, car avec Fields("Cle"), j'arrive bien a récupérer la valeur de Cle, mais par contre lorsque ma requête SQL retourne plusieur valeurs pour Cle cela ne prends que la première valeur.

Donc si jamais t'auvais encore une solution à mon problème. et je te remercie encroe

Eléphanteau du PHP | 20 Messages

05 juin 2007, 10:46

personne à une solution a mon problème???

ViPHP
ViPHP | 2144 Messages

05 juin 2007, 19:34

Il faut parcourir les résultats de la requête dans une boucle.
Montres nous la partie de code qui s'occupe de cette requêtte

Eléphanteau du PHP | 20 Messages

11 juin 2007, 16:50

Désolé du retard,

Donc voici ma partie de code :

$sql = "SELECT Chassis.Cle, Chassis.Immo, Chassis.Salle FROM Chassis WHERE Nom LIKE '%{$value}%'";
$result = $db->query($sql);
$cle = $result->Fields("Cle");

Avec ceci, je récupère juste la valeur de la première Clé, et donc j'aimerais savoir comment faire pour passer a la valeur suivante.

merci d'avance