Créer un requête SQL sur une table puis formater le résultat.

kopierreko Messages postés 139 Date d'inscription mercredi 12 mars 2008 Statut Membre Dernière intervention 10 juillet 2010 - 28 oct. 2008 à 19:20
kopierreko Messages postés 139 Date d'inscription mercredi 12 mars 2008 Statut Membre Dernière intervention 10 juillet 2010 - 30 oct. 2008 à 10:09
Bonjour,
Aujourd'hui mon projet a nettement avancé, mais il me manque quelques codes que je ne peux inventer.

Je vais expliquer au maximum afin d'éviter des confusions

Voici la structure de ma table:
Table message:
Pseudo - message - to

Le champ pseudo est le pseudo de celui qui a envoyé le message.
Le champ message est le message qu' il a envoyé
Le champ to est le pseudo de celui qui a envoyé le message (contient un n° ).

Il faut donc créer une requête qui aille chercher UNIQUEMENT les messages à qui ils sont envoyés.Jusque là très simple.
Chaque utilisateur à un numéro ( ID => Identifiant ).Donc, un exemple:

|  Pseudo    | message             |  to    |
|   Simneu   |   Salut Pierreko   |   1   |

Donc je dois recevoir: Simneu: Salut Pierreko

Donc il y aura plusieurs requêtes:

Sélection de l'ID:

mysql_query(mySQLConnection, 'Select * FROM user WHERE `pseudo`=FPseudo');
myRES := mysql_store_result(mySQLConnection);
( je ne sais pas l'interprêter en delphi )ID Champ ID de la ligne ou on trouve Pierreko ( en php si qqun connait> $id=$assoc['id']; )

Sélection des messages:

// FId sera mon ID

mysql_query(mySQLConnection, 'Select * FROM message WHERE `to`=FId');
myRES := mysql_store_result(mySQLConnection);

Et une fois les informations récupérées,formater le tout:
Pseudo: Message (+ saut de ligne )

Voilà j'espère que quelqu'un pourra m'aider.J'essai d'expliquer le + possible.
merci

10 réponses

cs_cantador Messages postés 4720 Date d'inscription dimanche 26 février 2006 Statut Modérateur Dernière intervention 31 juillet 2021 13
29 oct. 2008 à 15:26
bonjour,
je ne sais pas l'interprêter en delphi..
Select * FROM user WHERE `pseudo`= FPseudo');
'Select * FROM message WHERE `to`=FId');

ce n'est pas delphi, la requête dépend uniquement de ton SGBD..

procedure TForm1.Button1Click(Sender: TObject);
begin
  with Query1.SQL do
  begin
    Clear;
    Add('select * from user');
    Add('where pseudo = ''FPseudo''');
    Query1.Open;
  end;
end;

cantador
0
kopierreko Messages postés 139 Date d'inscription mercredi 12 mars 2008 Statut Membre Dernière intervention 10 juillet 2010
29 oct. 2008 à 16:50
Heu je comprend pas là ^^
Pourrais-tu être plus précis ?
D'où vient Query1.SQL ?
Merci
0
cs_cantador Messages postés 4720 Date d'inscription dimanche 26 février 2006 Statut Modérateur Dernière intervention 31 juillet 2021 13
29 oct. 2008 à 18:54
ex Query1 dans palette BDE...

cantador
0
kopierreko Messages postés 139 Date d'inscription mercredi 12 mars 2008 Statut Membre Dernière intervention 10 juillet 2010
29 oct. 2008 à 19:04
Mais si j'utilise mysql.pas et libmysql.dll ça va fonctionenr quand même ?
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_cantador Messages postés 4720 Date d'inscription dimanche 26 février 2006 Statut Modérateur Dernière intervention 31 juillet 2021 13
29 oct. 2008 à 19:19
ah ben j'ai pas tout dit, il faut mettre en place une connexion ODBC avec MySQL en installant un driver ad hoc ou bien trouver des composants spécifiques.. (mieux)
 
cantador
0
kopierreko Messages postés 139 Date d'inscription mercredi 12 mars 2008 Statut Membre Dernière intervention 10 juillet 2010
29 oct. 2008 à 19:27
Bon écoute je ne comprend plus rien du tout là :/
Est-ce que je ne pourrais pas faire qqchose de simple avec mysql_query ?

mysql_query(mySQLConnection, 'SELECT id FROM user WHERE pseudo="FPseudo"');

Puis associer le résultat, et voilà le tour est joué.
Non ?
0
cs_cantador Messages postés 4720 Date d'inscription dimanche 26 février 2006 Statut Modérateur Dernière intervention 31 juillet 2021 13
29 oct. 2008 à 19:56
et voilà le tour est joué..

la question était :
peut-on faire la même chose avec delphi ?

je t'ai répondu sauf que nativement delphi travaille avec BDE + tables paradox et pas avec MySQL.

mysql_query() c'est du PHP il me semble..

cantador
0
kopierreko Messages postés 139 Date d'inscription mercredi 12 mars 2008 Statut Membre Dernière intervention 10 juillet 2010
29 oct. 2008 à 21:49
Non, j'ai trouvé sur http://lfe.developpez.com/PasmySQL/ :
<code class="delphi_keyword1">var

mySQLConnection : PMYSQL;
myRES : PMYSQL_RES;
myROW : PMYSQL_ROW;
aStr : AnsiString;
i, j :
Cardinal
;

begin

if
mysql_query(mySQLConnection,
'
select
*
from
testbcb
'
) =
0
then
begin

myRES := mysql_store_result(mySQLConnection);
if
(myRES <>
nil
)
then
begin

for
i :=
0
to
myRES.row_count -
1
do
begin

myROW := mysql_fetch_row(myRES);
for
j :=
0
to
mysql_num_fields(myRES) -
1
do
begin

aStr := myROW^[j];
ListBox1.Items.Add(aStr);
end
;
end
;
mysql_free_result(myRES);
end
;
end
;
end
;

Peux tu m'aider à interpréter ce code afin que je puisse réaliser ce que je veux ?
</code>
0
cs_cantador Messages postés 4720 Date d'inscription dimanche 26 février 2006 Statut Modérateur Dernière intervention 31 juillet 2021 13
30 oct. 2008 à 09:36
oui alors ici on est plus du tout dans le même registre :
il s'agit là de l'utilisation d'une API.

Avec l'ajonction d'une dll (LibmySQL.dll) et d'une une unité (mySQL.pas) cela permet d'utiliser toutes une séries de vaiables et de fonctions permettant :
- la connection à la bdd
- de lister le stables
- de lire les structures des tables
- d'accéder aux données

Tu peux aussi te servir de la version embarquée de MySQL.
Attention cet article date un peu..
Je te conseille de regarder attentivement :
MySQL

Je n'utilise pas ce type de base, je préfère les bases relationnelles..

cantador
0
kopierreko Messages postés 139 Date d'inscription mercredi 12 mars 2008 Statut Membre Dernière intervention 10 juillet 2010
30 oct. 2008 à 10:09
D'accord, je suis content que tu ai compris car j'avais peur que cette technique ne soit pas la bonne.
C'est un programmeur delphi qui me l'a conseillé mais il est absent plusieurs semaine :/
Merci pour tout
0
Rejoignez-nous