pb de concatenation

pb de concatenation - PHP - Programmation

Marsh Posté le 21-01-2005 à 15:02:55    

boujour,  
j'ai un probleme de concatenation, je ne comprends pas pourquoi.
actuellement $mail_ref ne boucle pas, par contre si j'enleve la ligne $cad =mysql_fetch_array($req_caddy);ca marche mais j'ai besoin de $laref pour ma seconde requete.

Code :
  1. <?
  2. // requete 1
  3. $req_caddy=mysql_query("SELECT * FROM commande WHERE commande='126'" );
  4. $cad =mysql_fetch_array($req_caddy);
  5. $laref=$cad[1];
  6. // requete 2
  7. $req_articles = mysql_query("SELECT * FROM articles WHERE ref='$laref'" );
  8. $arti =mysql_fetch_array($req_articles);
  9. // affichage de la liste
  10. $mail_ref = "";
  11. while($resultat =mysql_fetch_row($req_caddy)){
  12. $mail_ref .= $arti[2]." prix de l'article :"
  13. .$resultat[2]."quantité : "
  14. .$resultat[3]."<br>";
  15. ?>


a quoi est du cette erreur ? comment doit m'y prendre ?
merci de votre aide


Message édité par attentio le 24-03-2005 à 20:44:01

---------------
L'ordinateur a de la mémoire mais aucun souvenir ...
Reply

Marsh Posté le 21-01-2005 à 15:02:55   

Reply

Marsh Posté le 21-01-2005 à 15:05:58    

echo $laref = ??

Reply

Marsh Posté le 21-01-2005 à 15:08:12    

tu n'as visiblement pas compris l'utilisation de mysql_fetch_array :
 
je te renvoie vers la doc :  
http://fr2.php.net/manual/fr/funct [...] -array.php
 
regardes en dessous aussi les exemples d'utilisation.
Et reviens poser ta question, si tu as toujours un problème :)


---------------
from here and there -- \o__________________________________ -- la révolution de la terre, en silence
Reply

Marsh Posté le 21-01-2005 à 15:11:26    

meme pas vu, il le met en row :'(

Reply

Marsh Posté le 21-01-2005 à 15:30:17    

j'ai mis
while($resultat =mysql_fetch_array($req_caddy)
 ... et ca marche pas mieux : j'ai qu'un seul enregistrement qui s'affiche


Message édité par attentio le 21-01-2005 à 15:30:44
Reply

Marsh Posté le 21-01-2005 à 15:36:05    

mysql_fetch_array
$var['champ']
 
et pas
 
$var[offset]

Reply

Marsh Posté le 21-01-2005 à 15:42:26    

...je peux pas ! C sur une page pour un paiement securisé ... et je ne sais pour quelle raison, il n'accepte pas les champs ... je suis obligé de jongler avec les 'offsets'!

Reply

Marsh Posté le 21-01-2005 à 15:43:38    

donne nous l'url qu'on aille pas y perde de l'argent parce que vu comme tu codes...


---------------
Nos estans firs di nosse pitite patreye...
Reply

Marsh Posté le 21-01-2005 à 15:43:56    

dans ces cas là .. mysql_fetch_array($result, MYSQL_NUM)


---------------
from here and there -- \o__________________________________ -- la révolution de la terre, en silence
Reply

Marsh Posté le 21-01-2005 à 15:59:18    

c'est pas mieux avec le MYSQL_NUM ! toujours un seul enregistrement a l'affichage
 

Code :
  1. <? php
  2. // requete 1  
  3. $req_caddy=mysql_query("SELECT * FROM commande WHERE commande='126'" );
  4. $cad =mysql_fetch_array($req_caddy);
  5. $laref=$cad[1];
  6. // requete 2  
  7. $req_articles = mysql_query("SELECT * FROM articles WHERE ref='$laref'" );
  8. $arti =mysql_fetch_array($req_articles);
  9. // affichage de la liste  
  10. $mail_ref = "";
  11. while($resultat =mysql_fetch_array($req_caddy,MYSQL_NUM )){
  12. $mail_ref .= $arti[2]." prix de l'article :"
  13. .$resultat[2]."quantité : "
  14. .$resultat[3]."<br>";
  15. ?>


je rapelle que C a cause des lignes
$cad =mysql_fetch_array($req_caddy);
$laref=$cad[1];
que ca ne marche pas !
 
merci de votre aide

Reply

Marsh Posté le 21-01-2005 à 15:59:18   

Reply

Marsh Posté le 21-01-2005 à 16:06:02    

au fait qu'est-ce que tu essayes de faire ??


---------------
Nos estans firs di nosse pitite patreye...
Reply

Marsh Posté le 21-01-2005 à 16:06:28    

déjà :

Code :
  1. $cad =mysql_fetch_array($req_caddy,MYSQL_NUM);
  2. $laref=$cad[1];


 
:o


---------------
from here and there -- \o__________________________________ -- la révolution de la terre, en silence
Reply

Marsh Posté le 21-01-2005 à 16:11:01    

Citation :

c'est pas mieux avec le MYSQL_NUM ! toujours un seul enregistrement a l'affichage


 
si tu veux que pour chacune des réference, tu recupère les infos correspodante dans la table article, il faut inclure le ta 2ème requete dans le while du premier mysql_fetch_array...
 

Code :
  1. // requete 1  
  2. $req_caddy=mysql_query("SELECT * FROM commande WHERE commande='126'" ); 
  3. while ($cad =mysql_fetch_array($req_caddy)) //boucle qui parcours les enregistrements
  4.   $laref=$cad[1];
  5.   // requete 2   
  6.   $req_articles = mysql_query("SELECT * FROM articles WHERE ref='$laref'" );
  7.   $arti=mysql_fetch_array($req_articles);
  8.    // ... etc ...
  9.    // ton affichage
  10. } //fin de la boucle


 
PS: à moins que tu es vraiment besoin de tout (ce dont je doute), optimise tes SELECT * (notemment la deuxieme requete où il me semble que tu ne récupère que le prix de l'article)


---------------
- Xav - ...There are no crimes when there are no laws... -- Xav's World
Reply

Marsh Posté le 21-01-2005 à 16:29:09    

je voudrais tout simplement afficher un pauvre petit tableau dans lequel il y a la facture d'une commande.
ex :
table commande
1 | art1 | 15€ |126
2  | art2 | 20€ |126
 
table articles
1|nom_de_mon article_1 |
2|nom_de_mon article_1 |
 
donc dans un premier tps je veux qu'il affiche toutes les commandes avec 126
puis a la place du 1 et 2 de ces enregistrements il affiche le nom de l'article  
seules contraintes :
-l'utilisation de $tableau[offset]
-l'utilisation de $mail_ref .= ...
 
merci infiniment de votre aide
 

Reply

Marsh Posté le 21-01-2005 à 16:35:22    

et ben met un mysql_fetch_row !!

Reply

Marsh Posté le 21-01-2005 à 16:44:12    

meme en mettant tout dans mon while, il m'affiche toujours qu'un seul enregistrement  :??:

Reply

Marsh Posté le 21-01-2005 à 16:45:18    

et t'as mis la deuxieme query dans un while aussi :??:

Reply

Marsh Posté le 21-01-2005 à 16:51:50    

ben ...vi  :ange:

Reply

Marsh Posté le 21-01-2005 à 16:54:08    

chacal_one333 a écrit :

et ben met un mysql_fetch_row !!


ou meme un mysql_fetch_object, et la plus de pb de tableau, c'est des objets que tu manipule ;)


---------------
- Xav - ...There are no crimes when there are no laws... -- Xav's World
Reply

Marsh Posté le 21-01-2005 à 16:55:17    

attentio a écrit :

meme en mettant tout dans mon while, il m'affiche toujours qu'un seul enregistrement  :??:


rassure moi, la commande que tu utilise pour tester, elle contient plus d'un article au moins ???


---------------
- Xav - ...There are no crimes when there are no laws... -- Xav's World
Reply

Marsh Posté le 21-01-2005 à 17:12:30    

oui ... oui  
si j'enleve  
$cad =mysql_fetch_array($req_caddy);  
$laref=$cad[1];
tout marche sauf que je ne pas afficher le nom de l'article correspondant (dans la table articles

Reply

Marsh Posté le 21-01-2005 à 17:13:16    

attentio a écrit :

oui ... oui  
si j'enleve  
$cad =mysql_fetch_array($req_caddy);  
$laref=$cad[1];
tout marche sauf que je ne pas afficher le nom de l'article correspondant (dans la table articles


 
putain maisssssssssss http://forum.hardware.fr/forum2.ph [...] 12#t958664
 
 :fou:  :fou:  :fou:  


---------------
from here and there -- \o__________________________________ -- la révolution de la terre, en silence
Reply

Marsh Posté le 21-01-2005 à 17:26:31    

houlala,  t'ennerve pas mon cheri  :(  
meme en mettant MYSQL_NUM sur $cad ... ca marche pas !
auuu seccouuurrrsss  :pt1cable:

Reply

Marsh Posté le 21-01-2005 à 18:01:00    

si ta clé primaire, c'est "commande" çà risque pas de retourner plus que 1 enregistrement :
$req_caddy=mysql_query("SELECT * FROM commande WHERE commande='126'" );  

Reply

Marsh Posté le 21-01-2005 à 18:04:37    

lolofora a écrit :

si ta clé primaire, c'est "commande" çà risque pas de retourner plus que 1 enregistrement :
$req_caddy=mysql_query("SELECT * FROM commande WHERE commande='126'" );


 
meme si c'est pas la clé primaire, mais qu'il n'y qu'une seule commande "126", c'est kler qu'il y aura qu'un seul enregistrement !!!!!


---------------
- Xav - ...There are no crimes when there are no laws... -- Xav's World
Reply

Marsh Posté le 21-01-2005 à 18:23:02    

non ... commande n'est pas ma clé primaire
 

Code :
  1. TABLE `commande` (
  2.   `commande_id` int(10) unsigned NOT NULL auto_increment,
  3.   `ref` char(13) NOT NULL default '',
  4.   `prix_produit` float(4,2) NOT NULL default '0.00',
  5.   `quantite` tinyint(3) unsigned NOT NULL default '0',
  6.   `commande` int(10) default NULL,
  7.   PRIMARY KEY  (`commande_id`,`ref`)
  8. ) TYPE=MyISAM AUTO_INCREMENT=66 ;


 

Code :
  1. CREATE TABLE `articles` (
  2.   `ref` int(10) NOT NULL auto_increment,
  3.   `designer` varchar(30) default NULL,
  4.   `nom_article` varchar(60) default NULL,
  5.   PRIMARY KEY  (`ref`)
  6. ) TYPE=MyISAM AUTO_INCREMENT=54


   

Reply

Marsh Posté le 21-01-2005 à 18:41:08    

il est lié a quoi commande.commande ? a articles.ref ??
 
si, oui faut vraiment que tu revois tes bases en sgbd (sans jeux de mots)


---------------
Nos estans firs di nosse pitite patreye...
Reply

Marsh Posté le 21-01-2005 à 19:26:52    

non ... commande.ref=articles.ref

Reply

Marsh Posté le 21-01-2005 à 19:29:39    

bha c'est pareil : une commande est associée a un article !
donc on peut pas commander plus d'un article :/


---------------
Nos estans firs di nosse pitite patreye...
Reply

Marsh Posté le 21-01-2005 à 19:54:49    

ben non ... ma table table commande de contient pas les commandes contrairement a ce qu'on pourait penser mais elle ser justement a mettre en relation 2 tables dont articles mais aussi commande_client qui elle a un identifiant unique (216) qu'on retrouve dans le champ commande
ex :
****************************
table commande_client
****************************
id : 216
nom : dupont
montant : 35.00 €
****************************
table commande
****************************
commande_id :1
ref : 34
prix_produit 10.00  
quantite :2
commande : 216
-----------------------------
commande_id :2
ref : 47
prix_produit 15.00  
quantite :1
commande : 216
****************************
table articles
****************************
ref : 34
nom_article : mon_article34
prix : 10.00
----------------------------
ref : 47
nom_article : mon_article47
prix : 15 .00
*****************************
 
j'espere etre clair :ange:  
merci

Reply

Marsh Posté le 21-01-2005 à 19:59:47    

bon ok !!


---------------
Nos estans firs di nosse pitite patreye...
Reply

Marsh Posté le 21-01-2005 à 21:39:42    

le plus enervant c'est que j'ai deja reussi a afficher tout cela dans ma zone admin mais la j'ai besoin d'utiliser le while parce que ces donnees doivent etre envoyées dans un mail.
voici le code de cette page

Code :
  1. <?
  2. //affiche_commandes_admin.php
  3. //requetes
  4. $req_articles = mysql_query("SELECT * FROM articles,commande WHERE articles.ref=commande.ref" );
  5. $req_caddy=mysql_query("SELECT * FROM commande WHERE commande='$commande_id'" );
  6. $resultatarticles=mysql_fetch_array($req_articles);
  7. //boucle
  8. for($n=0; $n<mysql_num_rows($req_caddy); $n++ ){
  9. $resultatcaddy =mysql_fetch_array($req_caddy);
  10. echo $resultatarticles['nom_article'];
  11. echo $resultatcaddy['quantite'].'<br>';
  12. }
  13. ?>


voilou
 
merci de votre aide


Message édité par attentio le 21-01-2005 à 21:40:43
Reply

Marsh Posté le 22-01-2005 à 00:08:24    

attentio a écrit :

boujour,  
j'ai un probleme de concatenation, je ne comprends pas pourquoi.
actuellement $mail_ref ne boucle pas, par contre si j'enleve la ligne $cad =mysql_fetch_array($req_caddy);ca marche mais j'ai besoin de $laref pour ma seconde requete.

Code :
  1. <?
  2. // requete 1
  3. $req_caddy=mysql_query("SELECT * FROM commande WHERE commande='126'" );
  4. $cad =mysql_fetch_array($req_caddy);
  5. $laref=$cad[1];
  6. // requete 2
  7. $req_articles = mysql_query("SELECT * FROM articles WHERE ref='$laref'" );
  8. $arti =mysql_fetch_array($req_articles);
  9. // affichage de la liste
  10. $mail_ref = "";
  11. while($resultat =mysql_fetch_row($req_caddy)){
  12. $mail_ref .= $arti[2]." prix de l'article :"
  13. .$resultat[2]."quantité : "
  14. .$resultat[3]."<br>";
  15. ?>


a quoi est du cette erreur ? comment doit m'y prendre ?
merci de votre aide


 
 
 
Un peu d'analyse en français :
1- Tu vas chercher les articles du caddie 126
2- tu vas chercher la référence du premier article
3- tu vas chercher les info de l'article dont tu as la référence
4- tu boucles tant que tu as des articles dans le caddie pour  
    a- afficher le nom du premier article du caddie
    b- afficher le prix
    c- afficher la quantité
5- fin de boucle
 
Cherche l'erreur ...
 
Pour faire plus simple, tu peux tout avoir en une seule requête.
 
A+

Reply

Marsh Posté le 22-01-2005 à 00:15:25    

aide moi stp !!! j'ai beau tourner le probleme dans tous les sens depuis le debut de l'apres midi et je ne trouve pas !
merci infiniment

Reply

Marsh Posté le 22-01-2005 à 00:17:59    

Tu ne vas chercher les infos que du 1er article sans jamais aller chercher les autres !

Reply

Marsh Posté le 22-01-2005 à 00:28:29    

c'est a dre ?

Reply

Marsh Posté le 22-01-2005 à 01:04:39    

comment dois m'y prendre?

Reply

Marsh Posté le 22-01-2005 à 01:05:38    

en utilisant ton cerveau :o


---------------
Nos estans firs di nosse pitite patreye...
Reply

Marsh Posté le 22-01-2005 à 01:07:39    

hahaha

Reply

Marsh Posté le 22-01-2005 à 01:11:08    

je comprends bien que je recupere uniquement le premiere article ...mais comment faire ? expliquez moi  :(

Reply

Marsh Posté le    

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed