Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 18

Discussione: sommare inserimenti

  1. #1

    sommare inserimenti

    salve a tutti. Alcunoi giorni fa brazie all'aiuto di boots sono riuscito a realizare questo script:

    Codice PHP:
    <?PHP
    $query 
    "SELECT * FROM candidati WHERE numero_lista = $_POST[num_lista]";       
        
    ?>      
    <table width="950" cellpadding="1" cellspacing="1">
    <tr>
    <?php
    $action 
    'preferenze_salva'.$_POST['num_lista'].'.php';
    print 
    $action
    ?>
    <form action="<?php print $action ?>" method="post" name="form" id="form" onSubmit="return calcola(this);" >
    <input type=hidden name="sez" id="sez" value="<?php print $_POST['sez']; ?>">
    <?php
    $result 
    mysql_query($query)or die(mysql_error()); 
    while (
    $row mysql_fetch_assoc($result))
    {

    ?>
    <td width="2%" valign="center" class="pref_bordi" >
    <input type="text" name="data[<?php echo $row['id'?>][num_cand]" id="num_cand" size="5" align="right" value="<?php print $row['numero_cand']; ?>">
    </td>
    <td width="30%" valign="center" class="pref_bordi" >
    <input type="text" name="data[<?php echo $row['id'?>][candidato]" size="70" value="<?php print $row['candidato']; ?>">
    </td>
    <td class="pref_bordi" align="left" width="10">
    <input type="text" size="6" maxlength="3" name="data[<?php echo $row['id'?>][voti]" id="voti" > 
    </td>
    <td>
    <input type="text" hidden name="data[<?php echo $row['id'?>][numero_lista]" size="70" value="<?php print $row['numero_lista']; ?>">
    adesso avrei la necessità di visualizzare il totale deivoti inreriti, in modo da verificare prima del salvataggio dei dati, l'esattezza degli stessi.
    In effetti mi server vedere, dopo l'inseriemento dell'ultimo dato il totale degli stessi.
    ciao e grazie

  2. #2
    Utente di HTML.it L'avatar di boots
    Registrato dal
    Oct 2012
    Messaggi
    1,626
    potresti usare una "pagina di mezzo", salvando i dati in sessione:
    La form della tua pagina la fai portare a verifica.php

    Codice PHP:
    <?php
    start_session
    ();
    $count 0;
    foreach(
    $_POST['data'] as $row){
       
    $count += $row['voti'];
    }
    $_SESSION['votazione']= $_POST['data'];
    ?>

    il Totale dei voti è : <?php echo $count ?>

    Se è corretto [url="preferenze_salva.php"]salva[/url]
    Torna <a href=...>indietro</a>
    Nel salva_preferenze.php, invece di prendere i dati da $_POST li prendi dalla sessione.

    In alternativa, potresti mettere il campo voti totali che ti aspetti direttamente della tua form, insieme ai voti dei candidati.
    nella pagina salva_preferenze, usi le transazioni mysql:

    Codice PHP:
    mysql_query("START TRANSACTION");
    $count 0;
    foreach(
    $_POST['data'] as $row){
       
    $count += $row['voti'];
       
    mysql_query("INSERT ....");
    }
    if(
    $count == $_POST['voti_totali']){
       
    mysql_query("COMMIT");
       echo 
    "Tutto Ok";
    }else{
       
    mysql_query("ROLLBACK");
       echo 
    "I voti inseriti non corrispondono a quelli totali"


  3. #3
    non ho capito come salvare i dati.

  4. #4
    Utente di HTML.it L'avatar di boots
    Registrato dal
    Oct 2012
    Messaggi
    1,626
    Non ho capito, cosa non hai capito

    O usi una pagina di mezzo:
    form -> pagina verifica (dove controlli solo la somma dei voti e salvi i dati in sessione) -> pagina preferenze_salva (dove, a posto di usare $_POST['data'], usi $_SESSION['votazione'])

    Oppure usi le transazioni

    Nel form aggiungi anche il totale dei voti -> pagina preferenze_salva dove inizi la transazione, fai gli inserimenti nel db. Se il totale dei voti corrisponde fai il commit altrimenti rollback (annulli gli inserimenti)

  5. #5
    in effetti quello con la pagina di mezzo fino a contarmi i vori funziona e che con riesco a farli salvare.
    lo script salva l'ho fatto così:
    Codice PHP:
    foreach($_SESSION['votazione'] as $row){ ecc
    ma mi da in seguente errore:
    Notice: Undefined variable: _SESSION in C:\xampp\htdocs\avserver\comunali2013\preferenze\p referenze_salva3.php on line 13

  6. #6
    Utente di HTML.it L'avatar di boots
    Registrato dal
    Oct 2012
    Messaggi
    1,626
    prima di usare $_SESSION metti session_start(); ?

    PS: ho appena visto che nel primo post ho sbagliato: non start_session(), ma session_start()

  7. #7
    Mi ero accorto della distrazione e avevo già messo session_start ho fatto come mi hai detto ma mi esce per 32 voltre (il numero dei voti) la seguente riga:
    Notice: Undefined index: sez in C:\xampp\htdocs\avserver\comunali2013\preferenze\p referenze_salva3.php on line 18

    scusami se ti rompo.

  8. #8
    Utente di HTML.it L'avatar di boots
    Registrato dal
    Oct 2012
    Messaggi
    1,626
    Posti il codice della pagina di verifica e quella di salvataggio.

    Comunque io nel codice che ti ho postato salvo solo l'array num_candidato-candidato-voti (data, per capirci). Ho visto che hai anche un campo hidden sez, chiaramente devi salvare anche quello.

    Codice PHP:
    //verifica.php
    <?php 
    session_start
    (); 
    $count 0
    foreach(
    $_POST['data'] as $row){ 
       
    $count += $row['voti']; 

    $_SESSION['votazione']= array('sez'=>$_POST['sez'], 'data'=>$_POST['data']); 
    ?> 
    ...
    Codice PHP:
    //preferenze_salva.php
    session_start();
    $sez $_SESSION['votazione']['sez'];
    $data =  $_SESSION['votazione']['data'];
    ...
    // fai il salvataggio
    ...
    unset(
    $_SESSION['votazione']); 

  9. #9
    Fatto in questo modo:
    PAGINA SALVA
    Codice PHP:
    <?php
    session_start
    ();
    $sez $_SESSION['votazione']['sez'];
    $data =  $_SESSION['votazione']['data'];
    ?>
    <?php
    include("../include/top_foot.inc.php"); 
    ?>
    </head>
    <?php
    foreach($_SESSION['votazione'] as $row){
       
    $query "INSERT INTO pref03 (sez, numero_cand, candidato, numero_lista, voti)  
                    VALUES ('
    {$_POST['sez']}', '{$row['num_cand']}', '{$row['candidato']}', '{$row['numero_lista']}',  '{$row['voti']}')";
       
    mysql_query($query);
    }
    ?>                       
    foreach($_SESSION['votazione'] as $row){
       $query = "INSERT INTO pref03 (sez, numero_cand, candidato, numero_lista, voti)  
                    VALUES ('{$_POST['sez']}', '{$row['num_cand']}', '{$row['candidato']}', '{$row['numero_lista']}',  '{$row['voti']}')";
       mysql_query($query);
    }

    //header("Location: preferenze_cerca.php");
    //exit;
    ?>
    PAGINA VERIFICA
    Codice PHP:
    <?php
    session_start
    ();
    $count 0;
    foreach(
    $_POST['data'] as $row){
       
    $count += $row['voti'];
    }
    $_SESSION['votazione']= array('sez'=>$_POST['sez'], 'data'=>$_POST['data']);
    ?>

    il Totale dei voti è : <?php echo $count ?>

    <input type="hidden" name="data[<?php echo $row['id'?>][numero_lista]" size="70" value="<?php print $row['numero_lista']; ?>">......
    mi da i seguenti errori

    Notice: Undefined index: sez in line 22

    Warning: Illegal string offset 'num_cand' in line 22

    Warning: Illegal string offset 'candidato' in line 22

    Warning: Illegal string offset 'numero_lista' in line 22

    Warning: Illegal string offset 'voti' in line 22

    Notice: Undefined index: sez in line 22

    Notice: Undefined index: num_cand in line 22

    Notice: Undefined index: candidato in line 22

    Notice: Undefined index: numero_lista in line 22

    Notice: Undefined index: voti in line 22

  10. #10
    Utente di HTML.it L'avatar di boots
    Registrato dal
    Oct 2012
    Messaggi
    1,626
    Se adesso cambi $_SESSION['votazione'] devi cambiare anche il codice che lo usa

    PAGINA SALVA
    Codice PHP:
    <?php 
    session_start
    (); 
    $sez $_SESSION['votazione']['sez']; 
    $data =  $_SESSION['votazione']['data']; 

    ....
    // foreach($_SESSION['votazione'] as $row){  diventa
    foreach($data as $row){ 
       
    $query "INSERT INTO pref03 (sez, numero_cand, candidato, numero_lista, voti)   
                     VALUES ('
    {$sez}'  ....";// non c'è più $_POST, ma $sez
       
    ....
    ?>
    nella pagina verifica, cos'è quel input hidden?

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.