changer la valeur d'une variable d'après l'enregistrement

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 : changer la valeur d'une variable d'après l'enregistrement

par Nico128 » 20 nov. 2005, 15:26

Ah oké donc non c'est pas ça que je veux.

Alors je créerai un champ avec dedant le nom du répéroire et je l'apelerai, ca marchera je l'avais dja fais pour autre chose, mais jvoulais savoir si il était possible de faire autrement, aparament non

merci a tous :D

par Truc » 19 nov. 2005, 19:26

le "as" permet de donner un alias a un nom de champ, si

Code : Tout sélectionner

SELECT champ as ch FROM table
tu fera appel a ch dans la suite et non plus a champ tout simplement.

Pour ton probleme je ne vois pas d'autre alternative que d'ajouter un champ avec le dossier source.

par Nico128 » 19 nov. 2005, 19:18

Pour faire en 2 requetes, si je fais comme tu a fais, j'obtiendrai au final 6 résultats...ou bien ?

Enfaite j'ai utilisé UNION pour afficher les derniers résultats que ce soit de la table "dossier" ou la table "console". ainsi si j'ai ajouté les 3 enregistrement dans la table "dossier" et 1 seul dans la table "console" ca va me prendre les 3 derniers, mais enfaite ca va jai pas de problème avec sa.

j'ai ni un problème avec "$data['etiquette']" ou marche ça

mon problème est que j'ai 2 répértoires avec dedant des images :

articles/dossiers
articles/consoles

et quand je veux afficher les résultat :
echo '<img src="articles/'.$repertoire.'/etiquettes/'.$data['etiquette'].'" width="120 "height="90" border="0">';
et ben si je mets à la place de "articles/$repertoire" je mets "articles/dossiers" ca veux dire que TOUTES les images viendront de ce répértoire

MAIS il y aura que les les renregistrement de la table "dossier" ou les images s'afficheront parce qu'elles seront dans ce répértoire

TANDIS que les enregistrement de la table "console" et ben l'image sera soit disant dans "articles/dossiers" mais en vrai elle sera dans "articles/consoles" et l'image s'afffichera pas

cest moi qui vous comprend mal ou cest vous qui me comprenez pas lol ?

donc j'aimerais juste changer la valeur d'une variable d'après le provenance du résultat,...cest tout.

et une question, que veux dire le "as" dans une requete ?

par Truc » 19 nov. 2005, 02:25

si on part sur une idée de 2 requetes tu aura également ce que tu souhaites:
$sql = "SELECT titre_dossier,date,etiquette FROM dossier WHERE actif='oui' ORDER BY date DESC LIMIT 3";
        
$sql2=SELECT titre_console,date,etiquette as etiq_cons FROM console WHERE actif='oui' ORDER BY date DESC LIMIT 3";        

récupération des résultats séparément:
//query() et fetch()
echo '<img src="articles/dossier/etiquettes/'.$data['etiquette'].'" width="120 "height="90" border="0">';

//query2() et fetch2()

echo '<img src="articles/console/etiquettes/'.$data2['etiquette'].'" width="120 "height="90" border="0">';
Sinon si tu veut ajouter un nouveau cahmp oui c'est possible la requete de la meme manière que tu l'a faite:
echo '<img src="articles/'.$data['dossier_de_la_table'].'/etiquettes/'.$data['etiquette'].'" width="120 "height="90" border="0">';
sinon autre solution (peut etre pas la meilleur), si tu est sur de toujours avoir au moins 3 images retrournées par la requete pour chacun des 2 dossier. Dans ce cas meme requete avec union (sans champ pour le dossier d'appartenance). Ensuite pour l'affichage une variable initialisée a $var="dossier" + 2 boucles for() chacune de 3 passages, apres le 3 passage $var="console" =>
echo '<img src="articles/'.$var.'/etiquettes/'.$data['etiquette'].'" width="120 "height="90" border="0">';
voila a toi de choisir et appliquer
:wink:

par Nico128 » 19 nov. 2005, 00:46

Cest pare que j'aimerais afficher les 3 derniers enregistrement de la table dossier Y COMPRIS console.

Enfaite ya une autre possibilité plus simple, je mets un champ "type" et pour les dossiers il y aura dans le temps "type" il y aura écrit "dossiers" et meme chose pour console il y aura "console"

après je récupére sa par requete.

Mais jaurai voulu savoir si cétait possible de géré du genre :

=> si le résultat vient de la table X, alors la variable V vaux...
=> si le résultat vient de la table Y, alors la variable V vaux...

par jfk » 17 nov. 2005, 00:49

fait docn 2 requetes séparées, c'est plus simple pour savoir quelle image se situe dans quel dossier .
de toute façon il n'y a pas de lien entre les requetes alors pourquoi compliquer le tout avec union

par Nico128 » 16 nov. 2005, 13:33

Euh donc qq'1 saurait comment faire ?

merci d'avance

par Nico128 » 13 nov. 2005, 01:28

Euh enfaite je crois que personne a encore compris ^^

Alors je vais essayé d'etre le plus clair possible.

J'ai une table qui s'apelle "dossier" qui dedant il y a plein d'articles divers. J'en ai une autre qui s'apelle "console" et qui a que des articles de console.

En meme temps dans mon ftp, jai un répértoire qui sapelle "dossiers" et un autre qui s'appelle "console", et dans chacun de ces dossier il y a un dossier "etiquette" pour mettre une image.

Sur ma page d'accueil j'ai mis :
$sql = "(SELECT titre_dossier,date,etiquette FROM dossier WHERE actif='oui')
        UNION
        (SELECT titre_console,date,etiquette FROM console WHERE actif='oui')
        ORDER BY date DESC LIMIT 3" ;
Ce qui me permet d'afficher les 3 derniers enregistrement, que se soit de la table "dossier" ou de la table "console".

Puis je dois afficher les résultat :
echo '<img src="articles/'.$il_y_a_que_ce_dossier_qui_doit_changer.'/etiquettes/'.$data['etiquette'].'" width="120 "height="90" border="0">';
si a la place de la variable "$il_y_a_que_ce_dossier_qui_doit_changer" je mettrais le nom du répértoire "dossier", quand il y aura un enregistrement de la table "dossier" l'image s'affichera, parce quelle sera dans dossiers/etiquettes/nomdelimage.gif

Tandis que si maintenant il vient un enregistrement de la table "console", l'image s'affichera pas parce quelle sera concidéré comme étant dans dossiers/etiquettes/nomdelimage.gif maise elle sera en vrai dans console/etiquettes/nomdelimage.gif

Voilà jespère que cest plus compréhensible.

Mais enfaite je comprend pas comment utilisé ce AS From, jai rechercher sur google mais hum...

par Truc » 12 nov. 2005, 21:44

Salut,en mettant des alias:
$sql = "(SELECT titre_dossier,date,etiquette as etiq_dos FROM dossier WHERE actif='oui')
        UNION
        (SELECT titre_console,date,etiquette as etiq_cons FROM console WHERE actif='oui')
        ORDER BY date DESC LIMIT 3" ;
ensuite:
echo '<img src="articles/'.$mavariable.'/etiquettes/'.$data['etiq_dos'].'" width="120 "height="90" border="0">';
echo '<img src="articles/'.$mavariable.'/etiquettes/'.$data['etiq_cons'].'" width="120 "height="90" border="0">';
peut etre mais sans convictions :wink:

par Nico128 » 12 nov. 2005, 15:29

Merci de m'avoir répondu, mais je comprend pas très bien...

Enfaite jai une table qui s'apelle "dossier" et qui a exactement les même champs que la tables "console".

Après je fait une requette avec UNION pour afficher les 3 derniers enregistrement, que se soit de la table "dossier" ou la table "console".

Mais après j'affiche le résultat :
echo '<img src="articles/'.$mavariable.'/etiquettes/'.$data['etiquette'].'" width="120 "height="90" border="0">'; 
J'aimerais que si l'enregistrement vient de la table "dossier", $mavariable prend la valeur dossier tandis que si l'enregistrement vient de la table "console" $mavariable prend la valeur console.

Si je fais sa, c'est parce que $etiquette est enfaite le nom d'une image, et que pour les dossiers cette images se trouve dans un autre répértoire que console.

merci d'avance

par mario » 12 nov. 2005, 14:54

c'est une très bonne question

J'ai fait ce test (ci dessous)

Code : Tout sélectionner

mysql> SELECT * FROM EXEMPLE; +--------------+-----------+--------+ | civilite | nom | prenom | +--------------+-----------+--------+ | Monsieur | Pourquier | Gaston | | Mademoiselle | Pourquier | AniÞce | +--------------+-----------+--------+ 2 rows in set (0.00 sec) mysql> SELECT civilite, nom, prenom, "table A" AS je_viens_dici FROM EXEMPLE; +--------------+-----------+--------+---------------+ | civilite | nom | prenom | je_viens_dici | +--------------+-----------+--------+---------------+ | Monsieur | Pourquier | Gaston | table A | | Mademoiselle | Pourquier | AniÞce | table A | +--------------+-----------+--------+---------------+ 2 rows in set (0.00 sec)
Il y a surement un moyen de retourner le nom exact de la table dans un champ.

changer la valeur d'une variable d'après l'enregistrement

par Nico128 » 12 nov. 2005, 14:44

Salut tout le monde ! Alors voilà, jai une requette sql :
$sql = "(SELECT titre_dossier,date,etiquette FROM dossier WHERE actif='oui')
		UNION
		(SELECT titre_console,date,etiquette FROM console WHERE actif='oui')
		ORDER BY date DESC LIMIT 3" ;
Plus bas j'ai le echo pour afficher le résultat.

Ce que j'aimerais faire, cest que si l'enregistrement viens de la table "dossier" la variable prend la valeur de "dossier" (ou qqch d'autre c'est egal) tandis que si l'enregistrement vient de la table "console" la variable prend la valeur de "console" (ou qqch d'autre cest egal)

Jespère que cest compréhensible...merci d'avance