Visualizzazione dei risultati da 1 a 9 su 9
  1. #1
    Utente di HTML.it
    Registrato dal
    Mar 2007
    Messaggi
    13

    Aggiornamento campi tabella

    Saluti a tutti!

    Ho qualche problema con l'aggiornamento di campi singoli di un database, ho idea di dove possa essere l'errore, ma non so come risolverlo, causa inesperienza (sono un novellino).

    Premesso che i campi delle tabelle dei database sono esatti (previo controllo e ricontrollo di sicurezza) la mia pagina di visualizzazione dei campi (dove l'errore temo sia al momento della href di modifica) è questa:

    ormad.php

    Codice PHP:
    <?php
    $DB_host     
    'xxxxx';
    $DB_user     'yyyyyyy';
    $DB_password 'zzzzzzzz';
    $DB_name     'wwwwww';

    $link mysql_connect($DB_host$DB_user$DB_password);
    if (!
    $link) {
        die (
    'Non riesco a connettermi: ' mysql_error());
    }

    $db_selected mysql_select_db($DB_name$link);
    if (!
    $db_selected) {
        die (
    "Errore nella selezione del database: " mysql_error());

    }
    session_start();
    $q=mysql_query("SELECT * FROM orders WHERE archived=0 ORDER BY vessel, datasped, supplier, orderno");



    if(isset(
    $_POST['delete'])){
        
    $arr=$_POST['delete'];
        foreach(
    $arr as $item){
            
    mysql_query("Delete From orders Where id=".$item);
        }
    }

    if(isset(
    $_POST['archive'])){
        
    $arr=$_POST['archive'];
        foreach(
    $arr as $item){
            
    mysql_query("Update orders Set archived=true Where id=".$item);
        }
    }




    ?>
    <html>
    <head>
    <link rel="stylesheet" type="text/css" href="stile.css"> 
    </head>
    <body>
    [img]eurotitle.png[/img]    
    <form method="post" action="">
    <table align="center">
         <thead>
         <th align=center>ID</th>
         <th align=center>DATE</th>
         <th align=center>VESSEL</th>
         <th align=center>ORDER N.</th>
         <th align=center>SUPPLIER</th>
         <th align=center>PIECES</th>
         <th align=center>WEIGHT</th>
         <th align=center>DATA SPEDIZIONE</th>
         <th align=center>LUOGO SPEDIZIONE</th>
         <th align=center>NOTE</th>
         <th align=center>AZIONI</th>
    <th align=center></th>
         </thead>
    <?php while ($row=mysql_fetch_array($q)) : ?>
    <tr>
    <td><?php echo $row['id']; ?></td>
    <td><?php echo $row['date']; ?></td>
    <td>[b]<?php echo $row['vessel']; ?>[/b]</td>
    <td><?php echo $row['orderno']; ?></td>
    <td><?php echo $row['supplier']; ?></td>
    <td><?php echo $row['pieces']; ?></td>
    <td><?php echo $row['peso']; ?></td>
    <td><?php echo $row['datasped']; ?></td>
    <td><?php echo $row['luogosped']; ?></td>
    <td><?php echo $row['note']; ?></td>
    <td><label>Elimina <input type="checkbox" name="delete[]" value="<?php echo $row['id']; ?>"></label></td>
    <td><label>Archivia <input type="checkbox" name="archive[]" value="<?php echo $row['id']; ?>"></label></td>
    <td>[url="modify.php?id=' . $row['id'] . '"]Modifica[/url]</td>
            
    </tr>
    <?php endwhile; ?>
    <tr>
                <td colspan="11" align="right"><input type="submit" value="Esegui Azioni"></td>
            </tr> 
    </table>
    </form>

    <?php
        $array2
    =$_SESSION['diritti_utente'];
        
    $q2=mysql_query("SELECT SUM(pieces) AS 'somma_pezzi' FROM orders WHERE archived=0");
        
    $q3=mysql_query("SELECT SUM(peso) AS 'somma_peso' FROM orders WHERE archived=0");    
        
    $r2=mysql_fetch_assoc($q2);
        
    $r3=mysql_fetch_assoc($q3);
        
    ?>


        <p align="center">TOTALI:</p>
        <p align="center">Totale quantita': <?php echo $r2['somma_pezzi']; ?></p>
        <p align="center">Totale peso: <?php echo $r3['somma_peso']; ?></p>
        
        

    [b][url="javascript:history.back()"]INDIETRO[/url][/b]</p>

        
    </body>
    </html>


    Il link di modifica porta a modify.php, creato così:
    Codice PHP:
    <?php
    $DB_host     
    'xxxxx';
    $DB_user     'yyyyyyy';
    $DB_password 'zzzzzzzz';
    $DB_name     'wwwwww';

    $link mysql_connect($DB_host$DB_user$DB_password);
    if (!
    $link) {
        die (
    'Non riesco a connettermi: ' mysql_error());
    }

    $db_selected mysql_select_db($DB_name$link);
    if (!
    $db_selected) {
        die (
    "Errore nella selezione del database: " mysql_error());

    }
    session_start();

    $sql "SELECT * FROM orders WHERE id='$_GET[id]'";
    $res mysql_query($sql);
    $row mysql_fetch_array($res);

    echo 
    '
    <form action="modify_data.php" method="POST">
    Vessel:

    <input type="text" name="vessel" value="' 
    $row['vessel'] . '" />


    Data:

    <input type="text" name="date" value="' 
    $row['date'] . '"/>


    N.Ordine:

    <input type="text" name="orderno" value="' 
    $row['orderno'] . '"/>


    Supplier:

    <input type="text" name="supplier" value="' 
    $row['supplier'] . '"/>


    Data Spedizione:

    <input type="text" name="datasped" value="' 
    $row['datasped'] . '"/>


    Luogo Spedizione:

    <input type="text" name="luogosped" value="' 
    $row['luogosped'] . '"/>


    N.Pezzi:

    <input type="text" name="pieces" value="' 
    $row['pieces'] . '"/>


    Peso:

    <input type="text" name="peso" value="' 
    $row['peso'] . '"/>


    Note:

    <input type="text" name="note" value="' 
    $row['note'] . '"/>


    <input type="hidden" value="' 
    $_GET['id'] . '" name="id" />
    <input type="submit" value="modifica" />
    </form>
    '
    ?>


    per terminare con l'update che è dentro modify_data.php:
    Codice PHP:
    <?php
    $DB_host     
    'xxxxx';
    $DB_user     'yyyyyyy';
    $DB_password 'zzzzzzzz';
    $DB_name     'wwwwww';

    $link mysql_connect($DB_host$DB_user$DB_password);
    if (!
    $link) {
        die (
    'Non riesco a connettermi: ' mysql_error());
    }

    $db_selected mysql_select_db($DB_name$link);
    if (!
    $db_selected) {
        die (
    "Errore nella selezione del database: " mysql_error());

    }
    session_start();

    $sql "UPDATE orders SET vessel='$_POST[vessel]', date='$_POST[date]', orderno='$_POST[orderno]', supplier='$_POST[supplier]', datasped='$_POST[datasped]', luogosped='$_POST[luogosped]', pieces='$_POST[pieces]', peso='$_POST[peso]', note='$_POST[note]' WHERE id='$_POST[id]'";

    mysql_query($sql);

    header("Location: ormad.php");
    ?>
    Il risultato è che la modifica del campo non avviene, ed ovviamente togliendo da WHERE in poi nella UPDATE, modifica tutti i campi della tabella.


    Come detto temo che il problema sia in ormad.php, probabilmente nell'href, ma non ho idea di come modificare per renderlo funzionante, maledetto niubbo che non sono altro.

    E' tutto, se manca qualcosa chiedete pure, lietissimo di dare altre informazioni chiarirvi le idee su questo caos

    Grazie in anticipo a chiunque mi possa aiutare!

  2. #2
    Per l'esattezza, di quale update stiamo parlando?

  3. #3
    Utente di HTML.it L'avatar di Ranma2
    Registrato dal
    Mar 2003
    Messaggi
    2,648
    Ci sono vari problemi, sicuramente con quello script avrai problemi di apici, quindi query che falliscono, avrai seri problemi di sql injection quindi di sicurezza. Inoltre cerca di trattare i campi come li hai definiti a database.

    Se l'id a database è un INT o similare, non passargli l'id come stringa.

    In ogni caso, per ovviare ogni dubbio sul problema, fai uno stamp della query incriminata e controlla come la stai popolando.

    Codice PHP:
    echo "UPDATE orders SET vessel='$_POST[vessel]', date='$_POST[date]', orderno='$_POST[orderno]', supplier='$_POST[supplier]', datasped='$_POST[datasped]', luogosped='$_POST[luogosped]', pieces='$_POST[pieces]', peso='$_POST[peso]', note='$_POST[note]' WHERE id='$_POST[id]'"

  4. #4
    Utente di HTML.it
    Registrato dal
    Mar 2007
    Messaggi
    13
    Originariamente inviato da fdisotto
    Per l'esattezza, di quale update stiamo parlando?
    Dell'update in modify_data.php

  5. #5
    Utente di HTML.it
    Registrato dal
    Mar 2007
    Messaggi
    13
    Originariamente inviato da Ranma2
    Ci sono vari problemi, sicuramente con quello script avrai problemi di apici, quindi query che falliscono, avrai seri problemi di sql injection quindi di sicurezza. Inoltre cerca di trattare i campi come li hai definiti a database.

    Se l'id a database è un INT o similare, non passargli l'id come stringa.

    In ogni caso, per ovviare ogni dubbio sul problema, fai uno stamp della query incriminata e controlla come la stai popolando.

    Codice PHP:
    echo "UPDATE orders SET vessel='$_POST[vessel]', date='$_POST[date]', orderno='$_POST[orderno]', supplier='$_POST[supplier]', datasped='$_POST[datasped]', luogosped='$_POST[luogosped]', pieces='$_POST[pieces]', peso='$_POST[peso]', note='$_POST[note]' WHERE id='$_POST[id]'"
    L'unica query che fallisce è l'update di modify_data.php

  6. #6
    Codice PHP:
    mysql_query($sql) or die(mysql_error(); 
    metti questo così se da problemi ti da anche l'errore.

  7. #7
    Utente di HTML.it
    Registrato dal
    Mar 2007
    Messaggi
    13
    Originariamente inviato da fdisotto
    Codice PHP:
    mysql_query($sql) or die(mysql_error(); 
    metti questo così se da problemi ti da anche l'errore.
    Messo ora, il risultato è che passa tranquillamente oltre, ma non modifica nulla. Ufff.....

  8. #8
    Utente di HTML.it L'avatar di Ranma2
    Registrato dal
    Mar 2003
    Messaggi
    2,648
    Originariamente inviato da Ranma2
    In ogni caso, per ovviare ogni dubbio sul problema, fai uno stamp della query incriminata e controlla come la stai popolando.

  9. #9
    Utente di HTML.it
    Registrato dal
    Mar 2007
    Messaggi
    13
    Innanzitutto mi scuso doppiamente, per aver risposto dopo così tanto tempo ad una mia richiesta e per uppare un topic vecchio mesi, ma problemi di salute mi hanno tenuto lontano da questo lavoro e molte altre cose.

    Ora che tutto va bene, vi chiedo ancora un minimo di pazienza per finire questo capitolo travagliato della mia esistenza ( ) una volta per tutte, se avrete intenzione di farlo, vi ringrazio in anticipo.

    Come ho finalmente potuto fare, ho aggiunto echo e die a modify_data, e facendo l'update di un campo il risultato è questo...

    codice:
    UPDATE orders SET vessel='prova2', date='2012-12-15', orderno='PRV HQ 45938 000', supplier='ProvaProva', datasped='2013-02-22', luogosped='Genova', pieces='2', peso='32', note='proviamolodinuovo' WHERE id='\\\' . $row[\\\'id\\\'] . \\\'' 
    Warning: Cannot modify header information - headers already sent by (output started at /magaz/modify_data.php:20) in /magaz/modify_data.php on line 23
    un pelo preoccupato degli id più che dell'header, non capisco comunque l'errore, potreste darmi un'altra volta una mano?

    EDIT: Modifico subito per dire che il warning l'ho capito, non gli piace l'echo - che infatti è alla linea 20 - e poi dopo l'header, quindi il secondo output non lo esegue, quindi è un "errore nel debug" e da quanto ho capito poco importa al momento nella risoluzione del problema, ma l'update invece? motivi che portano al non funzionamento? quel "dopo-where"?
    Togliendo l'echo senza stare a modificare php.ini o output buffer vari, il risultato è il ritorno alla pagina "ormad" tranquilla, ma senza alcun aggiornamento di campo, come se nulla fosse stato fatto.

    Vi ringrazio davvero molto per la pazienza.

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 © 2026 vBulletin Solutions, Inc. All rights reserved.