Visualizzazione dei risultati da 1 a 8 su 8

Discussione: Problema con database

  1. #1
    Utente di HTML.it
    Registrato dal
    Jun 2009
    Messaggi
    92

    Problema con database

    Ragazzi ho un problema con questo script:

    Codice PHP:
    <?php

    echo '<div class="titolo">Lista '.$_GET['lista'].'</div>';
    include(
    'connessione.php');

    $submit $_POST['submit'];
    $cod $_POST['cod'];
    $oggetto $_POST['oggetto'];
    $prezzo $_POST['prezzo'];
    $venduto $_POST['venduto'];

    $query mysql_query('SELECT * FROM '.$_GET['lista'].'') or die(mysql_error());

    echo 
    '<ul class="lista">[*]CODICE
        [*]OGGETTO
        [*]PREZZO
        [*]VENDUTO
        [/list]'
    ;
          
    while (
    $result mysql_fetch_array($query))

      
    $cod $result['COD'];
      
    $oggetto $result['OGGETTO'];
      
    $prezzo $result['PREZZO'];
      
    $venduto $result['VENDUTO'];
            
      echo 
    '<table>
             <tr>
              <td>'
    .$cod.'</td>

              <td>'
    .$oggetto.'</td>
     
                <td>'
    .$prezzo.'</td>
              <td>'
    .$venduto.'</td>
             </tr>
            </table>'
    ;
    }
    if(
    $submit)
    {    
        
    mysql_query('SELECT * FROM '.$_GET['lista'].'');
        
    mysql_query("INSERT INTO ".$_GET['lista']." VALUES('$cod', '$oggetto', '$prezzo', '$venduto')") or die(mysql_error());
        
        echo 
    'Oggetto aggiunto alla lista.';




    echo 
    '<form action="lista_nozze.php?lista='.$_GET['lista'].'" method="post">

           



           <div>Codice:<span>&nbsp&nbsp<input type="text" name="cod"></span>
           <span>Oggetto:&nbsp&nbsp<input type="text" name="oggetto"></span>
           <span>Prezzo:&nbsp&nbsp<input type="text" name="prezzo"></span>
           <span>Venduto:&nbsp&nbsp<input type="text" name="venduto"></span>
           <span><input type="hidden" name="submit" value="1">
                 <input type="submit" value="Aggiungi"></span></div>
                 
          </form>'
    ;

    ?>
    In pratica quando aggiungo un nuovo oggetto mi aggiunge quello precedente, sempre lo stesso, e se faccio aggiorna pagina mi aggiunge ancora quell'oggetto.
    Potre mettere il form in un'altra pagina ma vorrei rimanesse tutto in questa, sapete darmi qualche dritta?

  2. #2
    devi poter differenziare/ordinare bene lo script perchè così fai confusione...
    inoltre meglio che metti la variabile lista passata via get al form e lo piazzi come campo nascosto come hai fatto per submit così in modo lo passi via post e nn fai confusione cn get e post
    Codice PHP:
    <?php

    if(isset($_POST)) {
    //istruzioni per inserimento
    }
    //istruzioni di elenco lista e form
    ?>
    metti tutto il codice di inserimento tra l'if che ti ho fatto:
    questo lo metti o lo sistemi meglio tra l'if
    Codice PHP:
    $submit $_POST['submit'];
    $cod $_POST['cod'];
    $oggetto $_POST['oggetto'];
    $prezzo $_POST['prezzo'];
    $venduto $_POST['venduto']; 
    mysql_query("INSERT INTO ".$_POST['lista']." VALUES('$cod', '$oggetto', '$prezzo', '$venduto')") or die(mysql_error());
    echo 
    'Oggetto aggiunto alla lista.'

  3. #3
    ti confermo quello che dice serdominik visto che non puoi usare il metodo post del form usando una action con logica tipica da metodo get (leggi: "urlquery")

    oltre a quello in questo codice usi le stesse variabili prima per ottenere i valori del form (che non utilizzi)
    e dopo per avere i valori del db (che pero' non includono l' ultimo invio del form)

    il codice:

    Codice PHP:
    if($submit) { 
         
    mysql_query('SELECT * FROM '.$_GET['lista'].'');
         
    mysql_query("INSERT INTO ".$_GET['lista']." VALUES('$cod', '$oggetto', '$prezzo', '$venduto')") or die(mysql_error());
         echo 
    'Oggetto aggiunto alla lista.';
         } 
    va modificato togliendo la prima mysql_query che non serve a niente,
    INSERT INTO ".$_GET['lista']." la devi cambiare usando $_POST
    la echo 'Oggetto aggiunto alla lista.' la devi mettere solo se la seconda mysql_query
    ha esito positivo e deve essere formattata correttamente in una logica di codice html.
    Tutto il blocco di codice va messo subito prima di questa parte:

    Codice PHP:
    $query mysql_query('SELECT * FROM '.$_GET['lista'].'') or die(mysql_error());

    echo 
    '<ul class="lista">[*]CODICE[*]OGGETTO[*]PREZZO[*]VENDUTO[/list]'

    questo codice inoltre va modificando usando ('SELECT * FROM '.$_POST['lista'].'') se vuoi mostrare sempre e comunque la lista degli oggetti
    oppure lo lasci cosi' com'e' ma inserendolo in un if come ti suggerisce serdominik cosi' in un caso hai l' inserimento e in un altro hai la lista

  4. #4
    Utente di HTML.it
    Registrato dal
    Jun 2009
    Messaggi
    92
    Ho fatto in questo modo:

    Codice PHP:
    <?php

    echo '<div class="titolo">Lista '.$_POST['lista'].'</div>';
    include(
    'connessione.php');

    $submit $_POST['submit'];
    $cod $_POST['cod'];
    $oggetto $_POST['oggetto'];
    $prezzo $_POST['prezzo'];
    $venduto $_POST['venduto'];

    if(
    $submit)
    {    
        
    mysql_query("INSERT INTO ".$_GET['lista']." VALUES('$cod', '$oggetto', '$prezzo', '$venduto')") or die(mysql_error());
        
        echo 
    'Oggetto aggiunto alla lista.';


    if(isset(
    $_POST))
    {
       
    $query mysql_query('SELECT * FROM '.$_POST['lista'].'') or die(mysql_error());

       echo 
    '<ul class="lista">[*]CODICE
        [*]OGGETTO
        [*]PREZZO
        [*]VENDUTO
            [/list]'
    ;
          
       while (
    $result mysql_fetch_array($query))
       { 
          
    $cod $result['COD'];
          
    $oggetto $result['OGGETTO'];
          
    $prezzo $result['PREZZO'];
          
    $venduto $result['VENDUTO'];
            
          echo 
    '<table>
                 <tr>
                  <td>'
    .$cod.'</td>

                  <td>'
    .$oggetto.'</td>
     
                    <td>'
    .$prezzo.'</td>
                  <td>'
    .$venduto.'</td>
                 </tr>
                </table>'
    ;
       }
    }

    echo 
    '<form action="lista_nozze.php?lista='.$_POST['lista'].'" method="post">

           



           <div>Codice:<span>&nbsp&nbsp<input type="text" name="cod"></span>
           <span>Oggetto:&nbsp&nbsp<input type="text" name="oggetto"></span>
           <span>Prezzo:&nbsp&nbsp<input type="text" name="prezzo"></span>
           <span>Venduto:&nbsp&nbsp<input type="text" name="venduto"></span>
           <span><input type="hidden" name="submit" value="1">
                 <input type="submit" value="Aggiungi"></span></div>
                 
          </form>'
    ;

    ?>
    funzionava tutto bene, quando aggiungevo un nuovo oggetto non aggiungeva lo stesso precedente...ho passato tutto tramite il metodo post ed ora mi da quest'errore:
    You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 1.
    Inoltre non esce il nome della lista in cui mi trovo...in pratica avevo riscontrato prima questo prolblema quando non inserivo l'url in action correttamente...avete qualche soluzione?

  5. #5
    Utente di HTML.it
    Registrato dal
    Jun 2009
    Messaggi
    92
    quel get nel primo mysql_query è un post...scusate...

  6. #6
    prova questo codice:

    Codice PHP:
    <?php 
    include('connessione.php');

    $lista='';
    if(isset(
    $_POST))
    {
    $lista=$_POST['lista'];
    $cod $_POST['cod'];
    $oggetto $_POST['oggetto'];
    $prezzo $_POST['prezzo'];
    $venduto $_POST['venduto'];
    $query mysql_query("INSERT INTO ".$_GET['lista']." VALUES('$cod', '$oggetto', '$prezzo', '$venduto')") or die(mysql_error());
    if (
    $query) echo 'Oggetto aggiunto alla lista.';
    }
    else
    {
    $lista=$_GET['lista'];
    }

    echo 
    '<div class="titolo">Lista '.$lista.'</div>';

    $query mysql_query("SELECT * FROM '".$lista.'"') or die(mysql_error());

       echo 
    '<ul class="lista">[*]CODICE[*]OGGETTO[*]PREZZO[*]VENDUTO[/list]';
             
       while (
    $result mysql_fetch_array($query))
       {
          
    $cod $result['COD'];
          
    $oggetto $result['OGGETTO'];
          
    $prezzo $result['PREZZO'];
          
    $venduto $result['VENDUTO'];
            
          echo 
    '<table>
                 <tr>
                  <td>'
    .$cod.'</td>

                  <td>'
    .$oggetto.'</td>

                    <td>'
    .$prezzo.'</td>
                  <td>'
    .$venduto.'</td>
                 </tr>
                </table>'
    ;
       }

    echo 
    '<form action="lista_nozze.php" method="post">
           



           <div>Codice:<span>&nbsp&nbsp<input type="text" name="cod"></span>
           <span>Oggetto:&nbsp&nbsp<input type="text" name="oggetto"></span>
           <span>Prezzo:&nbsp&nbsp<input type="text" name="prezzo"></span>
           <span>Venduto:&nbsp&nbsp<input type="text" name="venduto"></span>
           <span><input type="hidden" name="submit" value="1">'

           
    //aggiungi campo hidden
          //non puoi passare il valore di lista in post usando ulrquery come faresti in get
    echo '<input type="hidden" name="lista" value="'.$lista.'">
            <input type="submit" value="Aggiungi"></span></div>            
            </form>'
    ;


    ?>
    eventualmente puoi provare questa variante (provare non costa niente)
    per vedere come si conporta dopo il refresh e dopo il submit

    Codice PHP:
    echo '<form action="lista_nozze.php?lista='.$lista.'" method="post"> 
    al posto di echo '<form action="lista_nozze.php" method="post">

  7. #7
    Utente di HTML.it
    Registrato dal
    Jun 2009
    Messaggi
    92
    mi da quest'errore:

    Incorrect integer value: '' for column 'COD' at row 1

    com'è possibile? non c'è nessun valore nella tabella...

  8. #8
    Codice PHP:
    $query mysql_query("INSERT INTO ".$_GET['lista']." VALUES('$cod', '$oggetto', '$prezzo', '$venduto')") or die(mysql_error()); 
    va sostituito con
    Codice PHP:
    $query mysql_query("INSERT INTO ".$_GET['lista']." VALUES($cod, '$oggetto', '$prezzo', '$venduto')") or die(mysql_error()); 
    se cod e' numerico nella tabella mysql la query deve essere costruita senza gli apici

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.