• User Attivo

    E allora...
    [php]foreach($_POST as $postvars){
    if(empty($postvars)) {die ("Hai lasciato un campo vuoto!");}
    }
    $time = time();
    $link = mysql_connect($dbhost, $dbuser, $dbpass);
    $query = "UPDATE ".$dbvin ." SET
    updated='".$time."',
    st='" . $_POST['st'] . "',
    vin='" . $_POST['vin'] . "',
    ye='" . $_POST['ye'] . "',
    ma='" . $_POST['ma'] . "',
    mo='" . $_POST['mo'] . "',
    co='" . $_POST['co'] . "',
    mi='" . $_POST['mi'] . "',
    pr='" . $_POST['pr'] . "',
    ex='" . $_POST['ex'] . "',
    in='" . $_POST['in'] . "',
    bo='" . $_POST['bo'] . "',
    do='" . $_POST['do'] . "',
    en='" . $_POST['en'] . "',
    fu='" . $_POST['fu'] . "',
    tr='" . $_POST['tr'] . "',
    st='" . $_POST['st'] . "',
    com='" . $_POST['com'] . "'
    WHERE ccode='".$ccode."'";
    mysql_query($query, $link)or die("ERRORE:".mysql_error());
    echo "Operazione eseguita con successo!";
    mysql_close($link);[/php]


  • User Attivo

    [..]

    Grazie!
    Abbiamo fatto un bel passo avanti.
    Ora ricevo il seguente errore:

    [php]ERRORE:You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'co='Dop', mi='270', pri='65', ex='Ssi' at line 8[/php]E se dalla query elimino le righe che riguardano co,mi,pri,ex tutto funziona, ovviamente senza aggiornare quelle voci che sono state escluse eliminando le righe.
    Devo capire perchè non digerisce la sintassi di quelle righe... sono uguali alle altre!!! Grrrrrr


  • User Attivo

    Uhm...potrebbe essere un problema dei privilegi dei campi....
    Ad esempio, puoi aver messo un limite ad un campo di 2 cifre che magari ne richiede 3...
    Se puoi,puoi esportare la parte di tabella interessata in modo che noi possiamo capire meglio?


  • User Attivo

    [..]

    Ehm..dopo ci provo 🙂
    Ma scusa, se quando creo una scheda nuova va tutto liscio, non dovrebbe andare liscio anche un update considerando che lavora sulle stesse tabelle/campi?


  • User Attivo

    Ho controllato...spero le cose giuste...
    Per esempio il campo "co" : nella pagina php ho "maxlength=7" e il campo è un var(char)7.
    Boh..aiutoooooooo


  • ModSenior

    Ciao Sara1985,

    Provando a fare:
    [php]
    echo "UPDATE ".$dbvin ." SET
    updated='".$time."',
    st='" . $_POST['st'] . "',
    vin='" . $_POST['vin'] . "',
    ye='" . $_POST['ye'] . "',
    ma='" . $_POST['ma'] . "',
    mo='" . $_POST['mo'] . "',
    co='" . $_POST['co'] . "',
    mi='" . $_POST['mi'] . "',
    pr='" . $_POST['pr'] . "',
    ex='" . $_POST['ex'] . "',
    in='" . $_POST['in'] . "',
    bo='" . $_POST['bo'] . "',
    do='" . $_POST['do'] . "',
    en='" . $_POST['en'] . "',
    fu='" . $_POST['fu'] . "',
    tr='" . $_POST['tr'] . "',
    st='" . $_POST['st'] . "',
    com='" . $_POST['com'] . "'
    WHERE ccode='".$ccode."'";
    [/php]
    La condizione WHERE ccode stampata è corretta?

    @Sara1985 said:

    il campo è un var(char)7
    E' char o varchar? sono due cose differenti, poichè char deve essre obbligatoriamente 7 caratteri, varchar massimo 7 caratteri. Ma non credo il problema sia questo altrimenti dovrebbe generare un errore...


  • User Attivo

    Guardando un'altra pagina php dello stesso script noto questo:

    [PHP]
    $query = "SELECT ccode, vi, st, vin, ye, ma, mo, 'co', 'mi', 'pr', 'ex', st FROM $dbvin ORDER BY $sort $order";
    [/PHP]

    e cioè che gli "incriminati" sono con gli apici, gli altri no; quindi per non so quale stranissima ragione hanno bisogno di una sintassi diversa.
    Tornando alla parte di codice che ho postato prima... come potrebbe essere modificata la sintassi dei 4 campi incriminati alla luce della loro diversa sintassi trovata in un'altra pagina dello stesso script? :mmm:

    Ps: ovviamente togliendo gli apici dal codice postato ora, quella pagina da appunto errore di sintassi


  • User Attivo

    @Thedarkita said:

    E' char o varchar? sono due cose differenti, poichè char deve essre obbligatoriamente 7 caratteri, varchar massimo 7 caratteri. Ma non credo il problema sia questo altrimenti dovrebbe generare un errore...

    Ho scritto male io è varchar(7)


  • User Attivo

    @Thedarkita said:

    Ciao Sara1985,

    Provando a fare:
    [php]
    echo "UPDATE ".$dbvin ." SET
    updated='".$time."',
    st='" . $_POST['st'] . "',
    vin='" . $_POST['vin'] . "',
    ye='" . $_POST['ye'] . "',
    ma='" . $_POST['ma'] . "',
    mo='" . $_POST['mo'] . "',
    co='" . $_POST['co'] . "',
    mi='" . $_POST['mi'] . "',
    pr='" . $_POST['pr'] . "',
    ex='" . $_POST['ex'] . "',
    in='" . $_POST['in'] . "',
    bo='" . $_POST['bo'] . "',
    do='" . $_POST['do'] . "',
    en='" . $_POST['en'] . "',
    fu='" . $_POST['fu'] . "',
    tr='" . $_POST['tr'] . "',
    st='" . $_POST['st'] . "',
    com='" . $_POST['com'] . "'
    WHERE ccode='".$ccode."'";
    [/php]
    La condizione WHERE ccode stampata è corretta?

    Provando dalla finestra SQL del Phpmyadmin ottengo questo:

    Messaggio di MySQL:
    #1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'echo "UPDATE ".$dbvin ." SET
    updated='".$time."',
    st='" . $_POST['st'] . "',' at line 1


  • ModSenior

    Ciao Sara1985,

    Ciò dipende dal fatto che quelle parole vengono interpretate come funzioni, solitamente si usa ` e non l'apice normale in modo da non incorerre in questi errori.
    Prova ad usarlo anche nella query di update e vedi se risolvi, ma è strano che non ti generi l'errore avendo messo mysql_error()...

    EDIT quel codice devi lanciarlo da php, non dal phpmyadmin direttamente...


  • User Attivo

    @Thedarkita said:

    Ciao Sara1985,

    EDIT quel codice devi lanciarlo da php, non dal phpmyadmin direttamente...

    Fatto, mi scrive qualcosa ,ma scompare subito, ho visto con un printscreen cosa dice.
    Lista tutte gli update fatti, non dà alcun errore e dice che è stato tutto eseguito con successo.. ma poi se guardo la scheda invece è tutto come prima 😢
    L'unico modo per far realmente aggiornare la scheda è togliere le 4 righe incriminate. :mmm: Ma così ovviamente non mi aggiorna i capi che ho escluso.
    Ma non credo sia un caso che nell'altra pagina proprio quei 4 campi abbiano una sintassi differente. Non basterebbe trovare quella corretta anche in questo pezzo di codice? 🙂


  • ModSenior

    Nell'ultimo mio post ti ho detto come fare la query di update, prova in quel modo 😉


  • User Attivo

    [...]

    Fatto...tutto come prima 😞


  • ModSenior

    [php]
    foreach($_POST as $postvars){
    if(empty($postvars)) {die ("Hai lasciato un campo vuoto!");}
    }
    $time = time();
    $link = mysql_connect($dbhost, $dbuser, $dbpass);
    $query = "UPDATE ".$dbvin ." SET
    updated='".$time."',
    st='" . $_POST['st'] . "',
    vin='" . $_POST['vin'] . "',
    ye='" . $_POST['ye'] . "',
    ma='" . $_POST['ma'] . "',
    mo='" . $_POST['mo'] . "',
    co='" . $_POST['co'] . "',
    mi='" . $_POST['mi'] . "',
    pr='" . $_POST['pr'] . "',
    ex='" . $_POST['ex'] . "',
    in='" . $_POST['in'] . "',
    bo='" . $_POST['bo'] . "',
    do='" . $_POST['do'] . "',
    en='" . $_POST['en'] . "',
    fu='" . $_POST['fu'] . "',
    tr='" . $_POST['tr'] . "',
    st='" . $_POST['st'] . "',
    com='" . $_POST['com'] . "'
    WHERE ccode='".$ccode."'";
    mysql_query($query, $link)or die("ERRORE:".mysql_error());
    echo "Operazione eseguita con successo!";
    mysql_close($link);
    [/php]


  • User Attivo

    Ce l'ho fatta!!!!! :yuppi:
    anzi..ce l'avete fatta :vai:
    Dopo un po' di prove, e vedendo che l'errore era sulla riga 8 della query e quindi sul quel campo "co"... ho messo "`" come suggerito da voi e tutto funziona.
    Ho modificato solo questa riga così

    [PHP]
    co='" . $_POST['co'] . "',
    [/PHP]

    Lasciando il resto invariato... Grazie!
    Ora mi piacerebbe capire perchè il campo "co" sia qui che nell'altra pagina vuole una sintassi differente dagli altri nonostante sia un campo uguale agli altri :mmm:


  • ModSenior

    E' un parola riservata... e quindi non veniva interpretato come nome di campo...


  • User Attivo

    @Thedarkita said:

    E' un parola riservata... e quindi non veniva interpretato come nome di campo...

    Grazie!
    Ora ho imparato una cosa nuova! :yuppi:
    Baci