• User Newbie

    Link testuale aggiornamento tabella mysql

    Salve, non sono molto pratico di programmazione ma mi sono cimentato in un sito, molto semplice credo, con un database mysql. Se qualcuno può aiutarmi con questo quesito ve ne sarei grato.

    Ho la necessità di aggiornare un valore di una tabella di database mysql sostituendolo con un'altro valore di un'altra tabella al clic su un link testuale. Subito dopo il click il browser mi deve portare alla pagina desiderata.

    Nell'HTML della pagina index.php ho una parte di codice php che definisce un'area ripetuta per mezzo di WHILE. Al suo interno ho inserito diverse variabili di tipo $nomequery ['nomecampo'] per ottenere la ripetizione della stessa parte di testo con i dati elencati secondo la query $nomequery=mysql_query(SELECT * FROM nometabella WHERE etc. etc.)

    es.
    1° classificato mi chiamo MARIO ho i capelli NERI
    2° classificato mi chiamo GIANNI ho i capelli ROSSI
    3° classificato mi chiamo LUCA ho i capelli BIONDI

    dove 1,2,3 sarebbe la var $nomequery ['numero'] MARIO,GIANNI,LUCA sarebbe la var $nomequery ['nome'] e NERI,ROSSI,BIONDI sarebbe $nomequery['capelli'] e così via.

    Io vorrei che queste variabili siano anche link testuali che:

    1. eseguano, al click, il comando UPDATE etc. etc. per aggiornare un valore di una tabella con il valore $nomequery ['numero'].
    2. subito dopo mi portino ad una normale pagina del sito.

    Farle diventare dei link..facile (<a href= "http://www.miosito.it/pagina.php> <? $nomequery ['nomecampo'] ?> </a>) invece non so come far eseguire il comando UPDATE al momento del click e come fare a dirgli di aggiornare il valore indicato della tabella indicata con $nomequery ['numero'] corrispondente alla "riga" ciccata.

    Ho provato a puntare il link ad una pagina tipo script.php con al suo interno:

    ...dopo i comandi per la connessione al database..

    $seleziona = "UPDATE nometabella SET nomecampo = '$nomequery ['numero']' WHERE nometabella.nomecampochiave =0";

    mysql_query($seleziona) or die(etc. etc.);

    e per andare alla pagina??


    Praticamente, riferendomi all'esempio, ho bisogno che al click sul testo dinamico (GIANNI) un campo di una tabella del database mi diventi uguale al numero di classifica (2) anch'esso dinamico risultante da WHILE.

    Anche se sembra complicato aiutatemi lo stesso perfavore...
    mi spiego male perchè non me ne intendo, ma x chi ne sa di più credo che sia quasi una cavolata.
    Grazie in anticipo per qualsiasi aiuto.

    saluti


  • User Newbie

    ...come non detto.
    La questione adesso si è ridotta a questo.

    $variabile = 'UPDATE nometabella SET nomecampo = '$sel'
    WHERE id = 0';

    come faccio a far processare correttamente questo comando?
    $sel è una variabile che viene modificata da comando GET su altra pagina.
    se metto un numero al posto di $sel funziona, ma io vorrei che fosse una variabile...
    Se potete aiutatemi..poi il mio sito funzionerà.


  • Moderatore

    per prova fai così

    $variabile = 'UPDATE nometabella SET nomecampo = '$sel'
    WHERE id = 0';

    vedi se và^_^


  • Moderatore

    $variabile = "UPDATE nometabella SET nomecampo = '".$sel."' WHERE id = 0";


  • Moderatore

    massy scusa^^ una somantida ^^ a mè và anche come la ho scritta io mi puoi dire la differenza? così magari se mi esce una cosa del genere non erro^_^


  • Moderatore

    Ciao.
    Difficilmente va come hai scritto te.
    hai concatenato due apici dentro due apici.

    Premessa:
    il codice da scrivere è:

    UPDATE nometabella SET nomecampo = 'dasostituire' WHERE id = 0

    se la piazzo in una variabile posso farlo con le " o gli '
    nel primo caso:
    "UPDATE nometabella SET nomecampo = 'dasostituire' WHERE id = 0",
    nel secondo
    'UPDATE nometabella SET nomecampo = 'dasostituire' WHERE id = 0'
    sostituendo la variabile puoi aver problemi di comprensione nella rilettura e di scazzo degli apici, nota il termine tecnico.

    Concatenando il tutto risolvi: ragiona come se dividessi in 3 parti:

    UPDATE nometabella SET nomecampo = '
    dasostituire
    ' WHERE id = 0
    che diventano:
    $var= "UPDATE nometabella SET nomecampo = '"
    .
    $variabilealpostodi_dasostituire_
    .
    "' WHERE id = 0"

    su un'unica riga:
    $var ="UPDATE nometabella SET nomecampo = '" . $variabilealpostodi_dasostituire_ . "' WHERE id = 0" ;

    Chissà se mi son spiegato 🙂

    :ciauz:


  • User Newbie

    grazie mille davvero.
    questi apici virgolette e virgole mi sa che li hanno messi apposta per complicarmi la vita...

    vi chiedo un'altro piacere....
    alla fine di uno scriptino in un file tipo ciao.php qual'è il comando per far andare il browser ad una pagina tipo index.php? (sarà una cavolata ma non riesco a trovarlo)

    grazie ancora
    saluti


  • User Attivo

    controllo dell'update (puoi anche ometterlo)
    header("location: http://www.pio.pio");

    Ciao Valentino


  • User Newbie

    ..mi dispiace ragazzi...lasciamo perdere il secondo aiuto, pensavo funzionasse invece NO
    come mai a voi funziona??
    ho provato in tutti i modi indicati da voi.
    mi da questo errore : Parse error: syntax error, unexpected T_VARIABLE in /home/pareremi/public_html/sel.php on line 3

    il codice è questo :

    <?php
    $primapagina = $Recordset_perdata_1['idarticolo']
    $sel ="UPDATE homepage SET scelta = '" . $primapagina . "' WHERE id = 0" ;
    mysql_query($sel, $server1) or die(mysql_error());
    ?>

    che foo??


  • User Newbie

    grazie lumpi per l'aiuto


  • User Attivo

    @gabrogabro said:

    $seleziona = "UPDATE nometabella SET nomecampo = '$nomequery ['numero']' WHERE nometabella.nomecampochiave =0";

    mysql_query($seleziona) or die(etc. etc.);

    Prova così:
    $seleziona = sprintf("UPDATE nometabella SET nomecampo =%s
    WHERE nometabella.nomecampochiave =0", $HTTP_GET_VARS['numero']);

    Saluti


  • Moderatore

    Ehm, perché complicarti la vita se basta semplicemente mettere un ; nella riga precedente? 😄

    $primapagina = $Recordset_perdata_1['idarticolo'] **; <-- **


  • Moderatore

    massi ti ho fatto perdere tempo perche controllando è così ho impostato in variabile con le doppie virgolette(")

    ti ringrazio per la perla di saggezza 😄 scazzare


  • User Newbie

    grazie a tutti..
    massi era proprio un ;
    grazie il mio sito funzionerà.