Visualizzazione dei risultati da 1 a 8 su 8
  1. #1

    Recuperare dati da un campo

    Salve a tutti,
    ho un nuovo problema (e non sarà l'ultimo sicuramente )
    Praticamente io ho un form contente un campo così:
    codice:
    echo "<form action='inserisci.php' method='post'";
    echo "<input type='number' min='1' max='99' autocomplete='off' name='quantita[]' value='{$row['quantita']}'/>"

    Praticamente ha come valore base {$row['quantita']} che vengono estratti da una taballa del database mysql! E fin qui tutto bene! Però se io volessi modificare il valore estratto dal database (essendo un campo di tipo input type=number) come faccio? Ogni qual volta eseguo il submit attraverso la pagina inserisci.php (per poter inserire i valori selezionati con le checkbox in un altra tabella) vengono estratti nuovamente i valori presenti nella prima tabella! ESEMPIO DEL CAMPO:
    https://imgur.com/ad0ddWy

    Posto il codice completo
    codice:
    
    echo "<form action='inserisci.php' method='post' enctype='application/x-www-form-urlencoded'>";
    echo "<table align='left' border='10' width='40%'";
    echo "<tr><th></th><th>Qnt</th><th>Prodotto</th><th>Term</th><th>Data</th></tr>";
    
    
    
    
        foreach ($pdo->query("SELECT * FROM tabella") as $row) {
        echo "<tr><td><input type='checkbox' name='selected[]' value='{$row['id']}'/><br /></td><td>
        <input type='number' min='1' max='99' autocomplete='off' name='quantita' value='{$row['quantita']}'/>
        </td><td>{$row['prodotto']}</td><td>{$row['terminale']}</td><td>{$row['data']}</td></tr>";
    }
    
    
    
    
    echo "</table>";
    ?> 
    
    
    
    
    <table width="500" border="10">
      <tr>
        <td width="987" align="center"><b>PRENOTAZIONE PRODOTTO</b></td>
      </tr>
      <tr>
        <td>
          <table width="633">
            <tr>
              <td width="500">Nome:</td>
                <td width="420" align="left"><input type="text" autocomplete="off" name="nome" size="70" onkeyup="maiuscola(this)"/>
              </td>
            </tr>
            <tr>
              <td width="500">Cognome:</td>
                <td width="420" align="left"><input type="text" autocomplete="off" name="cognome" size="70" onkeyup="maiuscola(this)"/>
              </td>
            </tr>
            <tr>
              <td>Numero di tel.:</td>
                <td width="420" align="left"><input type="text" step="any" size="20" autocomplete="off" min="1" name="numero"/>
              </td>
            </tr>
            <tr>
              <td>Note:</td>
                <td width="420" align="left"><input type="text" autocomplete="off" size="70" name="note" onkeyup="maiuscola(this)"/>
              </td>
            </tr>                                            
            <tr>
              <td></td>
        
        <td align="left"><input style="width:100px;" type="submit" value="Inserisci"/>
            </tr>
            </form>
          </table>
        </td>
      </tr>
    </table>
    inserisci.php
    codice:
        $nome = $_POST['nome'];
        $cognome = $_POST['cognome'];
        $quantita = $_POST['quantita'];
        $numero = $_POST['numero'];
        $note = $_POST['note'];
    Se faccio un print_r($quantita); ottengo l'array dei valori quantita della prima tabella
    Ultima modifica di supersqualo; 26-09-2017 a 20:54

  2. #2
    Moderatore di PHP L'avatar di Alhazred
    Registrato dal
    Oct 2003
    Messaggi
    12,445
    Quote Originariamente inviata da supersqualo Visualizza il messaggio
    ...
    Se faccio un print_r($quantita); ottengo l'array dei valori quantita della prima tabella
    Qual è la prima e quale la seconda tabella?

    P.S.: ad ogni iterazione del ciclo del foreach crei dei campi con attributo name uguale all'iterazione precedente, se ad esempio la query recupera 5 righe, ti ritrovi con 5 campi che si chiamano selected[] e 5 che si chiamano quiantita, questo fa si che solo il primo verrà preso in considerazione da HTML per essere inviato, i doppioni vengono ignorati.

  3. #3
    Non si modifica il post...devo ripostare
    Ultima modifica di supersqualo; 26-09-2017 a 21:50

  4. #4
    eliminate anche questo cosi mi spiego meglio!
    Ultima modifica di supersqualo; 26-09-2017 a 21:53

  5. #5
    Quote Originariamente inviata da Alhazred Visualizza il messaggio
    Qual è la prima e quale la seconda tabella?

    P.S.: ad ogni iterazione del ciclo del foreach crei dei campi con attributo name uguale all'iterazione precedente, se ad esempio la query recupera 5 righe, ti ritrovi con 5 campi che si chiamano selected[] e 5 che si chiamano quiantita, questo fa si che solo il primo verrà preso in considerazione da HTML per essere inviato, i doppioni vengono ignorati.
    Ciò che vorrei è solo riempire i form con i valori presenti nel database poi se vengono modificato o meno devono essere inseriti nella tabella1.
    Attualmente, così come è scritto il codice, vacendo print_r($quantita) ottengo l'insieme di tutte le quantita... e all'interno dell database (nella tabella1) mi trovo come valori quantita la dicitura Array (solo perchè l'array non è definito correttamente). Mentre a me interesserebbero solo i valori (parliamo sempre di quantita) spuntati!
    codice:
    	//Recupero variabili da pagina precedente
    $nome = $_POST['nome'];
    $cognome = $_POST['cognome'];
    $quantita = $_POST['quantita'];
    $numero = $_POST['numero'];
    $note = $_POST['note'];
    
    
    	// controlla se il checkbock è spuntato
    if(!empty($_POST['selected'])) { //Se ci sono spunte
        foreach($_POST['selected'] as $check) {
            $query =  $pdo->prepare("INSERT INTO tabella1 (nome, cognome, prodotto, quantita) VALUES ('$nome','$cognome', (SELECT prodotto FROM tabella WHERE ID=$check), '$quantita')");
    		$query->execute();
        }
    }else{ //Se non ci sono spunte
    	echo"Non è stato selezionato alcun prodotto.";
    }

  6. #6
    Hai ragione....adesso che mi ci hai fatto ragionare...ma non so come risolvere...come posso unire selected[] con quantita[]?
    Facendo un altro ciclo e un altra query tipo:
    codice:
    	foreach($_POST['quantita'] as $check1) {
            $query1 = $pdo->prepare("INSERT INTO tabella1 (quantita) VALUES ('$check1') WHERE ID=$check)");
    	$query1->execute();
    Ovviamente non si accorge del checkbox... e non posso usare WHERE ID=$check... Come posso fare?
    GRAZIE

  7. #7
    Ho trovato due post su stackoverflow che parlano del mio problema ma non sono riuscito ad adattarli!
    https://stackoverflow.com/questions/18365425/how-can-i-combine-values-of-checkboxes-with-values-of-text-in-php

    https://stackoverflow.com/questions/...ith-html-forms
    Qualcuno saprebbe aiutarmi? Grazie

  8. #8
    Ho risolto
    codice:
    $count = 0;foreach ($pdo->query("SELECT * FROM tabella") as $row) {
    
        <input type='checkbox' name='seleziona[{$count}]' value='{$row['id']}'/><br /></td><td>
        <input type='number' min='1' max='99' autocomplete='off' name='quantita[{$count}]' id='{$row['id']}' value='".substr($row['quantita'],3)."'/>
                $count++;
    }
    inserisci.php
    codice:
    foreach($_POST['seleziona'] as $k=>$v){
            $query = $pdo->prepare("INSERT INTO tabella1 (nome, cognome, prodotto, quantita) VALUES ('$nome','$cognome', (SELECT prodotto FROM tabella WHERE ID=$v), '{$_POST['quantita'][$k]}')");
            $query->execute();
        }

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.