Visualizzazione dei risultati da 1 a 9 su 9
  1. #1
    Utente di HTML.it
    Registrato dal
    Aug 2006
    Messaggi
    833

    Aggiorna solo se campo e' numerico!

    Salve a tutti, volevo chiedervi una cosa.
    Prima premetto che non so niente di PHP.

    Allora il problema e' che una funzione banale dovrebbe aggiornare un record, questo record e' formato da 5 campi: Cliente, rag, indirizzo, citta' e localita'.

    Dalla prima videata se clicco sul codice cliente dovrebbe andare su un'altra finestra
    che mi permette di modificare i dati e aggiornare il record.

    Ora il problema e' che questo giro banale funziona solo se metto il codice cliente numerico,
    sapete dirmi dove e' definito che non puo' essere numerico?

    Posto una parte del codice se non e' chiaro ditemelo:
    Pag.1)

    <html>
    <?php
    define("PAGE_TITLE", "Customer Update");
    define("PHP_FILE_NAME", "db2_update1_list_include.php")
    ?>

    <title><?= PAGE_TITLE . " - " . PHP_FILE_NAME; ?></title>
    <body>
    <?php

    /* Apertura connessione al database*/
    include("connection.inc");

    /* Costruzione dello statement SQL da eseguire */
    $sql = 'select * from ACSSI_DAT.ANCL2FGF';

    /* Esecuzione diretta dello stament SQL */
    $stmt = db2_exec($dbh, $sql, array('cursor' => DB2_SCROLLABLE));

    print '<h1>Customer Records on System i5 s654007c</h1>';
    print '
    <table border=0 cellpadding=3 cellspacing=3>';

    /* Salvataggio dei dati estratti in un array, ciclo di lettura e stampa dei dati. */
    /* Sul campo customerNumber viene impostato un hiperlink in modo da renderlo cliccabile */
    /* ed invocare lo scrip PHP per la modifica dei dati cliente*/
    while ($row = db2_fetch_array($stmt)) {
    if (!$row=="") {
    $customerNumber = $row[0];
    $customerName = $row[1];
    $customerAddress = $row[2];
    $customerCity = $row[3];
    $customerArea = $row[4];
    print '<tr><td align=center><a href=db2_update2_details_include.php?customerNumbe r=' . $customerNumber . '>' . $customerNumber .
    '</a><td>'.$customerName.'<td>'.$customerAddress.'<td >'.$customerCity.'<td>'.$customerArea.'</td></tr>';
    }
    }

    print '</table>
    ';

    /* Stampa dello statement SQL eseguito */
    print "

    Echo of dynamically-built sql: ".$sql."</p>";

    ?>

    </body>
    </html>



    Pag.2) (dove riesce a collegarsi al file solo se costumernumber e' numerico)


    <html>
    <?php
    define("PAGE_TITLE", "Customer Update");
    define("PHP_FILE_NAME", "db2_update2_details_include.php")
    ?>

    <title><?= PAGE_TITLE . " - " . PHP_FILE_NAME; ?></title>
    <body>
    <?php

    /* Apertura connessione al database*/
    include("connection.inc");

    /* Reperimento variabile passata dal chiamante con il metodo GET */
    $customerNumber = $_GET["customerNumber"];

    if ($customerNumber == "") {
    } else {

    /* Costruzione dello statement SQL da eseguire */
    $sql = 'select * from ACSSI_DAT.ANCL2FGL where COCLCL = ' .$customerNumber;

    /* Esecuzione diretta dello stament SQL */
    $stmt = db2_exec($dbh, $sql, array('cursor' => DB2_SCROLLABLE));

    /* Salvataggio dei dati estratti in un array */
    $row = db2_fetch_array($stmt);

    /* Ciclo di lettura dei dati estratti e stampa */
    if (!$row=="") {
    $customerNumber = $row[0];
    $customerName = $row[1];
    $customerAddress = $row[2];
    $customerCity = $row[3];
    $customerArea = $row[4];
    }
    /* Il controllo viene passato ad un altro script PHP per l'aggiornamento dati cliente */
    print '<h1>Edit an Employee record:</h1>';
    print '<form action="db2_update3_sql_include.php" method="POST">';
    print 'Customer number: <input type="text" name="customerNumber" value="'.$customerNumber.'" />
    ';
    print 'Customer name: <input type="text" name="customerName" value="'.$customerName.'" />
    ';
    print 'Customer address: <input type="text" name="customerAddress" value="'.$customerAddress.'" />
    ';
    print 'Customer city: <input type="text" name="customerCity" value="'.$customerCity.'"/>
    ';
    print 'Customer area: <input type="text" name="customerArea" value="'.$customerArea.'"/>';
    print '

    ';
    print '<input type="submit" name="action" value="Update" />';
    print '</form>';
    }

    ?>

    </body>
    </html>

    Grazie a tutti

  2. #2
    /* Reperimento variabile passata dal chiamante con il metodo GET */
    $customerNumber = $_GET["customerNumber"];

    if ($customerNumber == "") {
    } else

    tramite GET gli passi il numero ($_GET["customerNumber"]) e con l'if successivo gli dici di non fare niente se $_GET["customerNumber"] è vuoto, altrimenti di stampare tutto quello che c'è dopo l'else
    Manifesto Aggiornato
    Sono proprietà privata di Reika

  3. #3
    Utente di HTML.it
    Registrato dal
    Aug 2006
    Messaggi
    833
    Grazie per la risposta, ma come dicevo non ho capito bene la risposta.
    Allora se la variabile e' vuota non deve fare niente perche' il codice cliente e' obbligatorio
    pero' perche' il tutto funziona solo se la variabile (codice cliente) e' numerica?
    dove e' definito questo?

    Di nuovo grazie

  4. #4
    customerNumber è un dato che nella prima pagina prelevi dal database e che sempre nella prima pagina inserisci come valore nel link
    Codice PHP:
    <a href=db2_update2_details_include.php?customerNumber=' . $customerNumber . '>' . $customerNumber . '</a
    Non è che funziona solo se il codice cliente è numerico, il codice cliente potrebbe contenere anche lettere a meno che il codice cliente non sia altro che un id auto_increment, in quel caso si tratta di un numero univoco che aumenta in automatico ogni volta che aggiungi una riga al database

    Cioè se non ci sono nomi ripetuti potresti anche passare il nome in get

    PS: non ho capito cosa c'è di strano e cosa non va
    Manifesto Aggiornato
    Sono proprietà privata di Reika

  5. #5
    Utente di HTML.it
    Registrato dal
    Aug 2006
    Messaggi
    833
    Il problema e' proprio questo, se metto un codice cliente es. 222 va tutto bene ma se metto
    il codice cliente 222a non funziona piu' niente!

  6. #6
    Utente di HTML.it
    Registrato dal
    Aug 2006
    Messaggi
    833
    up

  7. #7
    Originariamente inviato da guarnieri
    Il problema e' proprio questo, se metto un codice cliente es. 222 va tutto bene ma se metto
    il codice cliente 222a non funziona piu' niente!
    ma scusa il codice cliente da dove viene? come lo inserisci nel database? c'è un cliente con codice 222a?
    Manifesto Aggiornato
    Sono proprietà privata di Reika

  8. #8
    Utente di HTML.it
    Registrato dal
    Aug 2006
    Messaggi
    833
    Il codice cliente e' su un file (ANCLI00F) che sta nel db2 di un Iseries.
    Per adesso aggiorno solamente i codici gia' esistenti.
    C'e' un cliente con codice 222a, l'ho messo io per fare delle prove.
    Il problema persiste, non capisco come mai se il codice cliente fosse solo 222, andrebbe tutto bene, mentre se immetto il codice 222a, alfanumerico, non funziona la select:

    /* Reperimento variabile passata dal chiamante con il metodo GET */
    $customerNumber = $_GET["customerNumber"];

    if ($customerNumber == "") {
    } else {

    /* Costruzione dello statement SQL da eseguire */
    $sql = 'select * from ACSSI_DAT.ANCL2FGL where COCLCL = ' .$customerNumber;

    Solo che non so se non riesce il test con l'IF o la select.

    E' possibile che il test "if ($customerNumber == "")" non accetti codici, passati dal chiamante, che sono alfanumerici?

  9. #9
    Utente di HTML.it
    Registrato dal
    Aug 2006
    Messaggi
    833
    UP

    So che sicuramente sono domande banali che invigliano a non rispondere, ma la mia scarsa conoscenza del php non mi permette di continuare a creare questa piccola procedura, cosa
    che invece vorrei proprio fare!.

    Comunque grazie

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.