Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 19
  1. #1
    Utente di HTML.it
    Registrato dal
    Sep 2005
    Messaggi
    195

    Fast Question: Ricavare una variabile

    Domanda semplice (per voi) e veloce.

    Ho due tabelle. La prima si chiama "prodotti" la seconda si chiama "quotazioni_db".
    All'interno di "quotazioni_db" ho una colonna che si chiama "db". Nella colonna che si chiama "db" ho il valore 'prodotti'.
    Questo mi serve affinchè in una pagina che si chiama "quotazioni_admin.php" mi visualizzi i valori della tabella che voglio io (esempio: quotazioni_admin.php?db=prodotti) (variabile: quotazioni_admin.php?db=$db).

    In questa pagina ci sono dei campi di testo con tutti i dati da modificare. Cliccando su salva dovrebbe aggiornare i dati nella tabella prodotti e riportarti alla stessa pagina in cui eri.

    Codice PHP:
     <?php

    if (isset($_POST['nome'])) {
      foreach (
    $_POST['nome'] as $id => $nome) {
        
    $res1 mysql_query("UPDATE $db SET nome = $nome WHERE id = $id") or die (mysql_error());
      }
    }

    if (isset(
    $_POST['rarita'])) {
      foreach (
    $_POST['rarita'] as $id => $rarita) {
        
    $res2 mysql_query("UPDATE $db SET rarita = $rarita WHERE id = $id") or die (mysql_error());
      }
    }

    if (isset(
    $_POST['valore'])) {
      foreach (
    $_POST['valore'] as $id => $valore) {
        
    $res3 mysql_query("UPDATE $db SET valore = $valore WHERE id = $id") or die (mysql_error());
      }
    }
    ?>
    Quando però vado a cliccare su salva mi da questo errore:

    Table 'nomedatabase_db.$db' doesn't exist

    Come faccio a ricavare quindi la variabile $db ??

  2. #2
    Nella query racchiudi $db tra le parentesi graffe, se $db lo prendi dalla query string ti conviene comunque cambiare approccio se non vuoi rischiarti il db


  3. #3
    Non si capisce nolto quello che vuoi fare..

    Se passi un parametro con "quotazioni_admin.php?db=prodotti" nella pagina che riceve il valore prodotti lo devi riprendere con $_GET['db']; quindi dovresti fare ad esempio:

    Codice PHP:
    $nome $_GET['db'];

    $res1 mysql_query("UPDATE $nome_tabella SET nome = $nome WHERE [b]id = $id[/b]") or die (mysql_error()); 
    La parte in grassetto non ha senso se non passi un valore di $id..

    Prova a spiegarti meglio!!
    Questa volta, più che un voto.. è favoreggiamento.

  4. #4
    Utente di HTML.it
    Registrato dal
    Sep 2005
    Messaggi
    195
    Giusto avete ragione non mi sono spiegato (anche perchè il GET DB l'avevo già tentato ma non ha funzionato).
    Allora. Ho in realtà 5 Tabelle.

    1 E' una tabella che contiene i valori "Nome" e "db"
    (Es. 'Quotazioni 1', 'db_quotazioni1')
    (Es. 'Quotazioni 2', 'db_quotazioni2')
    2 E' una tabella che contiene i valori delle quotazioni (numero, rarità ecc..) e si chiama db_quotazioni1
    ecc..


    Insomma ho una tabella che racchiude tutte le altre e mi serve per poter gestire appunto una pagina per tutto. Nella pagina mi compaiono quindi tutti i valori della tabella (una che scelgo tramite ?db=db_quotazioni1 ad esempio). La tabella che dovrà essere aggiornata deve essere db_quotazioni1, ma il nome della tabella lo deve ricavare dal campo 'db' della prima tabella.

    Meglio?

    [ps. cosa intendevi con "rischiarti il db"?]

  5. #5
    Codice PHP:
    <?php

    $db 
    = ($_GET['db']) ? $_GET['db'] : 'tabella';

    if (isset(
    $_POST['nome'])) {
      foreach (
    $_POST['nome'] as $id => $nome) {
        
    $res1 mysql_query("UPDATE {$db} SET nome = {$nome} WHERE id = {$id}") or die (mysql_error());
      }
    }

    if (isset(
    $_POST['rarita'])) {
      foreach (
    $_POST['rarita'] as $id => $rarita) {
        
    $res2 mysql_query("UPDATE {$db} SET rarita = {$rarita} WHERE id = {$id}") or die (mysql_error());
      }
    }

    if (isset(
    $_POST['valore'])) {
      foreach (
    $_POST['valore'] as $id => $valore) {
        
    $res3 mysql_query("UPDATE {$db} SET valore = {$valore} WHERE id = {$id}") or die (mysql_error());
      }
    }
    ?>
    Prova cosi ed eventualmente di che errore ti da, per quanto riguarda la sicurezza fai una ricerca per "mysql injection"

  6. #6
    Utente di HTML.it
    Registrato dal
    Sep 2005
    Messaggi
    195
    Errore:

    Codice PHP:
    You have an error in your SQL syntax near 'WHERE id = 2' at line 1 

    Codice Completo:

    Codice PHP:

    <td width="455" height="107" valign="top">
                          
                          <?php

    $db 
    = ($_GET['db']) ? $_GET['db'] : 'quotazioni_db';

    if (isset(
    $_POST['nome'])) {
      foreach (
    $_POST['nome'] as $id => $nome) {
        
    $res1 mysql_query("UPDATE {$db} SET nome = {$nome} WHERE id = {$id}") or die (mysql_error());
      }
    }

    if (isset(
    $_POST['rarita'])) {
      foreach (
    $_POST['rarita'] as $id => $rarita) {
        
    $res2 mysql_query("UPDATE {$db} SET rarita = {$rarita} WHERE id = {$id}") or die (mysql_error());
      }
    }

    if (isset(
    $_POST['valore'])) {
      foreach (
    $_POST['valore'] as $id => $valore) {
        
    $res3 mysql_query("UPDATE {$db} SET valore = {$valore} WHERE id = {$id}") or die (mysql_error());
      }
    }
    ?> 
                          <form action="<?php echo "quotazioni_admin.php?db=$db"?>" method="post">
      <table width="451" cellpadding="1" cellspacing="1" bgcolor="#EEEEEE">
        <tr bgcolor="#000000" class="Didascalia01_bold_bianco">
          <th width="9%" align="left" class="Sottotitolo01_nero"><div align="left" class="Didascalia01_bold_bianco">Numero</div></th>
          <th width="75%" align="left" class="Sottotitolo01_nero"><div align="left" class="Didascalia01_bold_bianco">Nome</div></th>
          <th width="8%" align="left" class="Sottotitolo01_nero"><div align="left" class="Didascalia01_bold_bianco">Rarit&agrave;</div></th>
          <th width="8%" align="left" class="Sottotitolo01_nero"><div align="right" class="Didascalia01_bold_bianco">Prezzo</div></th>
        </tr>
      <?php
    //ricavo i dati del database
    $db $_GET['db'];
    $res mysql_query("SELECT * FROM $db") or die (mysql_error());


    while (
    $elenco mysql_fetch_assoc($res)) {
    ?>
      <tr>
        <td height="24" align="left" class="Corpotesto01_norm_nero"><?php echo $elenco['id']; ?>
          <div align="center"></div>
          <div align="center"></div>
          <div align="center"></div></td>
        <td align="left" class="Corpotesto01_norm_nero"><input name="nome[<?php echo $elenco['id']; ?>" type="text" value="<?php echo $elenco['nome']; ?>" size="35" /></td>
        <td align="left" class="Corpotesto01_norm_nero"><div align="center">
          <input name="rarita[<?php echo $elenco['id']; ?>" type="text" value="<?php echo $elenco['rarita']; ?>" size="3" maxlength="3" />
        </div></td>
        <td align="left" class="Corpotesto01_norm_nero"><div align="center">
          <input name="valore[<?php echo $elenco['id']; ?>]" type="text" value="<?php echo $elenco['valore']; ?>" size="4" />
        </div></td>
      </tr>
      <?php ?>
      </table>
      <input type="submit" value="Salva">
                          </form>

  7. #7
    Utente di HTML.it
    Registrato dal
    Sep 2005
    Messaggi
    195
    Up.

  8. #8
    Posta solo la linea 1... di solito è un problema di apici..
    Questa volta, più che un voto.. è favoreggiamento.

  9. #9
    Utente di HTML.it
    Registrato dal
    Sep 2005
    Messaggi
    195
    ho provato ad isolare il file action:

    Codice PHP:
    <?

        session_start
    ();
        include 
    "../vars.php";
        
    $sqlconnmysql_connect($dbhost,$dbutente,$dbpass);
        
    mysql_select_db ($database$sqlconn);

    $db $_GET['db'];

    if (isset(
    $_POST['nome'])) {
      foreach (
    $_POST['nome'] as $id => $nome) {
        
    $res1 mysql_query("UPDATE $db SET nome = '$nome' WHERE id = '$id'") or die (mysql_error());
      }
    }

    if (isset(
    $_POST['rarita'])) {
      foreach (
    $_POST['rarita'] as $id => $rarita) {
        
    $res2 mysql_query("UPDATE $db SET rarita = '$rarita' WHERE id = '$id'") or die (mysql_error());
      }
    }

    if (isset(
    $_POST['valore'])) {
      foreach (
    $_POST['valore'] as $id => $valore) {
        
    $res3 mysql_query("UPDATE $db SET valore = '$valore' WHERE id = '$id'") or die (mysql_error());
      }


        
        
        
    header ("Location:quotazioni_admin.php?db=$db");
         

        
    ?>
    Ma sempre:

    You have an error in your SQL syntax near 'WHERE id = 2' at line 1
    Come mai?

  10. #10
    Per cominciare i valori numerici non necessitano di apici, come $id ad esempio, poi ti conviene stampare il testo della query per vedere se le variabili vengono tutte sostituite dai rispettivi valori
    Codice PHP:
    <?php

        session_start
    ();
        include 
    "../vars.php";
        
    $sqlconnmysql_connect($dbhost,$dbutente,$dbpass);
        
    mysql_select_db ($database$sqlconn);

    $db $_GET['db'];

    if (isset(
    $_POST['nome'])) {
      foreach (
    $_POST['nome'] as $id => $nome) {
        echo 
    "UPDATE {$db} SET nome = '{$nome}' WHERE id = $id 
    "
    ;
      }
    }
    ?>

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.