Visualizzazione dei risultati da 1 a 10 su 10
  1. #1

    Problema campo id in mysql - non trovo l'errore!!!

    Ciao ragazzi!
    Ho un form che modifica i dati di un immobile presente in una tabella del database, ma il campo $id (WHERE id = '$id') non viene trovato e quindi non viene apportata nessuna modifica, ho fatto centomila prove ma non trovo l'errore, aiutatemi per piacere
    L'url porta la variabile dentro: url/modifica.php?id=69
    Ecco il codice che utilizzo, grazie ragazzi!:

    <?php


    csock(); /* si connette al database */

    $numz = $_REQUEST['id'];

    $tdata = "SELECT * FROM daticase WHERE id='$numz'";

    $resultdt = mysql_query($tdata) or die("Invalid query: " . mysql_error());

    $row = mysql_fetch_array($resultdt);

    $id = $row['id'];
    $tipo = $row['tipo'];
    $provincia = $row['provincia'];
    $area = $row['area'];
    $codice = $row['codice'];
    $comune = $row['comune'];
    $prezzo = $row['prezzo'];
    $vani = $row['vani'];
    $trattabili = $row['trattabili'];
    $bagni = $row['bagni'];
    $mq = $row['mq'];
    $affitto = $row['affitto'];
    $condizioni = $row['condizioni'];
    $balconi = $row['balconi'];
    $terrazzo = $row['terrazzo'];
    $garage = $row['garage'];
    $riscaldamento= $row['riscaldamento'];
    $camino = $row['camino'];
    $gpl = $row['gpl'];
    $note = $row['note'];




    if(IsSet($_POST['Submit']))
    {
    $tipo=$_POST['tipo'];
    $provincia=$_POST['provincia'];
    $area=$_POST['area'];
    $codice=$_POST['codice'];
    $coumune=$_POST['comune'];
    $prezzo=$_POST['prezzo'];
    $vani=$_POST['vani'];
    $trattabili=$_POST['trattabili'];
    $bagni=$_POST['bagni'];
    $mq=$_POST['mq'];
    $affitto=$_POST['affitto'];
    $condizioni=$_POST['condizioni'];
    $balconi=$_POST['balconi'];
    $terrazzo=$_POST['terrazzo'];
    $garage=$_POST['garage'];
    $riscaldamento=$_POST['riscaldamento'];
    $camino=$_POST['camino'];
    $gpl=$_POST['gpl'];
    $note=$_POST['note'];



    $id=$_GET['id'];

    $savedata = "UPDATE daticase SET tipo = '$tipo', provincia = '$provincia', area = '$area', codice = '$codice', comune = '$comune', prezzo = '$prezzo', vani = '$vani', trattabili = '$trattabili', bagni = '$bagni', mq = '$mq', affitto = '$affitto', condizioni = '$condizioni', balconi = '$balconi', terrazzo = '$terrazzo', garage = '$garage', riscaldamento = '$riscaldamento', camino = '$camino', gpl = '$gpl', note = '$note' WHERE id = '$id'";

    $yes = mysql_query($savedata) or die("Invalid query: " . mysql_error());


    }

    ?>

  2. #2
    Stampa la query e vedi come viene risolta:

    echo $savedata;

    in ogni caso passerei l'id in un campo hidden e non tramite URL dove basta cambiare il numerello per modificare "questo e quello"

    Il silenzio è spesso la cosa migliore. Pensa ... è gratis.

  3. #3
    Ciao, grazie per la risposta, anche perchè devo finire questa cosa il prima possibile.
    ho modificato il codice in questo modo:

    $gpl=$_POST['gpl'];
    $note=$_POST['note'];

    $id=$_GET['id'];

    $savedata = "UPDATE daticase SET tipo = '$tipo', provincia = '$provincia', area = '$area', codice = '$codice', comune = '$comune', prezzo = '$prezzo', vani = '$vani', trattabili = '$trattabili', bagni = '$bagni', mq = '$mq', affitto = '$affitto', condizioni = '$condizioni', balconi = '$balconi', terrazzo = '$terrazzo', garage = '$garage', riscaldamento = '$riscaldamento', camino = '$camino', gpl = '$gpl', note = '$note' WHERE id = '$id'";

    $yes = mysql_query($savedata) or die("Invalid query: " . mysql_error());

    echo $savedata;

    }


    Lo avevo già testato e il risultato è che mi stampa tutti i dati tranne l'id non capisco perchè, guarda tu stesso:


    UPDATE daticase SET tipo = 'APPARTAMENTO', provincia = 'SA', area = 'Centro Urbano', codice = '009', comune = '', prezzo = '200000', vani = '4', trattabili = '1', bagni = '1', mq = '90', affitto = '1', condizioni = 'Da Ristrutturare', balconi = '1', terrazzo = '1', garage = '1', riscaldamento = '1', camino = '0', gpl = '0', note = 'test test test test test test test test test test test test test test test test test test test test test test test test ' WHERE id = ''


    :master:

  4. #4
    WHERE id = ''

    significa che $id e' vuoto. Prima prelevi l'id con $_REQUEST poi con il $_GET. Pero' i dati li passi con POST.... Passa anche l'id con POST in un campo hidden e prelevalo con $_POST['id']

    Manca lo script del form e manco si capisce come passi i dati al form. Si vede solo che con un if prelevi i dati se e' settato submit. Tra questi dati manca l'id.

    Il silenzio è spesso la cosa migliore. Pensa ... è gratis.

  5. #5
    il form è superfluo, perchè è un form di modifica, prendo i dati dal database guarda rimetto tutto il codice php:

    <?php


    csock(); /* si connette al database */

    $numz = $_REQUEST['id'];

    $tdata = "SELECT * FROM daticase WHERE id='$numz'";

    $resultdt = mysql_query($tdata) or die("Invalid query: " . mysql_error());

    $row = mysql_fetch_array($resultdt);

    $id = $row['id'];
    $tipo = $row['tipo'];
    $provincia = $row['provincia'];
    $area = $row['area'];
    $codice = $row['codice'];
    $comune = $row['comune'];
    $prezzo = $row['prezzo'];
    $vani = $row['vani'];
    $trattabili = $row['trattabili'];
    $bagni = $row['bagni'];
    $mq = $row['mq'];
    $affitto = $row['affitto'];
    $condizioni = $row['condizioni'];
    $balconi = $row['balconi'];
    $terrazzo = $row['terrazzo'];
    $garage = $row['garage'];
    $riscaldamento= $row['riscaldamento'];
    $camino = $row['camino'];
    $gpl = $row['gpl'];
    $note = $row['note'];




    if(IsSet($_POST['Submit']))
    {
    $tipo=$_POST['tipo'];
    $provincia=$_POST['provincia'];
    $area=$_POST['area'];
    $codice=$_POST['codice'];
    $coumune=$_POST['comune'];
    $prezzo=$_POST['prezzo'];
    $vani=$_POST['vani'];
    $trattabili=$_POST['trattabili'];
    $bagni=$_POST['bagni'];
    $mq=$_POST['mq'];
    $affitto=$_POST['affitto'];
    $condizioni=$_POST['condizioni'];
    $balconi=$_POST['balconi'];
    $terrazzo=$_POST['terrazzo'];
    $garage=$_POST['garage'];
    $riscaldamento=$_POST['riscaldamento'];
    $camino=$_POST['camino'];
    $gpl=$_POST['gpl'];
    $note=$_POST['note'];



    $id=$_GET['id'];

    $savedata = "UPDATE daticase SET tipo = '$tipo', provincia = '$provincia', area = '$area', codice = '$codice', comune = '$comune', prezzo = '$prezzo', vani = '$vani', trattabili = '$trattabili', bagni = '$bagni', mq = '$mq', affitto = '$affitto', condizioni = '$condizioni', balconi = '$balconi', terrazzo = '$terrazzo', garage = '$garage', riscaldamento = '$riscaldamento', camino = '$camino', gpl = '$gpl', note = '$note' WHERE id = '$id'";

    $yes = mysql_query($savedata) or die("Invalid query: " . mysql_error());

    echo $savedata;

    }

    ?>


    id è nella request per poter selezionare l'immobile giusto dal database, dopo lo prendo dal database selezionandolo così: $id = $row['id']; così come prendo tutti gli altri dati, e se faccio (mentre appare il form di modifica) echo $id mi appare esattamente il numero dell'id. Che differenza fa se è hidden oppure no? Questa pagina la vede solo l'admin per adesso non importa, è importante piuttosto capire perchè id si svuota in quell'if. Se hai qualche idea e mi mostri il codice modificato mi saresti veramente d'aiuto, perchè le ho provate proprio tutte.

  6. #6
    ripeto. Non capisco come hai strutturato lo script.

    estrai dei dati con un select. Passi i valori nelle variabili. Se e' settato "submit" ti metti a riscrivere le variabili e vai pure a sovrascrivere $id che avevi gia' settato prima.

    Caso mai dovrebbe essere l'inverso.... Se e' settato "submit" prelevi i dati passati con POST, nel caso submit non fosse presente allora prendi i dati dalla tabella e li passi al form.

    prova a togliere del tutto la riga:

    $id=$_GET['id'];

    almeno ti mantieni l'id estratto prima. Ma comunque non capisco la logica usata dallo script.

    Il silenzio è spesso la cosa migliore. Pensa ... è gratis.

  7. #7
    è importante piuttosto capire perchè id si svuota in quell'if.
    Perchè sei tu a svuotarlo con
    Codice PHP:
    $id=$_GET['id']; 
    Full Stack Developer presso Advice Lab
    Bonus Bitcoin
    Moon Bitcoin

  8. #8
    Ora provo a cancellarlo

  9. #9
    Il codice l'ho cambiato:
    $gpl=$_POST['gpl'];
    $note=$_POST['note'];



    $savedata = "UPDATE daticase SET tipo = '$tipo', provincia = '$provincia', area = '$area', codice = '$codice', comune = '$comune', prezzo = '$prezzo', vani = '$vani', trattabili = '$trattabili', bagni = '$bagni', mq = '$mq', affitto = '$affitto', condizioni = '$condizioni', balconi = '$balconi', terrazzo = '$terrazzo', garage = '$garage', riscaldamento = '$riscaldamento', camino = '$camino', gpl = '$gpl', note = '$note' WHERE id = '$id'";

    $yes = mysql_query($savedata) or die("Invalid query: " . mysql_error());

    echo $savedata;

    }

    ma il risultato è lo stesso:


    UPDATE daticase SET tipo = 'APPARTAMENTO', provincia = 'SA', area = 'Centro Urbano', codice = '009', comune = '', prezzo = '200000', vani = '4', trattabili = '1', bagni = '1', mq = '90', affitto = '0', condizioni = 'Da Ristrutturare', balconi = '0', terrazzo = '1', garage = '1', riscaldamento = '0', camino = '0', gpl = '1', note = 'testttttttttttttttttttttttttttttttttttttttttttttt tttttttttttttttttttttt' WHERE id = ''



  10. #10
    piero.mac ho fatto come dici tu ho passato l'id con POST in un campo hidden e prelevato con $_POST['id'], ora è tutto ok funziona, grazie mille

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.