Page 1 sur 2
variable
Posté : 04 juin 2007, 13:42
par Z-obaze
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
Posté : 04 juin 2007, 13:50
par Ryle
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

Posté : 04 juin 2007, 14:12
par Z-obaze
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
Posté : 04 juin 2007, 14:26
par Ryle
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 ?
Posté : 04 juin 2007, 14:33
par Z-obaze
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
Posté : 04 juin 2007, 14:42
par Z-obaze
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
Posté : 04 juin 2007, 15:13
par Ryle
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à

)
Posté : 04 juin 2007, 15:17
par Z-obaze
pour le print_r($cle) ça m'affiche
Array ( [0] => Cle )
et donc je ne comprends pas pourkoi il ne prends pas le "1"
Posté : 04 juin 2007, 15:22
par Ryle
euh.. ben... pas mieux
et un print_r($result) ?
Posté : 04 juin 2007, 15:26
par Z-obaze
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 !!!!
Posté : 04 juin 2007, 15:38
par Ryle
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...
Posté : 04 juin 2007, 16:03
par Z-obaze
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
Posté : 05 juin 2007, 10:46
par Z-obaze
personne à une solution a mon problème???
Posté : 05 juin 2007, 19:34
par iclo
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
Posté : 11 juin 2007, 16:50
par Z-obaze
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