STRING traitement simple

Résolu
batmanu Messages postés 27 Date d'inscription samedi 1 mai 2004 Statut Membre Dernière intervention 19 février 2006 - 8 févr. 2006 à 12:00
malalam Messages postés 10839 Date d'inscription lundi 24 février 2003 Statut Membre Dernière intervention 2 mars 2010 - 8 févr. 2006 à 13:48
Bonjour,
j'ai un problème de débutant:
j'ai deux liste
$liste = &17&8&5&45.... (longueur non définie)
$nombre = &1&1&2&3 ...

et je voudrais présenter les résultats comme:
$var1 = 1 fois n°17
$var2 = 1 fois n°8
$var3 = 2 fois n°5
$var4 = 3 fois n°45
et ainsi de suite

j'ai essayé avec explode, mais j'ai un peu de mal et j'ai un problème avec la longueur variable des strings...

merci de me sauver la vie,

10 réponses

malalam Messages postés 10839 Date d'inscription lundi 24 février 2003 Statut Membre Dernière intervention 2 mars 2010 25
8 févr. 2006 à 12:41
Hello,

on est bien d'accord que $liste et $nombre ont le même nombre de...chiffres ?
Donc :

<?php
$liste = '&17&8&5&45';
$nombre = '&1&1&2&3';


$aListe = explode ('&', $liste);
$aNombre = explode ('&', $nombre);


foreach ($aListe as $clef => $val) {
if (!empty ($val)) {
$aVar[] = $val * $aNombre[$clef];
}
}


foreach ($aVar as $clef => $val) {
echo '$aVar[',$clef,'] = ', $val, '
';
}
?>
3
malalam Messages postés 10839 Date d'inscription lundi 24 février 2003 Statut Membre Dernière intervention 2 mars 2010 25
8 févr. 2006 à 13:12
Oh ben en passant à la commande suivante, tu fais $aVar = array (); et basta.

Fais voir ton code, je visualise mal ce que tu veux faire en fait.
3
batmanu Messages postés 27 Date d'inscription samedi 1 mai 2004 Statut Membre Dernière intervention 19 février 2006
8 févr. 2006 à 13:06
Tout d'abord, merci pour ta réponse :)

pour aller voir le résultat: http://eprot.club.fr/rhodbase/affichecommandes.php
j'affiche les string de départ (liste et nombre), et les deux strings ont le même nombre de nombres (1 ou plusieurs chiffres) et le même nombre de séparatuers.

il y a un petit problème cependant, la liste ne se réinitialise pas quand on passe à la commande suivante et concatène certains chiffres.
Le séparateur & n'est pas toujours considéré comme tel.
0
batmanu Messages postés 27 Date d'inscription samedi 1 mai 2004 Statut Membre Dernière intervention 19 février 2006
8 févr. 2006 à 13:09
je n'avais pas précisé, je veux présenter des commandes saisies ailleurs comme tel
1 fois l'article n°5
3 fois l'article n°45...
0

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

Posez votre question
batmanu Messages postés 27 Date d'inscription samedi 1 mai 2004 Statut Membre Dernière intervention 19 février 2006
8 févr. 2006 à 13:15
voici:

<?php
include('fichier de connection');
//on ramène et on présente les infos de commande
$req = "SELECT * FROM commande ORDER BY numcom;";
$result = mysql_query($req, $link) or die(mysql_error());
echo '';
while($enregistrement = mysql_fetch_array($result)) {
$numcom = $enregistrement['numcom'];
$numclient = $enregistrement['numclient'];
$listearticle = $enregistrement['listearticle'];
$nbarticle = $enregistrement['nbarticle'];
$totalcom = $enregistrement['totalcom'];
$datecom = $enregistrement['datecom'];
$heurecom = $enregistrement['heurecom'];
$payee = $enregistrement['payee'];
$expediee = $enregistrement['expediee'];
if ($payee == 0) {//non payée
$payee = ' non réglée ';
}
else {
$payee = 'réglée';
}
if ($expediee = = 0) {//non expédiée
$expediee = ' non expédiée ';
}
else {
$expediee = 'expédiée';
}
if ($numclient = = 0) {//la commande n'a pas été validée par le client
$numclient = ' ATTENTION COMMANDE NON VALIDEE / A DETRUIRE ';
}

//on récupère les infos client
$req2 = \"SELECT * FROM client WHERE numclient='$numclient';\";
$result2 = mysql_query($req2, $link) or die(mysql_error());
while($enregistrement2 = mysql_fetch_array($result2)) {
$sexeclient = $enregistrement2['sexeclient'];
$nomclient = $enregistrement2['nomclient'];
$prenomclient = $enregistrement2['prenomclient'];
$adresseclient = $enregistrement2['adresseclient'];
$villeclient = $enregistrement2['villeclient'];
$cpclient = $enregistrement2['cpclient'];
$paysclient = $enregistrement2['paysclient'];
$telclient = $enregistrement2['telclient'];
$mailclient = $enregistrement2['mailclient'];
if ($telclient == '') {
$telclient = 'inconnu';
}
$infoclient = $sexeclient . ' ' . $prenomclient . ' ' . $nomclient . ' / ' . $adresseclient . ', ' . $cpclient . ', ' . $villeclient . ' / ' . $paysclient . ' / tel: ' . $telclient . ' / e-mail: ' . $mailclient;
}
//affichage
echo '----
';
//traitement de la liste ($listearticle) et du nombre ($nbarticle) des articles
//--------------------------------------------------------------------------------------------------EXPLODE ? / PARSE ?
$aListe = explode ('&', $listearticle);
$aNombre = explode ('&', $nbarticle);

foreach ($aListe as $clef => $val) {
if (!empty ($val)) {
$aVar[] = $val * $aNombre[$clef];
}
}

foreach ($aVar as $clef => $val) {
echo '$aVar[',$clef,'] = ', $val, '
';
}
//-----------------------------------------------------------------------------------------------------------------
echo '
commande n°' . $numcom . '

client n°' . $numclient . ' (' . $infoclient . ')

montant total: ' . $totalcom . '? (' . $payee . ' / ' . $expediee . ')
le ' . $datecom . ' à ' . $heurecom . '

contenu:
liste: ' . $listearticle . '
nbre: ' . $nbarticle . ', ----
<hr size="1" color="#000000">, ';
}
echo '

[javascript:history.go(-1); retour]';


mysql_close();
?>
0
batmanu Messages postés 27 Date d'inscription samedi 1 mai 2004 Statut Membre Dernière intervention 19 février 2006
8 févr. 2006 à 13:22
Ok, ça marche !!!
je rectifie la présentation (car je ne veux pas faire le calcul).
MERCI !!!!!!

dis moi si tu trouves des abhération dans le code.

C'est vraiment trop chouette !!!!!!!
0
malalam Messages postés 10839 Date d'inscription lundi 24 février 2003 Statut Membre Dernière intervention 2 mars 2010 25
8 févr. 2006 à 13:22
Ok, et reéxplique exactement l'affichage que tu veux ? (c'est compliqué ton bin's, je trouve...pourquoi tu fais 2 requêtes...?? En une seule, tu sors tes infos)
0
batmanu Messages postés 27 Date d'inscription samedi 1 mai 2004 Statut Membre Dernière intervention 19 février 2006
8 févr. 2006 à 13:24
je fais une requète pour la commande et je fais la deuxième dans le while pour afficher les infos client en relation avec la commande
0
batmanu Messages postés 27 Date d'inscription samedi 1 mai 2004 Statut Membre Dernière intervention 19 février 2006
8 févr. 2006 à 13:31
Ca y est presque, ce sera prêt dans 10min environ.
Merci encore, trop sympa.
J'ai vu tes codes un peu partout, je suis honoré d'avoir pu converser avec un maitre.
0
malalam Messages postés 10839 Date d'inscription lundi 24 février 2003 Statut Membre Dernière intervention 2 mars 2010 25
8 févr. 2006 à 13:48
Un exemple :

table COMMANDES
cmd_id
user_id
cmd_ref

table USERS

user_id
user_nom

SELECT cmd.cmd_ref, user.user_nom FROM users user, commandes cmd WHERE cmd.user_id = user.user_id
0