Pagina 1 di 5 1 2 3 ... ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 44
  1. #1
    Utente di HTML.it L'avatar di bobonzo
    Registrato dal
    Jul 2000
    Messaggi
    495

    Cercare valore in mysql_fetch

    Ciao,
    sto impazzendo con un carrello fatto in casa. Il punto è che i prodotti sono di due tipi: fisici (da spedire) e virtuali (da scaricare). Pertanto, nella misura in cui nel carrello compaiano entrambi i tipi di prodotto, vorrei non far visualizzare il form per la scelta del metodo di spedizione (in altri termini, la presenza nel carrello di un prodotto "fisico" deve assorbire la presenza di uno o più prodotti scaricabili).
    Fino ad ora ho provato a fare una cosa del tipo
    Codice PHP:
    $db mysql_connect($host$user$password);
    mysql_select_db($dbname$db)
    or die (
    "Errore nella selezione del database. Verificare i parametri nel file config.php");
      foreach (
    $_SESSION['jnb_quantity'] as $prod=>$qta)
      {
        
    $query"SELECT * FROM libri where id = '$prod'";
        
    $rs mysql_query($query) or die(mysql_error());
        
    $row mysql_fetch_array($rs);
        
    $titolo2 str_replace("
    "
    ," "$row['titolo']);
        
    $costo sprintf("%01.2f",$row['prezzo']*$qta);
        
    $tot+=sprintf("%01.2f",$costo);
        
    $globale sprintf("%01.2f",$tot);
        echo 
    "<tr><td class='col'>";
             if(!isset(
    $_SESSION['spese'])) {
             if (
    $row['tipo'] == 'l') {
                  
    $_SESSION['spese'] = 'y';
                  echo
    "";
                  } else { echo
    "PDF - "$_SESSION['spese'] = 'n'; }
             } 
    prendo l'id prodotto e la quantità registrati in sessione e li uso per estrapolare dal db nome prodotto, prezzo e tipo (se trattasi di prodotto fisico (tipo=L), di prodotto virtuale (tipo=P)).
    Nella parte finale, se $_session[spese] == y, stampo il form per la scelta del metodo di spedizione
    Il problema è che tutto funge quando ragioni con prodotti uniformi (se inserisco il fisico, vedo la spedizione; se inserisco il virtuale, non la vedo......ma se li mischio nel carrello è come se prevalesse sempre $_session[spese] != y.
    Come mai questo? Forse perchè sto giocando nel foreach?
    Ho pensato che forse potrei risolvere cercando in tutte le righe ricavabili dalla query: se ne esce anche solo una con tipo==P, allora devo inibire la stampa della form per la spedizione.
    Mi date una mano? Sto impazzendo!
    Grazie infinite a tutti

  2. #2
    visto così sembrerebbe un classico problema di "riscrittura" della variabile di sessione, mi spiego: viene controllata la presenza o meno del tipo di prodotto VIRTUALE, partendo dal presupposto che all'inizio tutti i prodotti siano di tipo FISICO.

    Nel momento però in cui il sistema trova un prodotto VIRTUALE, imposta il flag di controllo per indicare "presenza di prodotto virtuale",ma settando questo flag si perde anche l'informazione della presenza dei precedenti prodotti di tipo FISICO.

    Per ovviare a questo problema la cosa più semplice è utilizzare DUE flag del tipo $_SESSION['spese'], ad esempio $_SESSION['speseTipo1'] e $_SESSION['speseTipo2']: a questo punto basta un semplice controllo in AND o OR per controllare i form.

    Se $_SESSION['speseTipo1'] è true vuol dire che nel carrello è presente almeno un prodotto di tipo1;
    Se $_SESSION['speseTipo2'] è true vuol dire che nel carrello è presente almeno un prodotto di tipo2;

    se uno dei due è false siamo in presenza di un carrello con prodotti omogenei.

  3. #3
    Utente di HTML.it L'avatar di bobonzo
    Registrato dal
    Jul 2000
    Messaggi
    495
    Innanzitutto grazie per l'aiuto.
    Sto provando a mettere in ratica il tuo consiglio, ma ora il comportamento è cambiato: in caso di tipo==L mostra le spese, in caso di tipo==P purtroppo le mostra, in caso di prodotti misti mostra le spese; dunque il risultato non è ancora raggiunto, perchè per i pdf non dovrebbe mostrarle, mentre finalmente il pdf non prevale più sul prodotto fisico! Dove sbaglio?
    Codice PHP:
    // controllo se tipo==L o tipo==P
             
    if ($row['tipo'] == 'l') {
                  
    $_SESSION['spese1'] = 'y';
                  echo
    "";
                  } 
                  else    {
                          echo
    "PDF - ";
                          
    $_SESSION['spese2'] = 'n';
                          }

    // a seconda dei valori, stampo o meno la spedizione

        
    if (($_SESSION['spese1'] == 'y') || ($_SESSION['spese2'] != 'n')) {

    ...
    form...



  4. #4
    innanzitutto non sono molto convinto di questo:

    codice:
     
    if (($_SESSION['spese1'] == 'y') || ($_SESSION['spese2'] != 'n')) { 
    }
    perchè in questo caso visualizzi il form quando o il primo o il secondo o ENTRAMBI sono veri, quindi non credo sia corretto (a meno che non mi sia perso qualcosa, più che plausibile! ).

    Prova a separare completamente i casi, ad esempio:

    codice:
    if ( $_SESSION['spese1'] == 'y' ) {
     //visualizza form spedizione
    }

  5. #5
    Utente di HTML.it L'avatar di bobonzo
    Registrato dal
    Jul 2000
    Messaggi
    495
    eh! prima di provare quel confronto, avevo provato la soluzione più semplice indicata da te
    Codice PHP:
             if ($tipo == 'l') {
                  
    $_SESSION['spese1'] = 'y';
                  echo
    "";
                  } 
                  else    {
                          echo
    "PDF - ";
                          
    $_SESSION['spese2'] = 'n';
                          }


        if (
    $_SESSION['spese1'] == 'y') { 
    confermo il comportamento descritto: quando c'è solo il pdf mi stampa la spedizione. Maledizione!!

  6. #6
    potresti postare il codice della pagina? Così gli diamo un'occhiata più approfondita!

  7. #7
    Utente di HTML.it L'avatar di bobonzo
    Registrato dal
    Jul 2000
    Messaggi
    495
    credo davvero sia un problema si riscrittura, perchè adesso la cosa funziona, ma solo se ogni volta procedo a cancellare la sessione.
    in sostanza, se come primo prodotto inserisco un pdf, effettivamente non mi mostra la spedizione. ma se inizio a giocare con il carrello (aggiungo, sottraggo ecc.) ..alla fine la spedizione veine mostrata sempre!

  8. #8
    Utente di HTML.it L'avatar di bobonzo
    Registrato dal
    Jul 2000
    Messaggi
    495
    considera che prima c'è tutta la parte sulle sessioni del carrello; questa che segue è la parte della stampata del carrello e degli step successivi
    Codice PHP:
              $db mysql_connect($host$user$password);
    mysql_select_db($dbname$db)
    or die (
    "Errore nella selezione del database. Verificare i parametri nel file config.php");
      foreach (
    $_SESSION['jnb_quantity'] as $prod=>$qta)
      {
        
    $query"SELECT * FROM libri where id = '$prod'";
        
    $rs mysql_query($query) or die(mysql_error());
        
    $row mysql_fetch_array($rs);

        
    $titolo2 str_replace("
    "
    ," "$row['titolo']);
        
    $costo sprintf("%01.2f",$row['prezzo']*$qta);
        
    $tot+=sprintf("%01.2f",$costo);
        
    $globale sprintf("%01.2f",$tot);
        echo 
    "<tr><td class='col'>";

             if (
    $row['tipo'] == 'l') {
                  
    $_SESSION['spese1'] = 'y';
                  echo
    "";
                  } 
                  else    {
                          echo
    "PDF - ";
                          
    $_SESSION['spese2'] = 'n';
                          }

              echo
    "$titolo2</td>
              <td class='col' style='text-align: right;'>
    $row[prezzo]</td>
              <td class='col' style='text-align: center;'>
    $qta</td>
              <td class='col' style='text-align: right;'>
    $costo</td>
              <td class='col' style='width: 10px;'>[url='viewp.php?where=carrello&action=subtract&product=
    $row[id]&quantidade=1&step=1'][img]del.gif[/img][/url]</td>
             </tr>"
    ;
      }
        echo 
    "
        <tr><td colspan='4' style='text-align: right; padding: 5px;'>Totale [b]€ 
    $globale[/b]</td></tr>
        "
    ;
    $db mysql_connect($host$user$password);
    mysql_select_db($dbname$db)
    or die (
    "Errore nella selezione del database. Verificare i parametri nel file config.php");
            if (isset(
    $_POST['spedizione'])) {
                
    $_SESSION['spedizione'] = $_POST["spedizione"];
                
    $spedizione $_SESSION['spedizione'];
                    } if (isset(
    $_SESSION['spedizione'])) {
                    
    $spedizione $_SESSION['spedizione']; }
    $query_sped"SELECT * FROM metodi_spedizione where id_metodi_spedizione='$spedizione'"
    $rs_sped mysql_query($query_sped) or die(mysql_error());
    $row_sped=mysql_fetch_array($rs_sped);
    $descrizione_sped $row_sped["descrizione_metodi_spedizione"];
    $prezzo_sped $row_sped["prezzo_metodi_spedizione"];                
                        if (isset(
    $spedizione)) {
                        echo 
    "
                        <tr><td colspan='4' style='text-align: right; padding: 5px;'>
    $descrizione_sped [b]€ $prezzo_sped[/b]</td></tr>
                        "
    ;
                        }
            if (isset(
    $_POST['pagamento'])){
                
    $_SESSION['pagamento'] = $_POST["pagamento"];
                
    $pagamento $_SESSION['pagamento'];
                }    if (isset(
    $_SESSION['pagamento'])) {
                    
    $pagamento $_SESSION['pagamento']; }
    $query"SELECT * FROM metodi_pagamento where id_metodi_pagamento='$pagamento'"
    $rs mysql_query($query) or die(mysql_error());
    $row=mysql_fetch_array($rs);
    $descrizione_pag $row["descrizione_metodi_pagamento"];
    $prezzo_pag $row["prezzo_metodi_pagamento"];
                        if (isset(
    $pagamento)) {
                        echo 
    "
                        <tr><td colspan='4' style='text-align: right; padding: 5px;'>
    $descrizione_pag [b]€ $prezzo_pag[/b]</td></tr>
                        "
    ;
                        }
    $completo $prezzo_sped+$prezzo_pag+$globale;
    $completo_format sprintf("%01.2f",$completo);
        echo
    "
        <tr><td colspan='4' style='text-align: right; padding: 5px;'>Importo dovuto [b]€ 
    $completo_format[/b]</td></tr>
        </table>
        "
    ;
    // inizio 0
    $step $_GET["step"];
    if ((
    $step == '0') || ($step == '')) {
            echo
    "
            [url='index.php'][img]../images/continua.gif[/img][/url][url='viewp.php?where=carrello&step=1'][img]../images/procedi.gif[/img][/url]
            "
    ;
    }
    // inizio 1
    if ($step == '1') {
        echo
    "<form name='modulo' action='viewp.php?where=carrello&step=2' method='POST'>";
        if (
    $_SESSION['spese1'] == 'y') {
    echo
    "
    <fieldset>
    <legend>[b]Seleziona un metodo di spedizione[/b]</legend>
    "
    ;
    $db=mysql_connect($host,$user,$password) or die(mysql_error());
    mysql_select_db("$dbname") or die(mysql_error());
    $sql="SELECT * FROM metodi_spedizione ORDER BY predefinito DESC"
    $result=mysql_query($sql) or die(mysql_error());
    while (
    $row=mysql_fetch_array($result)) {
    $id_metodi_spedizione $row["id_metodi_spedizione"]; 
    $descrizione_metodi_spedizione $row["descrizione_metodi_spedizione"];
    $prezzo_metodi_spedizione $row["prezzo_metodi_spedizione"];
    $predefinito $row["predefinito"];
    echo
    "
    <input type='radio' name='spedizione' value='
    $id_metodi_spedizione'"; if ($predefinito == '1') { echo"checked='checked'"; } echo"/>  $descrizione_metodi_spedizione - $prezzo_metodi_spedizione €



    "
    ;
    }

        } else { 
    $_SESSION['spedizione'] = '1'; }


    echo
    "</fieldset>


    "
    ;
    echo
    "<fieldset><legend>[b]Seleziona un metodo di pagamento[/b]</legend>
    "
    ;
    $db=mysql_connect($host,$user,$password)
    or die(
    mysql_error());
    mysql_select_db("$dbname") or die(mysql_error());
    $sql_pag="SELECT * FROM metodi_pagamento ORDER BY predefinito DESC"
    $result_pag=mysql_query($sql_pag) or die(mysql_error());
    while (
    $row_pag=mysql_fetch_array($result_pag)) {
    $id_metodi_pagamento $row_pag["id_metodi_pagamento"]; 
    $descrizione_metodi_pagamento $row_pag["descrizione_metodi_pagamento"];
    $prezzo_metodi_pagamento $row_pag["prezzo_metodi_pagamento"];
    $predefinito_pag $row_pag["predefinito"];
    echo
    "
    <input type='radio' name='pagamento' value='
    $id_metodi_pagamento'"; if ($predefinito_pag == '1') { echo"checked='checked'"; } echo"/>  $descrizione_metodi_pagamento - $prezzo_metodi_pagamento €



    "
    ;
    }

    echo
    "</fieldset>";
    echo
    "
    [url='viewp.php?where=carrello&step=0'][img]../images/continua.gif[/img][/url]<INPUT type='SUBMIT' value=' ' style='background-image:url('../images/procedi.gif'); repeat: no; width: 59px; height: 25px; vertical-align: bottom; border: 0px;'></form>"
    ;

        }

    // inizio 2 LOGIN O REGISTRAZIONE
    if ($step == '2') {
    if (isset(
    $_SESSION['pagamento']) && isset($_SESSION['spedizione']))
    {
    if (!isset(
    $_SESSION['riconosciuto'])){
    echo
    "
    <form name='login' action='viewp.php?action=contr' method='post'>
    <fieldset>
    <legend>[b]Fai il login[/b]</legend>

    Email <input name='email' type='text' value='' size='25' />
    Password <input name='pass' type='password' size='15' />


    Non sei registrato? [url='viewp.php?action=newus']Registrati ora[/url]

    Hai dimenticaticato la password? [url='viewp.php?action=resetus']Clicca qui[/url]
    </fieldset>

    <INPUT type='SUBMIT' value='Entra'>
    </form>
    "
    ;
    }
    else 
    {
    $riconosciuto $_SESSION['riconosciuto'];
    $db mysql_connect($host$user$password);
    mysql_select_db($dbname$db)
    or die (
    "Errore nella selezione del database. Verificare i parametri nel file config.php");
    $rif_pagamento $_SESSION['pagamento'];
    $query"SELECT * FROM metodi_pagamento where id_metodi_pagamento='$rif_pagamento'"
    $rs mysql_query($query) or die(mysql_error());
    $row=mysql_fetch_array($rs);
    $gate $row["gate"];
    $db mysql_connect($host$user$password);
    mysql_select_db($dbname$db)
    or die (
    "Errore nella selezione del database. Verificare i parametri nel file config.php");
    $query_utente"SELECT * FROM utenti where email_utenti='$riconosciuto'"
    $rs_utente mysql_query($query_utente) or die(mysql_error());
    $row_utente=mysql_fetch_array($rs_utente);
    $id_utente $row_utente["id_utenti"];
    $nome $row_utente["nome_utenti"];
    $cognome $row_utente["cognome_utenti"];
    $emaildb $row_utente["email_utenti"];
    $password md5($row_utente["password_utenti"]);
    $indirizzo $row_utente["indirizzo_utenti"];
    $citta $row_utente["citta_utenti"];
    $cap $row_utente["cap_utenti"];
    $stato $row_utente["stato_utenti"];
    $tel $row_utente["tel_utenti"];
        echo
    "
    <form action='viewp.php?action=compra' method='post' name='frmPaypal'>
    <fieldset><legend>[b]Riepilogo dati utente[/b]</legend>

    <table width='100%' border='0' cellspacing='0' cellpadding='5'>
    <input type='hidden' name='cmd' value='_ext-enter'>
    <input type='hidden' name='redirect_cmd' value='_xclick'>
    <input type='hidden' name='business' value='xxxx'>
    <input type='hidden' name='id_utente' value='
    $id_utente'>
    <input type='hidden' name='gate' value='
    $gate'>
    <input type='hidden' name='amount' value='
    $completo_format'>
    <input type='hidden' name='currency_code' value='EUR'>
    <input type='hidden' name='notify_url' value='http://www.progedit.com/prove/ipn.php'>
    <input type='hidden' name='return' value='http://www.tuosito.it/rientro.php'>
    <input type='hidden' name='cancel_return' value='http://www.tuosito.it/rientro.php'>
      <tr>
        <td style='text-align: right; width: 80px;'>Nome</td>
        <td style='width: 20px;'></td>
        <td>
    <input type='text' name='first_name' value='
    $nome'></td>
      </tr>
      <tr>
        <td style='text-align: right;'>Cognome</td>
        <td></td>
    <td><input type='text' name='last_name' value='
    $cognome'></td>
      </tr>
      <tr>
        <td style='text-align: right;'>Email</td>
        <td></td>
    <td><input type='text' name='email' value='
    $emaildb' readonly='readonly'></td>
      </tr>
        <tr>
        <td style='text-align: right;'>Password</td>
        <td></td>
    <td><input type='password' name='pass' value='
    $password'></td>
      </tr>
      <tr>
        <td style='text-align: right;'>Indirizzo</td>
        <td></td>
    <td>
    <input type='hidden' name='address_override' value='1'> 

    <input type='text' name='address1' value='
    $indirizzo'></td>
      </tr>
      <tr>
        <td style='text-align: right;'>Città</td>
        <td></td>
    <td><input type='text' name='city' value='
    $citta'></td>
      </tr>
      <tr>
        <td style='text-align: right;'>CAP</td>
        <td></td>
        <td><input type='text' name='zip' value='
    $cap'></td>
      </tr>
      <tr>
        <td style='text-align: right;'>Stato</td>
        <td></td>
        <td><input type='text' name='state' value='
    $stato'></td>
      </tr>
      <tr>
        <td style='text-align: right;'>Telefono</td>
        <td></td>
        <td><input type='text' name='night_phone_a' value='
    $tel'></td>
      </tr>
    </table>
    </fieldset>


    <INPUT type='SUBMIT' value='Invia ordine'>
    <INPUT type='SUBMIT' value='Aggiorna i dati anagrafici' onclick=\"this.form.action='viewp.php?do=updus'\">
    </form>
    "
    ;
    }
    }
    else {
    echo
    "<div align='left' style='color: red; font-weight: bold;'>Attenzione: non hai selezionato il metodo di pagamento o di spedizione.

    [url='viewp.php?where=carrello&step=1']Torna indietro[/url]</div>"
    ;
    }
    }
    }
    else 

    echo
    "Il carrello è vuoto";
    }


  9. #9
    non mi convince questo controllo:

    codice:
    /*
    
    non basta mettere questo controllo: devi anche essere sicuro che il tipo spesa2 sia impostato a valore 'n'
    
    */
    
     if ($_SESSION['spese1'] == 'y') {
    echo"
    <fieldset>
    <legend>Seleziona un metodo di spedizione</legend>
    ";
    $db=mysql_connect($host,$user,$password) or die(mysql_error());
    mysql_select_db("$dbname") or die(mysql_error());
    $sql="SELECT * FROM metodi_spedizione ORDER BY predefinito DESC"; 
    $result=mysql_query($sql) or die(mysql_error());
    while ($row=mysql_fetch_array($result)) {
    $id_metodi_spedizione = $row["id_metodi_spedizione"]; 
    $descrizione_metodi_spedizione = $row["descrizione_metodi_spedizione"];
    $prezzo_metodi_spedizione = $row["prezzo_metodi_spedizione"];
    $predefinito = $row["predefinito"];
    echo"
    <input type='radio' name='spedizione' value='$id_metodi_spedizione'"; if ($predefinito == '1') { echo"checked='checked'"; } echo"/>  $descrizione_metodi_spedizione - $prezzo_metodi_spedizione €
    
    
    
    ";
    }
    Come ti ho scritto nel commento, credo tu debba verificare anche la seconda variabile di sessione, per essere sicuro che sia impostata a 'n'. Pertanto proverei a sostituire il controllo precedente con questo :

    codice:
    if ( $_SESSION['spese1'] == 'y' &&  $_SESSION['spese2'] == 'n' ) {
    }
    o con qualcosa di simile che verifichi il valore di $_SESSION['spese2'].

  10. #10
    Utente di HTML.it L'avatar di bobonzo
    Registrato dal
    Jul 2000
    Messaggi
    495
    fatto, ma così non riesco nemmeno ad individuare un comportamento costante ben definito.
    quello che noto è che quando il prodotto è omogeneo, non mostra spedizione, altrimenti le mostra, a prescindere si tratti di pdf o bene fisico.
    sono spacciato?

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.