Formulaire qui ne renvoie rien

Résolu
Nosferatu -  
 Nosferatu -
Bonjour,

J'ai un petit soucis avec un petit formulaire que je cherche à intégrer à une page, en effet il ne renvoie rien, je débute en web le problème est sans doute simple mais et je ne comprends pas pourquoi cela ne fonctionne pas... Le problème est que $remise reste à 0% même lorsque j'entre quelque chose dans le formulaire et que je clique sur valider, merci de votre iade

<?php
if (isset($_POST['code_promo'])) 
{			
		$remise = "10%";
}
else 
{
		$remise = "0%";
} 
?>
             <tr>
	  	<td align="left">
			<form action="shopping_cart.php" method="post" >
				 <p>
					<label for="code_promo">Code promotionnel</label> :
					<input type="text" name="code_promo" /><input type="submit" value="Valider" />
				 </p>
			</form>
		 </td>
		</tr>
		<tr>
			<td align="right" class="main">
				 <b><?php echo "Remise : "; ?><?php echo $remise; ?></b>
			</td>
	        </tr>

11 réponses

Utilisateur anonyme
 
$remise est dans le tableau $_POST
tu mets un extract($_POST) devant et cela marchera
0
le père
 
Bonjour

$remise n'est pas dans le tableau $_POST et il ne faut jamais faire d'extract qui est une opération très dangereuse.

Ton formulaire marche... même s'il te manque les balises <table> et </table>.
Il donne toujours 10% de réduction, même si on laisse code_promo vide, mais c'est normal tel qu'il est écrit.
Le formulaire que tu montres est bien dans le fichier shopping_cart.php ?
Ça affiche Remise 0% ou rien du tout quand tu cliques sur valider ?
0
Nosferatu
 
Merci pour ces réponses rapides :)

Des balises <table></table> encadrent bel et bien tout le code que j'ai écrit, c'est juste qu'il y a du code entre deux et même entre ces lignes^^ et ce code est bien présent dans le fichier "shopping_cart.php"

J'obtiens toujours "Remise : 0%" quoi que je fasse

Sinon je n'ai pas bien compris comment placer cet extract j'ai écrit "if (isset(extract($_POST['code_promo'])))" mais j'ai tout de suite une erreur sur cette ligne
0
Utilisateur anonyme
 
dangereuse à condition d'avoir le contenu du PHP
0
le père
 
il ne faut pas placer d'extract.
Tu dis qu'il y a bien <table> et </table> dans ton script, peux-tu le donner entièrement ? car c'est sûrement dans les lignes que tu ne montres pas qu'il y a un problème, j'ai copié-collé ton script chez moi et il a marché
0
Nosferatu
 
En effet en y regardant de plus près, il y a des tables un peu partout dans la page mais pas autour du code que j'ai écrit qui est pourtant présenté sous forme de tableau... ce n'est pas moi qui ai écrit cette page mais je dois y faire des modifs, je viens d'essayer de mettre tout le code qui ne l'est pas entre <table></table> seulement ça ne ressemble plus à rien après...

J'aimerais que vous voyez cette page mais elle fait presque 300 lignes :s
0
Nosferatu
 
Voila pour le code de la page complete:

<table border="0" width="100%" cellspacing="3" cellpadding="3">
  <tr>
    <td width="<?php echo BOX_WIDTH; ?>" valign="top"><table border="0" width="<?php echo BOX_WIDTH; ?>" cellspacing="0" cellpadding="0">
<!-- left_navigation //-->
<?php require(DIR_WS_INCLUDES . 'column_left.php'); ?>
<!-- left_navigation_eof //-->
    </table></td>
<!-- body_text //-->
    <td width="100%" valign="top"><?php echo tep_draw_form('cart_quantity', tep_href_link(FILENAME_SHOPPING_CART, 'action=update_product')); ?><table border="0" width="100%" cellspacing="0" cellpadding="0">
      <tr>
        <td><table border="0" width="100%" cellspacing="0" cellpadding="0">
          <tr>
            <td class="pageHeading"><?php echo HEADING_TITLE; ?></td>
            <td class="pageHeading" align="right"><?php //echo tep_image(DIR_WS_IMAGES . 'table_background_cart.gif', HEADING_TITLE, HEADING_IMAGE_WIDTH, HEADING_IMAGE_HEIGHT); ?></td>
          </tr>
        </table></td>
      </tr>
      <tr>
        <td><?php echo tep_draw_separator('pixel_trans.gif', '100%', '10'); ?></td>
      </tr>
<?php
  if ($cart->count_contents() > 0) {
?>
      <tr>
        <td>
<?php
    $info_box_contents = array();
    $info_box_contents[0][] = array('align' => 'center',
                                    'params' => 'class="productListing-heading"',
                                    'text' => TABLE_HEADING_REMOVE);

    $info_box_contents[0][] = array('params' => 'class="productListing-heading"',
                                    'text' => TABLE_HEADING_PRODUCTS);

    $info_box_contents[0][] = array('align' => 'center',
                                    'params' => 'class="productListing-heading"',
                                    'text' => TABLE_HEADING_QUANTITY);

    $info_box_contents[0][] = array('align' => 'center',
                                    'params' => 'class="productListing-heading"',
                                    'text' => TABLE_HEADING_TOTAL);

    $any_out_of_stock = 0;
    $products = $cart->get_products();
    for ($i=0, $n=sizeof($products); $i<$n; $i++) {
// Push all attributes information in an array

      if (isset($products[$i]['attributes']) && is_array($products[$i]['attributes'])) {
        while (list($option, $value) = each($products[$i]['attributes'])) {
          echo tep_draw_hidden_field('id[' . $products[$i]['id'] . '][' . $option . ']', $value);
          $attributes = tep_db_query("select popt.products_options_name, poval.products_options_values_name, pa.options_values_price, pa.price_prefix
                                      from " . TABLE_PRODUCTS_OPTIONS . " popt, " . TABLE_PRODUCTS_OPTIONS_VALUES . " poval, " . TABLE_PRODUCTS_ATTRIBUTES . " pa
                                      where pa.products_id = '" . $products[$i]['id'] . "'
                                       and pa.options_id = '" . $option . "'
                                       and pa.options_id = popt.products_options_id
                                       and pa.options_values_id = '" . $value . "'
                                       and pa.options_values_id = poval.products_options_values_id
                                       and popt.language_id = '" . $languages_id . "'
                                       and poval.language_id = '" . $languages_id . "'");
          $attributes_values = tep_db_fetch_array($attributes);

          $products[$i][$option]['products_options_name'] = $attributes_values['products_options_name'];
          $products[$i][$option]['options_values_id'] = $value;
          $products[$i][$option]['products_options_values_name'] = $attributes_values['products_options_values_name'];
          $products[$i][$option]['options_values_price'] = $attributes_values['options_values_price'];
          $products[$i][$option]['price_prefix'] = $attributes_values['price_prefix'];
        }
      }
    }


    for ($i=0, $n=sizeof($products); $i<$n; $i++) {
      if (($i/2) == floor($i/2)) {
        $info_box_contents[] = array('params' => 'class="productListing-even"');
      } else {
        $info_box_contents[] = array('params' => 'class="productListing-odd"');
      }

      $cur_row = sizeof($info_box_contents) - 1;

      $info_box_contents[$cur_row][] = array('align' => 'center',
                                             'params' => 'class="productListing-data" valign="top"',
                                             'text' => tep_draw_checkbox_field('cart_delete[]', $products[$i]['id']));

      $products_name = '<table border="0" cellspacing="2" cellpadding="2">' .
                       '  <tr>' .
                       '    <td class="productListing-data" align="center"><a href="' . tep_href_link(FILENAME_PRODUCT_INFO, 'products_id=' . $products[$i]['id']) . '">' . tep_image(DIR_WS_IMAGES . $products[$i]['image'], $products[$i]['name'], SMALL_IMAGE_WIDTH, SMALL_IMAGE_HEIGHT) . '</a></td>' .
                       '    <td class="productListing-data" valign="top"><a href="' . tep_href_link(FILENAME_PRODUCT_INFO, 'products_id=' . $products[$i]['id']) . '"><b>' . $products[$i]['name'] . '</b></a>';

      if (STOCK_CHECK == 'true') {
        $stock_check = tep_check_stock($products[$i]['id'], $products[$i]['quantity']);
        if (tep_not_null($stock_check)) {
          $any_out_of_stock = 1;

          $products_name .= $stock_check;
        }
      }

      if (isset($products[$i]['attributes']) && is_array($products[$i]['attributes'])) {
        reset($products[$i]['attributes']);
        while (list($option, $value) = each($products[$i]['attributes'])) {
          $products_name .= '<br><small><i> - ' . $products[$i][$option]['products_options_name'] . ' ' . $products[$i][$option]['products_options_values_name'] . '</i></small>';
        }
      }

      $products_name .= '    </td>' .
                        '  </tr>' .
                        '</table>';

      $info_box_contents[$cur_row][] = array('params' => 'class="productListing-data"',
                                             'text' => $products_name);

      $info_box_contents[$cur_row][] = array('align' => 'center',
                                             'params' => 'class="productListing-data" valign="top"',
                                             'text' => tep_draw_input_field('cart_quantity[]', $products[$i]['quantity'], 'size="4"') . tep_draw_hidden_field('products_id[]', $products[$i]['id']));

      $info_box_contents[$cur_row][] = array('align' => 'right',
                                             'params' => 'class="productListing-data" valign="top"',
                                             'text' => '<b>' . $currencies->display_price($products[$i]['final_price'], tep_get_tax_rate($products[$i]['tax_class_id']), $products[$i]['quantity']) . '</b>');
    }

    new productListingBox($info_box_contents);
?>
        </td>
      </tr>

      <tr>
        <td><?php echo tep_draw_separator('pixel_trans.gif', '100%', '10'); ?></td>
      </tr>
	  <tr>
	  	<td align="left">
			<form action="shopping_cart.php" method="post" >
				 <p>
					<label for="code_promo">Code promotionnel</label> :
					<input type="text" name="code_promo" /><input type="submit" value="Valider" />
				 </p>
			</form>
		 </td>
		</tr>
		<tr>
			<td>
			</td>
		</tr>
		<tr>
			<td align="right" class="main">
			 <?php
				if (isset($_POST['code_promo'])) 
				{			
						$remise = "10%";
				}
				else 
				{
						$remise = "0%";
				} 
			?>
				 <b><?php echo "Remise : "; ?><?php echo $remise; ?></b>
			</td>
	    </tr>
	    <tr>
		  <td align="right" class="main"><b><?php echo SUB_TITLE_SUB_TOTAL; ?> <?php echo $currencies->format($cart->show_total()); ?></b></td>
	    </tr>
<!--
	  <tr>
		<td align="right"><?php echo $cart->show_total(); ?></td>
	  </tr>
-->

<?php
    if ($any_out_of_stock == 1) {
      if (STOCK_ALLOW_CHECKOUT == 'true') {
?>
      <tr>
        <td class="stockWarning" align="center"><br><?php echo OUT_OF_STOCK_CAN_CHECKOUT; ?></td>
      </tr>
<?php
      } else {
?>
      <tr>
        <td class="stockWarning" align="center"><br><?php echo OUT_OF_STOCK_CANT_CHECKOUT; ?></td>
      </tr>
<?php
      }
    }
?>
      <tr>
        <td><?php echo tep_draw_separator('pixel_trans.gif', '100%', '10'); ?></td>
      </tr>
      <tr>
        <td><table border="0" width="100%" cellspacing="1" cellpadding="2" class="infoBox">
          <tr class="infoBoxContents">
            <td><table border="0" width="100%" cellspacing="0" cellpadding="2">
              <tr>
                <td width="10"><?php echo tep_draw_separator('pixel_trans.gif', '10', '1'); ?></td>
                <td class="main"><?php echo tep_image_submit('button_update_cart.gif', IMAGE_BUTTON_UPDATE_CART); ?></td>
<?php
    $back = sizeof($navigation->path)-2;
    if (isset($navigation->path[$back])) {
?>
                <td class="main"><?php echo '<a href="' . tep_href_link($navigation->path[$back]['page'], tep_array_to_string($navigation->path[$back]['get'], array('action')), $navigation->path[$back]['mode']) . '">' . tep_image_button('button_continue_shopping.gif', IMAGE_BUTTON_CONTINUE_SHOPPING) . '</a>'; ?></td>
<?php
    }
?>
                <td align="right" class="main"><?php echo '<a href="' . tep_href_link(FILENAME_CHECKOUT_SHIPPING, '', 'SSL') . '">' . tep_image_button('button_checkout.gif', IMAGE_BUTTON_CHECKOUT) . '</a>'; ?></td>
                <td width="10"><?php echo tep_draw_separator('pixel_trans.gif', '10', '1'); ?></td>
              </tr>
            </table></td>
          </tr>
        </table></td>
      </tr>
	  <!-- DEBUT ESTIMATION DES FRAIS DE PORT -->
	  </form>
	  <tr>
        <td><br><?php if (CARTSHIP_ONOFF == 'Enabled') { require(DIR_WS_MODULES . 'shipping_estimator.php'); } else {}; ?></td>
      </tr>
	  <!-- FIN ESTIMATION DES FRAIS DE PORT -->
<?php
  } else {
?>
      <tr>
        <td align="center" class="main"><?php new infoBox(array(array('text' => TEXT_CART_EMPTY))); ?></td>
      </tr>
	  <tr>
        <td><?php echo tep_draw_separator('pixel_trans.gif', '100%', '10'); ?></td>
      </tr>
      <tr>
        <td><table border="0" width="100%" cellspacing="1" cellpadding="2" class="infoBox">
          <tr class="infoBoxContents">
            <td><table border="0" width="100%" cellspacing="0" cellpadding="2">
              <tr>
                <td width="10"><?php echo tep_draw_separator('pixel_trans.gif', '10', '1'); ?></td>
                <td align="right" class="main"><?php echo '<a href="' . tep_href_link(FILENAME_DEFAULT) . '">' . tep_image_button('button_continue.gif', IMAGE_BUTTON_CONTINUE) . '</a>'; ?></td>
                <td width="10"><?php echo tep_draw_separator('pixel_trans.gif', '10', '1'); ?></td>
              </tr>
            </table></td>
          </tr>
        </table></td>
      </tr>
<?php
  }
?>
    </table></form></td>
<!-- body_text_eof //-->
    <td width="<?php echo BOX_WIDTH; ?>" valign="top"><table border="0" width="<?php echo BOX_WIDTH; ?>" cellspacing="0" cellpadding="0">
<!-- right_navigation //-->
<?php require(DIR_WS_INCLUDES . 'column_right.php'); ?>
<!-- right_navigation_eof //-->
    </table></td>
  </tr>
</table>
0

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

Posez votre question
Utilisateur anonyme
 
exact remise n est pas dans $_POST 1000 excuses
0
le père
 
Le code est encore incomplet... Dès le début tu utilises des constantes qui n'ont été définies nulle part avant : BOX_WIDTH,DIR_WS_INCLUDES. Mais passons.

Si tu ajoutes <?php var_dump($_POST) ?> au début de ton script (avant <table...), qu'est-ce que ça affiche après validation du formulaire ?
0
Nosferatu
 
inscrire "<?php var_dump($_POST) ?>" a affiché "array(0) { } " au dessus de tout

Voila la première partie manquante:

 require("includes/application_top.php");

  require(DIR_WS_LANGUAGES . $language . '/' . FILENAME_SHOPPING_CART);

  $breadcrumb->add(NAVBAR_TITLE, tep_href_link(FILENAME_SHOPPING_CART));
?>
<!doctype html public "-//W3C//DTD HTML 4.01 Transitional//EN">
<html <?php echo HTML_PARAMS; ?>>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=<?php echo CHARSET; ?>">
<title><?php echo TITLE; ?></title>
<base href="<?php echo (($request_type == 'SSL') ? HTTPS_SERVER : HTTP_SERVER) . DIR_WS_CATALOG; ?>">
<link rel="stylesheet" type="text/css" href="stylesheet.css">
</head>
<body marginwidth="0" marginheight="0" topmargin="0" bottommargin="0" leftmargin="0" rightmargin="0">
<!-- header //-->
<?php require(DIR_WS_INCLUDES . 'header.php'); ?>
<!-- header_eof //-->

<!-- body //-->
0
le père
 
C'est dingue ça ! pas moyen d'avoir la totalité, il manque forcément quelque chose avant le require.Au moins un <?php. Laisse tomber, on n' en a pas besoin,

<?php var_dump($_POST) ?>" a affiché "array(0) { } " au dessus de tout
C'est bien APRÈS avoir cliqué sur "valider" ?
Ça montre que ton formulaire ne renvoie rien
Et s'il ne renvoie rien c'est peut-être (? pas sûr) parce qu'il y a deux fermeture de formulaires </form> qui ne correspondent à aucune ouverture, en plus de la "bonne" </form>
0
Nosferatu
 
Oui désolé, il manque un <?php au début, précédant un commentaire inutile...

L'"array(0) { } " s'affiche avant même de valider le formulaire et ne change pas une fois validation
0
le père
 
Que array(0) { } s'affiche avant de valider le formulaire, c'est parfaitement normal.
Mais il devrait afficher autre chose une fois que tu as cliqué sur Valider
As-tu enlevé les </form> excédentaires ?
0
Nosferatu
 
En faisant une recherche (avec deramweaver) j'en ai trouvé deux de trop que j'ai supprimé, malheureusement, cela ne change rien
0
le père
 
et en mettant var_dump($_POST);
avant le require("includes/application_top.php"); ?
0
Nosferatu
 
idem :(
0
Nosferatu
 
Finalement, je me suis renseigné auprès de ceux qui ont construit le site et ce seraient des contribution ou modules qui viendraient en conflit, je ne sais pas trop ce que ça voulais dire, mais en gros c'est difficilement faisable pour moi... merci quand même pour votre aide :)
0