STRING traitement simple

Résolu
Signaler
Messages postés
27
Date d'inscription
samedi 1 mai 2004
Statut
Membre
Dernière intervention
19 février 2006
-
Messages postés
10839
Date d'inscription
lundi 24 février 2003
Statut
Modérateur
Dernière intervention
2 mars 2010
-
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

Messages postés
10839
Date d'inscription
lundi 24 février 2003
Statut
Modérateur
Dernière intervention
2 mars 2010
25
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, '
';
}
?>
Messages postés
10839
Date d'inscription
lundi 24 février 2003
Statut
Modérateur
Dernière intervention
2 mars 2010
25
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.
Messages postés
27
Date d'inscription
samedi 1 mai 2004
Statut
Membre
Dernière intervention
19 février 2006

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.
Messages postés
27
Date d'inscription
samedi 1 mai 2004
Statut
Membre
Dernière intervention
19 février 2006

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...
Messages postés
27
Date d'inscription
samedi 1 mai 2004
Statut
Membre
Dernière intervention
19 février 2006

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();
?>
Messages postés
27
Date d'inscription
samedi 1 mai 2004
Statut
Membre
Dernière intervention
19 février 2006

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 !!!!!!!
Messages postés
10839
Date d'inscription
lundi 24 février 2003
Statut
Modérateur
Dernière intervention
2 mars 2010
25
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)
Messages postés
27
Date d'inscription
samedi 1 mai 2004
Statut
Membre
Dernière intervention
19 février 2006

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
Messages postés
27
Date d'inscription
samedi 1 mai 2004
Statut
Membre
Dernière intervention
19 février 2006

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.
Messages postés
10839
Date d'inscription
lundi 24 février 2003
Statut
Modérateur
Dernière intervention
2 mars 2010
25
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