afficher résultats balise foreach dans tableau html

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : afficher résultats balise foreach dans tableau html

Re: afficher résultats balise foreach dans tableau html

par Invité » 13 juin 2011, 17:16

je débute en php, donc ton aide et tes compléments d'informations m'ont été forts utiles. je te remercie bien. à+

Re: afficher résultats balise foreach dans tableau html

par devlop78 » 12 juin 2011, 02:25

Le coup du modulo est régi par les lois mathématiques et, hormis le fait que tout développeur un minimum expérimenté connaisse cette pratique, on ne l'invente généralement pas. Qui irait imaginer aller chercher le reste d'une division pour faire ce genre de choses ?

Je poste surtout pour dire que ce problème, tu aurais pu le résoudre toi-même. Ce n'est pas une critique, mais même si les solutions que tu trouves ne sont pas les plus propres, les chercher te donnera une aptitude supplémentaire à bien développer la partie "métier" de ton code.

Ici, la première chose à laquelle j'aurais pensé est tout simplement :
$i = 0;
echo <td>...</td>;
$i++;
if ($i == 7)
{
echo "</tr></tr>";
$i=0
}
Evidemment, c'est plus long qu'un $i++%7 mais le problème est résolu. a+

Re: afficher résultats balise foreach dans tableau html

par toujours moi » 11 juin 2011, 21:11

j'avance dans le bon chemin pour résoudre le problème...
merci de ton aide, c'est cool de ta part
a+

Re: afficher résultats balise foreach dans tableau html

par moogli » 11 juin 2011, 00:30

salut,

il faut organiser une "césure" dans l'affichage de la table.
Cela ce fait avec l'opérateur modulo (% c'est le reste de la division).
dans le foreach ( ) il faut ajouter une variable (disons $i ;) ) qui va s'incrémenter a chaque "tour" du foreach (a chaque itération).
ensuite un test (toujours dans le foreach) if ( ($i %$nbcolonne)==0) echo '</tr><tr>';

en gros pour un truc simple ça donne
<?php
echo '<table><tr>entetee bla bla </tr>';
$i=0;
foreach ($truc as $keytruc => $trucvalue) {
if ( ($i %$nbcolonne)==0) echo '</tr><tr>';
echo '<td>'.$trucvalue.'</td>';
$i++;
}
//on finit la table proprement
echo '<td colspan="'.($nbcolonne - ($i%$nbcolonne)).'">&nbsp;</td>';
echo '</tr></table>';
?>
@+

afficher résultats balise foreach dans tableau html

par veau » 10 juin 2011, 21:35

salut,

voici mon code php avec la balise foreach :
<?php
 
    echo '<div class="parameter1">';
        echo '<div style="float:left"><strong>';
                    echo JText::_( 'CATEGORY' );
 
                    if ($db->f("parameter_description" )) {
                        echo "&nbsp;";
                        echo mm_ToolTip($par_tran->parameter_description,$VM_LANG->_('PHPSHOP_PRODUCT_TYPE_PARAMETER_FORM_DESCRIPTION'));
                    }
        echo "&nbsp;:</strong></div>";
    $dropdown->render_control('',' name="category_id"');
    echo '</div>';
 
    $q  = "SELECT * FROM #__{vm}_product_type_parameter ";
    $q .= "WHERE product_type_id=$product_type_id ";
    $q .= "ORDER BY parameter_list_order";
 
    $db->setQuery($q);
    $records = $db->_database->loadObjectList('');
 
 
    // show list of parameters
        echo "\n\n<!-- Default list of parameters - BEGIN -->\n";
 
        foreach ($records as $field_num => $par_orig){
            $par_tran = $records[$field_num];
 
            if (in_array($par_orig->parameter_name,$skipparameter))
                continue;
 
            echo '<div class="parameter1">';
            $parameter_type = $par_orig->parameter_type;
            if ($parameter_type!="B" ) {
 
                echo '<div style="float:left"><strong>';
                echo $par_tran->parameter_label;
 
                if ($db->f("parameter_description" )) {
                    echo "&nbsp;";
                    echo mm_ToolTip($par_tran->parameter_description,$VM_LANG->_('PHPSHOP_PRODUCT_TYPE_PARAMETER_FORM_DESCRIPTION'));
                }
                echo "&nbsp;:</strong></div>";
 
                $parameter_values= $par_orig->parameter_values;
                $parameter_names = $par_tran->parameter_values;
 
                $item_name = "product_type_$product_type_id"."_".$par_orig->parameter_name;
                $get_item_value = vmGet($_REQUEST, $item_name, "" );
                $get_item_value_comp = vmGet($_REQUEST, $item_name."_comp", "" );
 
 
                // comparison
                echo '<div style="float:right">';
                if (!empty($parameter_values) && $par_orig->parameter_multiselect=="Y" ) {
                    if ($parameter_type == "V" ) { // type: Multiple Values
                        // Multiple section List of values - comparison FIND_IN_SET
 
                        echo "<input type=\"hidden\" name=\"".$item_name."_comp\"  value=\"find_in_set_any\">";
                    }
                    else { // type: all other
                        // Multiple section List of values - no comparison
                        echo "<input type=\"hidden\" name=\"".$item_name."_comp\" value=\"in\" />\n";
                    }
                }
                else {
                    switch( $parameter_type ) {
                        case "C": // Char
                            if (!empty($parameter_values)) { // List of values - no comparison
                                echo "<input type=\"hidden\" name=\"".$item_name."_comp\" value=\"eq\" />\n";
                                break;
                            }
                        case "I": // Integer
                        case "F": // Float
                        case "D": // Date & Time
                        case "A": // Date
                        case "M": // Time
                            echo "<select class=\"inputbox\" name=\"".$item_name."_comp\">\n";
                            echo "<option value=\"lt\"".(($get_item_value_comp=="lt" )?" selected":"" )."><</option>\n";
                            echo "<option value=\"le\"".(($get_item_value_comp=="le" )?" selected":"" )."><=</option>\n";
                            echo "<option value=\"eq\"".(($get_item_value_comp=="eq" )?" selected":"" ).">=</option>\n";
                            echo "<option value=\"ge\"".((empty($get_item_value_comp)||$get_item_value_comp=="ge" )?" selected":"" ).">>=</option>\n";
                            echo "<option value=\"gt\"".(($get_item_value_comp=="gt" )?" selected":"" ).">></option>\n";
                            echo "<option value=\"ne\"".(($get_item_value_comp=="ne" )?" selected":"" )."><></option>\n";
                            echo "</select>";
                            break;
                        case "T": // Text
                            if (!empty($parameter_values)) { // List of values - no comparison
                                echo "<input type=\"hidden\" name=\"".$item_name."_comp\" value=\"texteq\" />\n";
                                break;
                            }
                            echo "<select class=\"inputbox\" name=\"".$item_name."_comp\">\n";
                            echo "<option value=\"like\"".(($get_item_value_comp=="like" )?" selected":"" ).">".$VM_LANG->_('PHPSHOP_PARAMETER_SEARCH_IS_LIKE')."</option>\n";
                            echo "<option value=\"notlike\"".(($get_item_value_comp=="notlike" )?" selected":"" ).">".$VM_LANG->_('PHPSHOP_PARAMETER_SEARCH_IS_NOT_LIKE')."</option>\n";
                            echo "<option value=\"fulltext\"".(($get_item_value_comp=="fulltext" )?" selected":"" ).">".$VM_LANG->_('PHPSHOP_PARAMETER_SEARCH_FULLTEXT')."</option>\n";
                            echo "</select>";
                            break;
                        case "V": // Multiple Value
                            echo "<input type=\"hidden\" name=\"".$item_name."_comp\" value=\"find_in_set\" />\n";
                            break;
                        case "S": // Short Text
                        default:  // Default type Short Text
                            if (!empty($parameter_values)) { // List of values - no comparison
                                echo "<input type=\"hidden\" name=\"".$item_name."_comp\" value=\"texteq\" />\n";
                                break;
                            }
 
   echo '<input type="hidden" name="'.$item_name.'_comp" value="like">';  
 
                    }
                }
                echo '</div>';
                echo '<br style="clear:both" />';
 
                // List of values
                if (!empty($parameter_values)) {
                    $fields=explode(";",$parameter_values);
                    $names = explode(";",$parameter_names);
                    echo "<select class=\"inputbox\" name=\"$item_name";
                    if ($par_orig->parameter_multiselect == "Y" ) {
                        $size = min(count($fields),6);
                        echo "[]\" multiple size=\"$size\">\n";
                        $selected_value = array();
                        $get_item_value = vmGet($_REQUEST, $item_name, array());
                        foreach($get_item_value as $value) {
                            $selected_value[$value] = 1;
                        }
                        foreach($fields as $key2=>$field) {
                            echo "<option value=\"$field\"".(($selected_value[$field]==1) ? " selected>" : ">" ). $names[$key2]."</option>\n";
                        }
                    }
                    else {
                        echo "\">\n";
                        echo "<option value=\"\">".$VM_LANG->_('PHPSHOP_SELECT')."</option>\n";
                        foreach($fields as $key2=>$field) {
                            echo "<option value=\"$field\"".(($get_item_value==$field) ? " selected>" : ">" ). $names[$key2] ."</option>\n";
                        }
                    }
                    echo "</select>";
                }
                else { // Input field
                    switch( $parameter_type ) {
                        case "I": // Integer
                        case "F": // Float
                        case "D": // Date & Time
                        case "A": // Date
                        case "M": // Time
                            echo "<input type=\"text\" class=\"inputbox\"  name=\"$item_name\" value=\"$get_item_value\" size=\"20\" />";
                            break;
                        case "T": // Text
                            echo "<textarea class=\"inputbox\" name=\"$item_name\" cols=\"35\" rows=\"6\" >$get_item_value</textarea>";
                            break;
                        case "C": // Char
                            echo "<input type=\"text\" class=\"inputbox\"  name=\"$item_name\" value=\"$get_item_value\" size=\"5\" />";
                            break;
                        case "S": // Short Text
                        default: // Default type Short Text
                            echo "<input type=\"text\" class=\"inputbox\" name=\"$item_name\" value=\"$get_item_value\" size=\"50\" />";
                    }
                }
                echo " ".$db->f("parameter_unit" );
                switch( $parameter_type ) {
                    default:
                        break; // we don't need this trash output
                    case "D": // Date & Time
                        echo " (".$VM_LANG->_('PHPSHOP_PRODUCT_TYPE_PARAMETER_FORM_TYPE_DATE_FORMAT')." ";
                        echo $VM_LANG->_('PHPSHOP_PRODUCT_TYPE_PARAMETER_FORM_TYPE_TIME_FORMAT')." )";
                        break;
                    case "A": // Date
                        echo " (".$VM_LANG->_('PHPSHOP_PRODUCT_TYPE_PARAMETER_FORM_TYPE_DATE_FORMAT')." )";
                        break;
                    case "M": // Time
                        echo " (".$VM_LANG->_('PHPSHOP_PRODUCT_TYPE_PARAMETER_FORM_TYPE_TIME_FORMAT')." )";
                        break;
                }
            }
            else { // Break line (type == "B" )
                echo "<hr>";
            }
            echo '</div>';
        }
        echo "\n<!-- Default list of parameters - END -->\n\n";
 
 
    // Add search according to price:
    if (false)
    {
        $item_name = "price";
        $get_item_value = vmGet($_REQUEST, $item_name, "" );
        $get_item_value_comp = vmGet($_REQUEST, $item_name."_comp", "" );
 
        echo "<tr>\n  <td width=\"35%\" height=\"2\" valign=\"top\"><div align=\"right\"><strong>";
        echo $VM_LANG->_('PHPSHOP_CART_PRICE')."&nbsp;:</strong></div>\n  </td>\n";
        // comparison
        echo "<td width=\"10%\" height=\"2\" valign=\"top\" align=\"center\">\n";
        echo "<select class=\"inputbox\" name=\"price_comp\">";
        echo "<option value=\"lt\"".(($get_item_value_comp=="lt" )?" selected":"" )."><</option>\n";
        echo "<option value=\"le\"".((empty($get_item_value_comp)||$get_item_value_comp=="le" )?" selected":"" )."><=</option>\n";
        echo "<option value=\"eq\"".(($get_item_value_comp=="eq" )?" selected":"" ).">=</option>\n";
        echo "<option value=\"ge\"".(($get_item_value_comp=="ge" )?" selected":"" ).">>=</option>\n";
        echo "<option value=\"gt\"".(($get_item_value_comp=="gt" )?" selected":"" ).">></option>\n";
        echo "<option value=\"ne\"".(($get_item_value_comp=="ne" )?" selected":"" )."><></option>\n";
        echo "</select></td>";
        // input text
        echo "\n<td> <input type=\"text\" class=\"inputbox\"  name=\"price\" value=\"$get_item_value\" size=\"20\" /></td>\n</tr>";
    }
    // Search Button
?>
<p></p>
        <input type="submit" class="button" name="search" value="<?php echo $VM_LANG->_('PHPSHOP_SEARCH_TITLE') ?>">
<?php
  } // end - There is a published Product Type
/** Changed Product Type - End */
?>
</form>
<p></p>
<?php
        echo "<form action=\"".$sess->url( "option=com_virtuemart" ). "\" method=\"post\" name=\"reset\"  style=\"display:inline;\">\n";
        echo "<input type=\"submit\" class=\"button\" name=\"reset\" value=\"";
        echo $VM_LANG->_('PHPSHOP_PARAMETER_SEARCH_RESET_FORM') ."\">\n</form>";
?>
ce code php, au moyen de 2 variables, va chercher des résultats dans une table mysql. les 2 variables en question sont : parameter_name et parameter_values. le code php utilise une boucle foreach. la 1ère variable donne 14 résultats ainsi que la 2ème (il n'y aura pas d'autres résultats). avec ce code php, les résultats de ma table s'affiche sur une colonne unique, à la verticale, ce qui n'est pas très esthétique. comment remanier le code pour arriver à afficher les résultats dans 2 tableaux avec chacun 2 lignes et 7 colonnes (voir image : http://www.heberger-image.fr/images/777 ... .jpeg.html).

merci pour vos retours !