Visualizzazione risultati 1 fino 9 di 9

Discussione: Doppia query da form (era "Query")

  1. #1
    Guest

    Predefinito Doppia query da form (era "Query")

    Ciao Debug, torno a disturbarti........
    pian pianino sto procedendo con il mio lavoretto ( e c'è davvero soddisfazione partire dal nulla e iniziare a vedere che alcune cose iniziano a funzionare )
    Il tutto è finalizzato a creare un database per un centro sportivo.
    Ti spiego qual'è il mio problema attuale:
    ho creato un form di inserimento dati per un nuovo iscritto dove bisogna inserire Nome, Cognome, Data di nascita, Indirizzo, recapito telefonico, per la tabella anagrafica e ad oggi riesco a recuperarla e visualizzarla su una pagina con la sua griglia precisa. Ora ho aggiunto nella pagina del form, altri moduli da riempire per la parte relativa all'iscrizione, data di iscrizione, data di scadenza, durata dell'abbonamento, costo.
    Come faccio a fare in modo che l'intero form nel momento dell'invio mandi i dati anagrafici alla tabella anagrafica e quelli relativi alla tipologia di abbonamento alla tabella Iscrizioni?

    Se puoi darmi un esempio di 2 query diverse su una stessa pagina te ne sarei grato.

    Ciau Ciau.

  2. #2
    Guest

    Predefinito

    Ma guarda che questa non è la mia posta personale, è un forum pubblico!

    Tornando alla domanda, tutto ciò che invii tramite form è contenuto nell'array $_POST (sempre che il form utilizzi questo metodo di invio).

    Quindi nella pagina ricevente puoi fare quante query vuoi, ma anche altro, c'è solo la fantasia a limitarti.



    Ciao!

  3. #3
    Guest

    Predefinito

    Ciao a tutti, dopo 2 giorni di inutili tentativi, torno a chiedere il vostro aiuto.
    Ho ridotto il form da 10 a 2 campi per evitare di postarvi un sacco di righe inutili.
    Attualmente le 2 tipologie di dati che trasmetto al db ( nome e costo ) vengono inviati ad un unica tabella db nominata abbonamento.
    Ora ho creato nel db 2 tabelle, una è nominata abbonamento e vorrei inviargli il campo costo,
    l'altra nominata iscritti dove vorrei inviargli il campo nome, riuscite a darmi un indicazione su come dovrei variare l'attuale codice che riporto in seguito, grazie in anticipo a chi ha voglia di darmi una mano.....
    Codice PHP:
    <html>
    <head>
    <title>Area protetta</title></head>
    <body>
    <center><table><img src="Immaginetestata.jpg" width="1034" height="168"></table></center><br>

    <?php
    if ($_COOKIE["loginadmin"] == "OK")
    {
    ?>
    <center><table><h2>Inserimento nuovi iscritti</h2></table></center><br />

    <?php
    }
    else
    {
    ?>
    <p>Accesso negato!</p><br />
    <p>Effettua il <a href="loginadmin.php">Login</a></p>
    <?php
    }
    ?>
    <?php
    if($_POST) {
    inserisci_record();
    }
    else {
    mostra_form();
    }

    function
    inserisci_record()
    {
    // richiamo il file di configurazione
    require 'config.php';

    // richiamo lo script responsabile della connessione a MySQL
    require 'connect.php';

    // recupero i campi di tipo "stringa"
    $nome = trim($_POST['nome']);
    $costo = trim($_POST['costo']);

    // verifico se devo eliminare gli slash inseriti automaticamente da PHP
    if(get_magic_quotes_gpc())
    {
    $nome = stripslashes($nome);
    $costo = stripslashes($costo);

    }

    $nome = mysql_real_escape_string($nome);
    $costo = mysql_real_escape_string($costo);

    // verifico la presenza dei campi obbligatori
    if(!$nome)
    {
    $messaggio = urlencode("Non hai inserito il nome");
    header('location: '.$_SERVER['PHP_SELF'].'?msg='.$messaggio);
    exit;
    }

    // preparo la query
    $query = "INSERT INTO abbonamento (nome,costo)
    VALUES ('
    $nome','$costo')";

    // invio la query
    $result = mysql_query($query);

    // controllo l'esito
    if (!$result) {
    die(
    "Errore nella query $query: " . mysql_error());
    }

    // recupero l'id autoincrement generato da MySQL per il nuovorecord inserito
    $id_inserito = mysql_insert_id();

    // chiudo la connessione a MySQL
    mysql_close();

    $messaggio = urlencode("Inserimento effettuato con successo (ID=$id_inserito)");
    header('location: '.$_SERVER['PHP_SELF'].'?msg='.$messaggio);
    }

    function
    mostra_form()
    {
    // mostro un eventuale messaggio
    if(isset($_GET['msg']))
    echo
    '<b>'.htmlentities($_GET['msg']).'</b><br /><br />';
    ?>
    <center><table><form name="form_registrazione" method="post" action="">
    <table width="412">
    <tr>
    <th width="122" scope="col">Nome:</th>
    <th width="144" scope="col"><input name="nome" type="text" /></th>
    <th width="130" scope="col">&nbsp;</th>
    </tr>

    <tr>
    <th scope="row">Costo</th>
    <td><input name="costo" type="text" /></td>
    <td>&nbsp;</td>
    </tr>
    </table>
    </p>

    <table width="383">
    <tr>
    <th width="11" scope="col">&nbsp;</th>
    <th width="337" scope="col"><input name="invia" type="submit" value="Invia" />&nbsp;</th>
    <th width="19" scope="col">&nbsp;</th>
    </tr>
    <tr>
    <th scope="row">&nbsp;</th>
    <td><h2>Visualizza gli Iscritti,<a href="anagrafica.php">clicca qui</a></h2>&nbsp;</td>
    <td>&nbsp;</td>
    </tr>
    <tr>
    <th scope="row">&nbsp;</th>
    <td><p>Effettua il <a href="logoutadmin.php">Logout</a></p>&nbsp;</td>
    <td>&nbsp;</td>
    </tr>
    </table>
    <?php
    }
    ?>

    </body>
    </html>
    Ultima modifica di debug : 21-04-2009 alle ore 23.56.52 Motivo: aggiunta tag PHP

  4. #4
    Guest

    Predefinito

    Cosa ti impedisce di fare due query al posto di quella attuale?

    Codice PHP:
    // preparo la query
    $query = "INSERT INTO abbonamento (costo)
    VALUES ('
    $costo')";

    // invio la query
    $result = mysql_query($query);

    // preparo la SECONDA query
    $query2 = "INSERT INTO iscritti (nome)
    VALUES ('
    $nome')";

    // invio la query
    $result2 = mysql_query($query2);

    Ciao!

  5. #5
    Guest

    Predefinito

    ahahahahah nulla!!!
    E ho anche provato.........avevo nominato $query1 e $query2 ma non avevo inserito il $result2,
    è incredibile perdi le ore a pensare a come risolvere un problema poi per stanchezza e distrazione fai le stupidate più assurde!!! e questa era anche bella visibile, non era un apice o una virgola........va beh, grazie mille!!!!

    EDIT: Ciao e grazie ancora, ora funziona!

    Ora ho un ultimo quesito ( ultimo per ora ahahahah ),
    lo script che vedi qui sotto è quello relativo al recupero dei dati,
    deve essere per forza cosi lungo o esiste un modo per "compattare"
    Codice PHP:
    <?php
    // richiamo il file di configurazione
    require 'config.php';

    // richiamo lo script responsabile della connessione a MySQL
    require 'connect.php';

    // preparo la query
    $query = "SELECT costo FROM abbonamento";

    // invio la query
    $result = mysql_query($query);

    // controllo l'esito
    if (!$result) {
    die(
    "Errore nella query $query: " . mysql_error());
    }


    // preparo la query2
    $query2 = "SELECT nome FROM iscritti";

    // invio la query2
    $result2 = mysql_query($query2);

    // controllo l'esito
    if (!$result2) {
    die(
    "Errore nella query $query2: " . mysql_error());
    }

    echo
    '
    <table border="1">
    <tr>
    <th>NOME</th>
    <th>COSTO</th>
    </tr>'
    ;

    while (
    $row = mysql_fetch_assoc($result2)) {
    $nome = htmlentities($row['nome']);
    }
    while (
    $row = mysql_fetch_assoc($result)) {
    $costo = htmlentities($row['costo']);
    echo
    "<tr>
    <td>
    $nome</td>
    <td>
    $costo</td>
    </tr>"
    ;
    }

    echo
    '</table>';

    // libero la memoria di PHP occupata dai record estratti con la SELECT
    mysql_free_result($result);
    mysql_free_result($result2);
    // chiudo la connessione a MySQL
    mysql_close();
    ?>
    Ho provato ad esempio una cosa di questo tipo:
    Codice PHP:
    $dati = array('nome','costo');

    while (
    $row = mysql_fetch_assoc($result,$rsult2)) {
    $dati = htmlentities($row['nome','costo']);
    ma non funzica...... questo perchè non è possibile, o ho sbagliato la sintassi?

    Ciao e grazie
    Ultima modifica di debug : 22-04-2009 alle ore 08.52.32 Motivo: Usa i tag appositi quando posti del codice!

  6. #6
    Guest

    Predefinito

    Codice PHP:
    <?php
    // richiamo il file di configurazione
    require 'config.php';
    // richiamo lo script responsabile della connessione a MySQL
    require 'connect.php';

    // preparo la query
    $query = "SELECT abbonamento.costo, iscritti.nome FROM abbonamento, iscritti";

    // invio la query
    $result = mysql_query($query) or die("Errore nella query $query: " . mysql_error());

    echo
    '
    <table border="1">
    <tr>
    <th>NOME</th>
    <th>COSTO</th>
    </tr>'
    ;

    while (
    $row = mysql_fetch_assoc($result2)) {
    $nome = htmlentities($row['nome']);
    $costo = htmlentities($row['costo']);

    echo
    "<tr>
    <td>
    $nome</td>
    <td>
    $costo</td>
    </tr>"
    ;
    }

    echo
    '</table>';

    // libero la memoria di PHP occupata dai record estratti con la SELECT
    mysql_free_result($result);
    mysql_free_result($result2);
    ?>

    Ciao!

  7. #7
    Guest

    Predefinito

    Grazie mille gentilissimo!!

  8. #8
    Guest

    Predefinito

    Ciao, il fatto che anche a voi qualche errorino vi scappa mi consola molto........,
    recuperando i dati con la pagina compattata che mi hai inviato, mi dava un errore a riga 20 e 34,
    e intuitivamente o tolto il 2 (ancora inserito) in $result a riga 20
    while ($row = mysql_fetch_assoc($result2)) {

    ed ho cancellato la riga 34
    mysql_free_result($result2);
    e sembra funzioni......... però c'è un però........
    se inserisco un altro nominativo nel form mi raddoppia il valore,
    mi spiego meglio:
    a database vuoto inserisco Bruno nel nome e 2000 nel costo
    do il visualizza ed è tutto giusto, ma se poi inserisco Paola nel nome e 1500 nel costo,
    quando dò il visualizza mi mostra una tabella con 2 bruno (2000 e 1500) e due Paola (2000 e 1500).

    come mai? in teoria questa istruzione
    mysql_free_result($result);
    non dovrebbe cancellare i dati in memoria?

    Ciao e grazie in anticipo per la pazienza

    EDIT: Al momento sono solo riuscito a capire che la visualizzazione della tabella cambia in funzione di dove vengono poste le parentesi graffe, ma non riesco a venirne a una, aiutooooooo
    Ultima modifica di debug : 23-04-2009 alle ore 09.16.33

  9. #9
    Guest

    Predefinito

    Ciao a tutti,
    studia e ristudia ed alla fine...........EUREKA ho risolto.

    Non so quanti siano i novellini come me che popolano questo forum,
    e se il mio problema potrà mai presentarsi a qualcun altro.......
    tuttavia mi sento di voler condividere questa mia piccola vittoria,
    pertanto se vi capiterà mai di dovervi scontrare col problema da me sopra citato,
    io l'ho risolto così:

    $query = "SELECT nome, costo FROM iscritti, abbonamento WHERE (abbonamento.id_iscritto=iscritti.id_nome) and (id_iscritto>0)";

    dove alla chiave secondaria della tabella abbonamento ho assegnato l'uguaglianza con la chiave primaria autoincrement della tabella iscritti,
    indicando con la condizione AND che la chiave secondaria sia superiore a 0.

    Non sò se è il metodo giusto ma il tutto gira perfettamente.

    Ciau ciau

Regole di scrittura

  • Non puoi creare nuove discussioni
  • Non puoi rispondere ai messaggi
  • Non puoi inserire allegati.
  • Non puoi modificare i tuoi messaggi
  •