variable

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : variable

par sadeq » 11 juin 2007, 17:07

Tu utilises un objet $db pour gérer tes requêtes tu es sensé connaitre mieux que nous les différentes méthodes à utiliser sinon documente toi sur la classe que tu utilise.
Pour trouver ce que tu cherche à faire essaye de trouver la méthode de l'objet $db qui lit le résultat produit par $result = $db->query($sql);
ça peut être un truc comme $db->fetch_array($result)

Et donc tu dois écrire un truc comme ça:
While ( $ligne = $db->fetch_array($result) ){
   //tu as lu ici une ligne
   echo $ligne["cle"]; //affiche le champ clé

}

par Z-obaze » 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

par iclo » 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

par Z-obaze » 05 juin 2007, 10:46

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

par Z-obaze » 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

par Ryle » 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...

par Z-obaze » 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 !!!!

par Ryle » 04 juin 2007, 15:22

euh.. ben... pas mieux :)

et un print_r($result) ?

par Z-obaze » 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"

par Ryle » 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à :))

par Z-obaze » 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

par Z-obaze » 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

par Ryle » 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 ?

par Z-obaze » 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

par Ryle » 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 :)