Visualizzazione dei risultati da 1 a 5 su 5
  1. #1
    Utente di HTML.it
    Registrato dal
    Feb 2009
    Messaggi
    2

    [slql] Campo vuoto dopo update

    Salve a tutti, sto sperimentando uno stranissimo problema durante l'update di un record tramite php e mysql.
    Lo scenario è il seguente:

    ho una pagina in php che crea un elenco di utenti che hanno richiesto di essere aggiunti ad uno specifico gruppo di utenti, in questo caso il nome del gruppo è 'Newbie'. Questa pagina è visualizzata solo dagli amministratori del gruppo, i quali possono decidere se ammettere oppure no l'utente nel gruppo.

    <form method = "post" action="updaterequest.php">
    <input type="submit" value="Allow"><input type="hidden" name="allow" value="yes">
    <input type="hidden" name="user" value="<?=$numrequest['name']?>" />
    </form>
    <form method = "post" action="updaterequest.php">
    <input type="submit" value="Deny">
    <input type="hidden" name="allow" value="no">
    <input type="hidden" name="user" value="<?=$numrequest['name']?>" />
    </form>

    A questo punto dati del form vengono processati dal file updaterequest.php, vi riporto solo il codice relativo all'update per semplificare le cose:

    Codice PHP:
    if ($allow == "yes") { 
    $query_update "UPDATE user SET group = '$newgroup', rank = 'Newbie' WHERE user = '$user'" or die ('error updating user'); 
    mysql_query($query_update); 
    } else { 
    $query_deleterequest "DELETE FROM waitlist WHERE name = '$user'" or die ('error deleting');
     
    mysql_query($query_deleterequest); 

    A questo punto succede una cosa a dir poco singolare, la maggior parte delle volte la query funziona perfettamente, ma a volte il campo rank nel database viene cancellato e resta completamente vuoto.
    Sono davvero con le spalle al muro perchè non riesco a trovare uno schema ripetitivo per fare il debug del problema.
    Qualcuno ha qualche idea sulla possibile causa?
    Grazie mille in anticipo a chiunque volesse aiutarmi.

    Bugs

  2. #2
    Utente di HTML.it L'avatar di *pragma
    Registrato dal
    Sep 2001
    Messaggi
    1,087
    intanto non metterei due form ma un unico con gli input radio ed il si selected
    <input type="radio" name="accetta_o_no" value="si" />
    <input type="radio" name="accetta_o_no" value="no" />

    poi non so come vanno le cose nel db.
    ciao

  3. #3
    hai due cose non piu' fattibili con le configurazioni del php correnti:

    l'uso di short_open_tag che ora e' in OFF e quindi <?= non funziona piu' e l'altro e l'uso di register_globals ora in off per cui i dati passati dal form saranno in (es.: ) $_POST['user'] e non piu' in $user.

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

  4. #4
    Utente di HTML.it
    Registrato dal
    Feb 2009
    Messaggi
    2
    Prima di tutto vi ringrazio moltissimo per le risposte

    x Pragma: si hai ragione, il motivo per cui ho optato per i due form è stato il voler provare diversi metodi per il passaggio delle variabili da una pagina all'altra. Inizialmente, la scelta veniva effettuata usando due link tipo: Accetta
    inutile dire che il problema si presentava comunque, a quel punto mi è venuto il dubbio che usare un link non fosse la cosa giusta da fare e quindi ho cambiato il metodo da get a post, ma senza risolvere.

    x Piero: quidi da quello che mi sembra di capire, devo sostituire <?=$numrequest['name']?> con <? echo '$numrequest['name']' ?> ??
    per quanto riguarda la variabline $user, viene assegnata all'inizio della pagina:

    $user = $_POST['user'];

    ho solo omesso di riportare tutto il codice per semplificare.

    Saluti

    Bugs

  5. #5
    <?=$numrequest['name']?> con
    <?php echo '$numrequest['name']' ?>

    ed anche sostituire il tag php <? con <?php

    poi e' errato scrivere il die() a seguire la stringa SQL. Il die lo devi mettere nel caso ricevesse un FALSE la funzione mysql_query(). La stringa sara' sempre true. Aggiungi anche la stampa dell'errore, almeno per il tempo di debug dello script.

    Codice PHP:
    $query_update "UPDATE user 
                       SET group = '
    $newgroup', rank = 'Newbie' 
                       WHERE user = '
    $user'";  

    mysql_query($query_update)or die ('error updating user ' mysql_error()); 

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

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.