PHP|Débutant :: Forums

Advertisement

Besoin d'aide ? N'hésitez pas, mais respectez les règles

Vous n'êtes pas identifié(e).

#2 Re : Forum Général PHP » Formulaire dynamique et récupération de valeur » 11-02-2010 17:28:50

Hum, ca va mieux si je fais:

foreach($_POST['prod'] as $k => $prod) {
            echo $_POST['prod'][$k];
        }

#3 Forum Général PHP » Formulaire dynamique et récupération de valeur » 11-02-2010 17:28:50

yann18
Réponses : 4

Bonjour,

j'ai un formulaire avec entrées de ce type:

<input name="prod[0]" type="text" id="prod[0]" value="Fondant blanc" size="60" readonly>
<input name="idRecord[0]" type="hidden" id="idRecord[0]" value="1"></td>
<td><input name="qt[0]" type="text" id="qt[0]" value="15" size="5"
...
<input name="prod[1]" type="text" id="prod[1]" value="Sucre semoule" size="60" readonly>
<input name="idRecord[1]" type="hidden" id="idRecord[1]" value="2">

Je dois récupérer l'intégralité de ces données en faisant un tri sur 'prod'. Pour cela, j'effectue une boucle:

foreach ($_POST as $key => $value) {
            echo $_POST['prod'][$key];
}

Mais je n'y arrive pas. J'accède bien aux tableaux 'prod', 'idRecord'..., mais pas à leur contenu. Qu'est ce qui me manque pour lire 'Fondant blanc', 'Sucre simple' etc.
merci,

#5 Forum Général PHP » Compteur de page » 20-10-2009 15:00:11

yann18
Réponses : 2

Bonjour,

Je dois mettre en place un compteur de page selon si l'utilisateur va à la page suivante ou précédente. Il se rend sur la page suivante, cela incrémente le compteur. Si c'est la page précédente, désincrémentation du compteur.
Sur les liens ciblant les pages, j'ai rajouté une variable "repère":

<a href="...'&whatPage=moins">Page précédente</a>
<a href="...'&whatPage=plus">Page Suivante</a>

Ensuite, j'initialise une variable compteur:

$numeroPage=1;
//traitement de la var transmise par page
$whatPage= isset($_GET['whatPage']) ? $_GET['whatPage'] : null;
//Identification du contenu de la var $whatPage et selon, incrémentation ou désincrémentation de $numeroPage
switch($whatPage){
 case 'plus':
$numeroPage = $numeroPage + 1;
 break;
 case 'moins':
$numeroPage = $numeroPage - 1;
 break;
 default:
$numeroPage =1;
}

mais ça ne marche pas, pourquoi ?
merci,

#6 Re : Forum Général PHP » Traitement de données » 14-10-2009 13:19:30

Bon, j'ai progressé un peu. En fait, c'est la rupture sur le sections qui m*. La donnée section sur le 2ème laboratoire est bien présente dans la requête. J'ai affiché les informations sans les ruptures et la donnée souhaitée est bien montrée. Maintenant, quelqu'un peut-il me dire comment puis-je palier à cela ?
merci,

#7 Forum Général PHP » Traitement de données » 14-10-2009 13:19:30

yann18
Réponses : 1

Bonjour,
Je travaille à l'élaboration d'un bon de commande. J'avais déjà posté à ce sujet. Toutes les données se montrent correctement, sauf la section du 2ème laboratoire (qui lui s'affiche) et quelque soit le fournisseur. Une bizarrie que je ne m'explique pas... Je précise que chaque laboratoire a une ou plusieurs sections. Voici le code rédigé jusqu'à présent avec mise en page des données:

$select = 'SELECT f.raisonsociale, a.designation, a.quantite, a.section, a.idUser, u.labo, p.conditionnement FROM admincom AS a INNER JOIN produits AS p ON a.designation = p.designation INNER JOIN users AS u ON a.idUser = u.idUser INNER JOIN fournisseurs AS f ON p.idFrs = f.idFrs WHERE f.idFrs = "'.$frs.'" ORDER BY u.labo, a.section';
  $requete2 = mysql_query($select) or die('Erreur SQL! Nous avons un problème avec la base de données. Il sera résolu dans peu de temps <br>'.$select.'<br>'.mysql_error());
//affichage des commandes pour les pages de compta, intendance, reception du bon de commande
  if(mysql_num_rows($requete2)>0){//si la requête comporte des enregistrements
    while($data = mysql_fetch_array($requete2)){//On affiche les résultats
      //ruptures
        if($data['labo'] != $labo){ // Si on a changé de labo, on l'affiche
          $labo = $data['labo'];
          echo '<tr class="labo"><td>'.$labo.'</td><td > </td>...</tr>';
        }
        if($data['section'] != $section){ // Si on a changé de section, on l'affiche
        //echo $data['section'][1];
          $section = $data['section'];
          echo '<tr class="section"><td>'.$section.'</td><td > </td>...</tr>';
        }
        echo '<tr><td> </td><td>'.$data['designation'].'</td><td>'.$data['quantite'].'</td><td>'.$data['conditionnement'].'</td>';
      ...
    }// fin de la boucle
  }// fin du if
  else{
    echo '<p class="avertissement">Pas de commandes enregistrées pour ce fournisseur.</p>';
  }
}// fin du switch

Si je tape la requête dans PHPMyAdmin, cette section en question est bien présente à l'écran. D'où cela peut venir ?
merci,

#9 Re : MySQL, PostgreSQL, etc... » Ecriture de requête... » 09-10-2009 15:03:51

Bonjour,

je pense avoir progressé en écrivant ceci:

$select = 'SELECT f.raisonsociale, p.designation, a.quantite, a.section, a.idUser, u.labo, p.conditionnement
 FROM produits AS p INNER JOIN admincom AS a ON a.designation = p.designation INNER JOIN users AS u ON a.idUser = u.idUser INNER JOIN fournisseurs AS f ON p.idFrs = f.idFrs WHERE f.idFrs = 2 ORDER BY u.labo, a.section';

J'obtiens bien toutes les données voulues, mais pas dans le bon ordre à l'affichage. Comme écrit dans le premier post, je dois obligatoirement lire les informations dans cet ordre:
le labo
la section
Tous les produits commandés pour cette section
--------
la section
produits
--------
labo
etc.
pour l'affichage des données, j'ai rédigé ceci:

//Affichage du fournisseur
$data = mysql_fetch_array($requete);
echo $data['raisonsociale'].'<br><br>';
while($data1 = mysql_fetch_array($requete)){
 echo $data1['labo'].'<br>';
 if(!empty($data1['section'])){
    echo strtoupper($data1['section']).'<br>';
 }
 echo $data1['designation'].' '.$data1['quantite'].' '.$data1['conditionnement'].'<br>';
}

et le serveur de répondre:

Boulangerie Treilles
CAP
Lardons fum 3.0 kg
Boulangerie Treilles
CAP
Roquefort 2.0 kg
Cuisine Langin
CAP
Cr 6.0 kilo(s)
Cuisine Langin
CAP
Beurre plaque 250 gr 20.0 pi
Cuisine Langin
CAP
Cr 6.0 litre(s)

Pour le labo Cuisine/ section CAP, il faudrait que je puisse ranger en dessous de la section CAP Cr 6.0 kilo(s), Beurre plaque 250 gr 20.0 pi...
Et là, je sèche...
merci,

#10 MySQL, PostgreSQL, etc... » Ecriture de requête... » 09-10-2009 15:03:51

yann18
Réponses : 5

Bonjour,

Je rencontre des difficultés dans l'écriture d'une requête. Il s'agit de récupérer (en autres) des produits pour un bon de commande. Pour ce faire, j'ai trois composants essentiels à prendre en compte :

les fournisseurs
les labo(ratoire)s
Chaque labo a ses sections (CAP, BP, BAC...)

La table admincom regroupe la totalité des commandes créées. Je dois pouvoir récupérer tous les produits commandé pour chaque fournisseur. Puis indiquer par la suite quel labo a enregistré tels produits pour quelle section. Cela donnerait à l'affichage:
le fournisseur
le labo
la section
la désignation du produit - la quantité - le conditionnement
etc.
la section
etc.
labo
etc.
Pour l'instant, j'ai écris ceci:

$select = 'SELECT produits.designation, quantite, section, admincom.idUser, labo, produits.conditionnement FROM produits INNER JOIN admincom ON admincom.designation = produits.designation INNER JOIN users ON admincom.idUser = users.idUser INNER JOIN fournisseurs ON produits.idFrs = fournisseurs.idFrs WHERE fournisseurs.idFrs = 2 GROUP BY produits.designation, produits.conditionnement';

je pense que mes jointures sont bonnes, mais je bloque sur la fin de la requête... Je fais donc appel à vos lumières. La structure de la base:

-- Base de données: `alimentaires`
-- Structure de la table `admincom`
--
CREATE TABLE IF NOT EXISTS `admincom` (
  `idCom` int(4) NOT NULL AUTO_INCREMENT,
  `designation` text COLLATE utf8_unicode_ci NOT NULL,
  `quantite` decimal(10,1) NOT NULL,
  `section` text COLLATE utf8_unicode_ci NOT NULL,
  `idUser` int(2) NOT NULL,
  PRIMARY KEY (`idCom`)
) ENGINE=MyISAM  DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci AUTO_INCREMENT=133 ;

-- --------------------------------------------------------

-- Structure de la table `categories`
--

CREATE TABLE IF NOT EXISTS `categories` (
  `idCat` int(2) NOT NULL AUTO_INCREMENT,
  `categorie` text COLLATE utf8_unicode_ci NOT NULL,
  PRIMARY KEY (`idCat`)
) ENGINE=MyISAM  DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci AUTO_INCREMENT=9 ;

-- --------------------------------------------------------
--
-- Structure de la table `conditionnement`
--

CREATE TABLE IF NOT EXISTS `conditionnement` (
  `idCond` int(2) NOT NULL AUTO_INCREMENT,
  `conditionnement` text COLLATE utf8_unicode_ci NOT NULL,
  PRIMARY KEY (`idCond`)
) ENGINE=MyISAM  DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci AUTO_INCREMENT=29 ;

-- --------------------------------------------------------

-- Structure de la table `fournisseurs`
--

CREATE TABLE IF NOT EXISTS `fournisseurs` (
  `idFrs` int(2) NOT NULL AUTO_INCREMENT,
  `raisonSociale` text COLLATE utf8_unicode_ci NOT NULL,
  `adresse1` text COLLATE utf8_unicode_ci NOT NULL,
  ...
  PRIMARY KEY (`idFrs`)
) ENGINE=MyISAM  DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci AUTO_INCREMENT=10 ;

-- --------------------------------------------------------

-- Structure de la table `produits`
--

CREATE TABLE IF NOT EXISTS `produits` (
  `idPdts` int(4) NOT NULL AUTO_INCREMENT,
  `designation` text COLLATE utf8_unicode_ci NOT NULL,
  `conditionnement` text COLLATE utf8_unicode_ci NOT NULL,
  `idFrs` int(2) NOT NULL,
  `idCat` int(2) NOT NULL,
  PRIMARY KEY (`idPdts`)
) ENGINE=MyISAM  DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci AUTO_INCREMENT=441 ;

-- --------------------------------------------------------

-- Structure de la table `sections`
--

CREATE TABLE IF NOT EXISTS `sections` (
  `idSect` int(2) NOT NULL AUTO_INCREMENT,
  `section` text COLLATE utf8_unicode_ci NOT NULL,
  PRIMARY KEY (`idSect`)
) ENGINE=MyISAM  DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci AUTO_INCREMENT=7 ;

-- --------------------------------------------------------

-- Structure de la table `users`
--

CREATE TABLE IF NOT EXISTS `users` (
  `idUser` int(2) NOT NULL AUTO_INCREMENT,
  `nom` text COLLATE utf8_unicode_ci NOT NULL,
  `mdp` text COLLATE utf8_unicode_ci NOT NULL,
  `labo` text COLLATE utf8_unicode_ci NOT NULL,
  PRIMARY KEY (`idUser`)
) ENGINE=MyISAM  DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci AUTO_INCREMENT=15 ;

merci,

Pied de page des forums

Propulsé par FluxBB