Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 12
  1. #1

    Estrarre dati da pagina mysql con PHP

    Ciao ragazzi, ho il seguente problema: sto creando un piccolo sito e-commerce a scopo didattico, ho già creato la pagina HTML di immissione dati e il database MySQL contenete 30 prodotti. Durante la creazione della pagina PHP che dovrebbe estrarre i prodotti che che soddisfano i dati di ricerca inseriti nella pagina HTML ho riscontrato un problema, ovvero: sono riuscito a collegarmi al databse ma non riesco ad estrarre i dati, dove ho sbagliato:
    codice:
      <?php
      if (isset($_POST["invio"]))
     
       $categoria=$_POST['Categoria'];
       $prezzo1=$_POST['prezzo1'];
       $prezzo=$_POST['prezzo2'];
       $marca=$_POST['Marca'];
       
       $hostname="localhost";
       $username="root";
       $password="melone";
         $connessione=mysql_connect($hostname,$username,$password);
       
       if (!$connessione)
           {
            die('errore di connessione: '.mysql_error());
           }
        else
          {
            $dbwebuy= mysql_select_db("webuy",$connessione);
          }    
            if(!$dbwebuy)
             {
               die('database non trovato '.mysql_error());
              }
            
            for($c=1;$c<=30;$c++)
               {
               $sqlcmd="select * from Articoli where Categoria='$categoria'  and Prezzo>'$prezzo1' and Prezzo<'$prezzo2' and Marca='$marca'";
               $risultato=mysql_query($sqlcmd);
               $riga=mysql_fetch_array($risultato);
            while($riga==true)
                  {
                    echo "$riga[Nome]";
                  }        
                
                 }
    mysql_close($connessione);
    ?>
    Ultima modifica di MItaly; 03-06-2014 a 21:08 Motivo: tag CODE

  2. #2
    Utente di HTML.it L'avatar di Alex'87
    Registrato dal
    Aug 2001
    residenza
    Verona
    Messaggi
    5,802
    PHP sta un po' più sotto
    SpringSource Certified Spring Professional | Pivotal Certified Enterprise Integration Specialist
    Di questo libro e degli altri (blog personale di recensioni libri) | ​NO M.P. TECNICI

  3. #3
    Moderatore di PHP L'avatar di Alhazred
    Registrato dal
    Oct 2003
    Messaggi
    12,503
    Codice PHP:
    for($c=1;$c<=30;$c++)
    {
        
    $sqlcmd="select * from Articoli where Categoria='$categoria'  and Prezzo>'$prezzo1' and Prezzo<'$prezzo2' and Marca='$marca'";
        
    $risultato=mysql_query($sqlcmd);
        
    $riga=mysql_fetch_array($risultato);
        while(
    $riga==true)
        {
            echo 
    "$riga[Nome]";
        }        
    }
    ?> 
    Per quale motivo esegui 30 volte la stessa query?
    Non è così che si fa, se non sapessi quanti articoli ci sono come faresti?
    La query va eseguita una volta sola e poi il ciclo si fa sui risultati

    Inoltre attorno alle variabili coi prezzi non ci vanno gli apici, suppongo che i campi della tabella siano di tipo numerico, non stringhe.
    Lo stesso dovresti fare con la categoria se ciò che gli passi è un id numerico, se invece è proprio il nome o un codice alfanumerico va bene con gli apici.
    Codice PHP:
    $sqlcmd="select * from Articoli where Categoria='$categoria'  and Prezzo>$prezzo1 and Prezzo<$prezzo2 and Marca='$marca'";
    $risultato=mysql_query($sqlcmd);

    while ( 
    $riga mysql_fetch_array($risultato) )
    {
        echo 
    $riga['Nome'];

    Ultima modifica di Alhazred; 03-06-2014 a 22:40

  4. #4
    Grazie Alhazred, ho fatto con il codice che mi hai detto tu ma continua a non visualizzarmi nnt...cmnq categoria e marca sono così:
    <select name ="Marca">
    <option value="apple" selected="selected">Apple </option>
    <option value="samsung">Samsung </option>
    <option value="sony">Sony </option>
    </select>

    <select name ="Categoria">
    <option value="telefonia" selected="selected">Telefonia </option>
    <option value="accessori">Accessori per PC </option>
    <option value="tabletpc">Tablet e PC </option>
    </select>
    mentre prezzo1 e prezzo2 così:
    da: <input type = "text" name="prezzo1" size ="3" />
    a: <input type = "text" name="prezzo2" size ="3" />

  5. #5
    Moderatore di PHP L'avatar di Alhazred
    Registrato dal
    Oct 2003
    Messaggi
    12,503
    $sqlcmd="select * from Articoli where Categoria='$categoria' and Prezzo>$prezzo1 and Prezzo<$prezzo2 and Marca='$marca'";
    echo $sqlcmd;
    exit;

    Vedi cosa stampa, copia la riga, incollala in phpmyadmin ed eseguila, vedi se recupera qualcosa o se genera un errore.

    Per la categoria va bene tenere gli apici visto che è una stringa sicuramente, per i prezzi dipende da come è fatta la tabella del db, ma a meno di aver fatto una scelta infelice sarà un campo DECIMAL (che è l'unico che va bene per i prezzi!), quindi da usare senza apici nelle query.

  6. #6
    Contina a non stamparmi nnt

  7. #7
    Moderatore di PHP L'avatar di Alhazred
    Registrato dal
    Oct 2003
    Messaggi
    12,503
    Quindi a quel punto lì nemmeno ci arrivi, perché è impossibile che non ti stampi una stringa.

    Riposta il codice così come ce l'hai adesso.

  8. #8
    adesso ho inserito anche la funzione mysql_num_rows, e scrivendo così;
    $sqlcmd="select * from Articoli where Categoria='$categoria' and Prezzo>$prezzo1 and Prezzo<$prezzo2 and Marca='$marca'";
    $risultato=mysql_query($sqlcmd);


    $nrighe=mysql_num_rows($risultato);
    if ($nrighe==0)
    {
    echo "al momento non sono in vendita gli articoli da lei richiesti";
    }
    else
    {
    while ($riga=mysql_fetch_array($risultato))
    {
    echo $riga['Nome'];
    }
    }
    mi visualizza in maniera corretta solo la ricerca impostata su telefonia, per qualsiasi marca, mentre per le altre ricerche mi esce il messaggio: al momento non sono in vendita gli articoli da lei richiesti, eppure gli articoli sono presenti, poiché scrivendo la query in mysql li trova.
    P.S. grazie e scusa se ti sto facendo impazzire

  9. #9
    Moderatore di PHP L'avatar di Alhazred
    Registrato dal
    Oct 2003
    Messaggi
    12,503
    Evidentemente la stringa che passi come categoria per quelle diverse da "telefonia" non coincide con ciò che hai nel db, potrebbe anche essere semplicemente uno spazio vuoto, che non vedi ma comunque c'è e fa la differenza.

  10. #10
    ma i dati che vanno in value del select nella pagina html devono coincidere con quelli del database?

Tag per questa discussione

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 © 2025 vBulletin Solutions, Inc. All rights reserved.