2012-01-28 2 views
0

--Solution found--Dans une session PHP, comment renvoyer une valeur de formulaire qui a été remplie?

Le code PHP correct est une combinaison des deux réponses fournies ci-dessous par user1175332 et shanethehat:

bon code HTML:

<?php session_start() ?> 

<form method="post" action="session7.php" id="form1"> 
<input type="text" name="book" value="" id="book"/> Book Box 

<input type="submit" value="submit" id="submit" name="submit"/> 


</form> 

correct Code PHP:

<?php session_start(); 
if ($_POST && isset($_POST['book'])) { 
    $_SESSION['book'] = $_POST['book']; 
} 
?> 



<?php 

if (isset($_SESSION['book']) && $_SESSION['book'] > 0) 

{echo $_SESSION['book'] . ' Book Box(es)';} 

else {echo '';} 


?> 

Cela fonctionne dans un environnement de test isolé. Malheureusement, il ne fonctionne toujours pas avec le formulaire que j'utilise, probablement à cause du javascript qu'il contient.

----- ----- Original Post

j'ai une forme dans laquelle l'utilisateur remplit une quantité pour différents articles (1 de X, de Y 4, etc.) Une fois que la forme est soumis, il est porté à la page suivante, où un prix est affiché basé sur la quantité totale/volume (cette partie fonctionne grâce aux gars ici à StackOverflow).

Sur la page suivante, j'essaie d'afficher tous les éléments qui ont été remplis (c'est-à-dire chaque élément dont la quantité est supérieure à 0). Par exemple, si le client a 1 de X, de Y 4, mais 0 de Z, je veux la page suivante pour afficher:

1 X
4 Y

Le formulaire peut être vu here. Pour une raison quelconque, je continue d'obtenir une erreur "Undefined Index".

Voici le code PHP:

<?php session_start(); 
    if ($_POST && !empty($_POST['TOTAL'])) { 
     $_SESSION['TOTAL'] = $_POST['TOTAL']; 
    } 

    /* this part is the first problematic part*/ 
    if ($_POST && !empty($_POST['PROD_SP_1.5'])) { 
     $_SESSION['PROD_SP_1.5'] = $_POST['PROD_SP_1.5']; 
    } 
?> 
/* end of the first problematic part*/ 


<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 

<head> 
    <meta content="text/html; charset=utf-8" http-equiv="Content-Type"/> 
    <title>Untitled 1</title> 

</head> 

<body> 

/* this part is the second problematic part*/ 
<?php 
    if ($_SESSION['PROD_SP_1.5'] > 0) { 
     echo $_SESSION['PROD_SP_1.5'] . 'Book Box'; 
    } 
    else { 
     echo ''; 
    } 
?> 
/* end of the second problematic part*/ 

<!-- This part posts the total volume in Cubic Feet--> 
<?php 

    if (isset($_SESSION['TOTAL'])) { 
     echo 'Your total volume is ' . round($_SESSION['TOTAL']) . ' Cubic Feet.'; 
    } else { 
     echo 'You did not fill out any details. Please go back.'; 
    } 
?> 

<!-- End of volume posting --> 

<br/><br/> 

<!-- This part posts the correct price based on the total volume --> 
<?php 
    if ($_SESSION['TOTAL'] > 0 && $_SESSION['TOTAL'] <= 250) { 
     echo 'The guaranteed price for door to door service is $1,899.00 based on 1 Section (up to  250CF).'; 
    } elseif ($_SESSION['TOTAL'] > 0 && $_SESSION['TOTAL'] <= 500) { 
     echo 'The guaranteed price for door to door service is $3,349.00 based on 2 Sections (up to 500CF).'; 
    } elseif ($_SESSION['TOTAL'] > 0 && $_SESSION['TOTAL'] <= 750) { 
     echo 'The guaranteed price for door to door service is $4,899.00 based on 3 Sections (up to 750CF).'; 
    } elseif ($_SESSION['TOTAL'] > 0 && $_SESSION['TOTAL'] <= 1000) { 
     echo 'The guaranteed price for door to door service is $5,999.00 based on an exclusive 20ft Container.'; 
    } 
    elseif ($_SESSION['TOTAL'] > 0 && $_SESSION['TOTAL'] <= 1250) { 
     echo 'The guaranteed price for door to door service is $7,499.00 based on 5 Sections (up to  1,250CF).'; 
    } 
    elseif ($_SESSION['TOTAL'] > 0 && $_SESSION['TOTAL'] <= 1500) { 
     echo 'The guaranteed price for door to door service is $8,599.00 based on 6 Sections (up to 1,500CF).'; 
    } 
    elseif ($_SESSION['TOTAL'] > 0 && $_SESSION['TOTAL'] <= 1750) { 
     echo 'The guaranteed price for door to door service is $9,499.00 based on 7 Sections (up to  1,750CF).'; 
    } 
    elseif ($_SESSION['TOTAL'] > 0 && $_SESSION['TOTAL'] <= 2000) { 
     echo 'The guaranteed price for door to door service is $9,999.00 based on an exclusive 40ft  Container.'; 
    } 
    else { 
     echo 'Sorry, your total volume is too high to quote online. Please contact us to set up an on- site survey: 1.877.430.1300'; 
    } 
?> 

<!-- end of price section --> 


</body> 

Merci à l'avance.

+1

Indéfini Indique que vous utilisez la variable avant son ensemble, vous devriez utiliser 'isset()' dans vos conditions ou affecter toutes les variables par défaut valeurs. –

+2

Veuillez poster votre solution en réponse ci-dessous. –

Répondre

0

Vous devez vous assurer que la valeur de la session a été fixée, car la condition plus haut la page signifie qu'il est possible $_SESSION['PROD_SP_1.5'] de ne pas exister:

/* this part is the second problematic part*/ 
<?php 
if (isset($_SESSION['PROD_SP_1.5']) && $_SESSION['PROD_SP_1.5'] > 0) { 
echo $_SESSION['PROD_SP_1.5'] . 'Book Box'; 
} 

Vous devez également utiliser isset plutôt que empty quand la vérification id une valeur existe dans le tableau POST:

if ($_POST && isset($_POST['PROD_SP_1.5'])) { 
+0

Je vous remercie pour la suggestion shanethehat. J'ai mis à jour le code, mais il n'y a toujours pas de sortie. Il semble que le code php ne reconnaisse pas quand une quantité a été remplie sur le formulaire. –

+0

J'ai mis à jour ma réponse – shanethehat

+0

Merci shanethehat pour la mise à jour - toujours pas de chance. Je vais consulter le programmeur PHP dans mon bureau et voir s'il peut aider. Mettra à jour le poste ici s'il le peut. –

1
  1. Avez-vous inclus <?php session_start();?> sur chaque page? Ceci est nécessaire si vous voulez utiliser des sessions
  2. Je vois que vous ne définissez que $_SESSION['PROD_SP_1.5'] s'il n'est pas vide. Je suggère de le mettre à 0 s'il est vide, ou de changer le test à if (isset($_SESSION['PROD_SP_1.5']) && $_SESSION['PROD_SP_1.5'] > 0)
+0

Bonjour, oui, j'ai inclus Sur toutes les pages. J'ai essayé ce que vous suggérez et ce que vous suggérez, et le problème persiste toujours. Ce code ne donne aucune sortie –

+0

Peut-être ai-je mal compris. Utilisez-vous seulement deux pages? Un avec la forme et l'autre pour afficher les résultats? Si oui, vous pouvez utiliser $ _POST au lieu de $ _SESSION lors de l'impression des résultats – user1175332

+0

Merci pour la mise à jour - J'ai essayé avec $ _POST et toujours pas de chance. Le formulaire redirige l'utilisateur vers une page différente en fonction de la sélection qu'il fait sur le formulaire, mais essentiellement oui, il n'y a que deux pages (1 est la page du formulaire, et l'autre est l'une des pages vers lesquelles l'utilisateur est dirigé). –

Questions connexes