Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 11

Discussione: Problema comando MySql

  1. #1

    Problema comando MySql

    Salve!
    Sto gestendo un script contatore di download che si appoggia ad un db. In una tabella ogni riga corrisponde ad un file, con il corrispettivo link per il download, il contatore (il numero che s'incrementa, chiamato "dlc") e la data dell'ultimo download di quel file.
    Qui sotto vedete la parte di script interessata. Come vedete con un select mi tiro già l'ID della riga, il link e il precedente numero di download. Poi vado a variare il numero di download (dlc+1). In seguito, con il comando INSERT, vado a reinserire il nuovo DLC e la data, che viene creata precedentemente dallo script.
    Ecco, il problema è che se poi guardo, il DLC non è cambiato. In pratica questo script non lo varia. E non inserisce nemmeno la data. Anche se riesce a lanciare il download: questo fa pensare che il comando SELECT sia andato a buon fine, il comando INSERT no. Chi mi Può aiutare? Credo che il problema sia l'area indicata in rosso.

    $query = "SELECT id,link,dlc FROM download WHERE idn='$idn'";
    $result = mysql_query($query, $db);

    while ($row = mysql_fetch_array($result)) {
    $link=$row["link"];
    $dlc=$row["dlc"]+1;
    $id=$row["id"];

    }

    $query = "INSERT INTO download (dlc, data) VALUES ('$dlc', '$data') WHERE id='$id'";
    header ("Location: $link");

  2. #2
    innanzitutto dovresti fare la query UPDATE per aggiornare i donload di un file gia presente nella tabella (.altrimenti nn ho capito bene )
    http://codecanyon.net/category/all?ref=Manuelandro
    And I bet she told a million people that she'd stay in touch, Well all the little promises they dont mean much,When theres
    memories to be made

  3. #3
    in questo modo....

    Codice PHP:
    $query "SELECT id,link,dlc FROM download WHERE idn='$idn'";
    $result mysql_query($query$db);

    while (
    $row mysql_fetch_array($result)) {
    $link=$row["link"];
    $dlc=$row["dlc"]+1;
    $id=$row["id"];
    }

    $query "UPDATE dwonload SET dlc = $dlc AND data = NOW() WHERE id='$id'";
    header ("Location: $link"); 

    nota NOW() al posto di $data
    http://codecanyon.net/category/all?ref=Manuelandro
    And I bet she told a million people that she'd stay in touch, Well all the little promises they dont mean much,When theres
    memories to be made

  4. #4
    codice:
    $query = "UPDATE dwonload SET dlc = $dlc AND data = NOW() WHERE id='$id'"; 
    header ("Location: $link");



    non ci vuole AND tra i valori da aggiornare ma una virgola.

    Poi bisogna eseguire la query....

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

  5. #5

    Va bene cosi?

    Prima ancora che lo testi: secondo voi va bene così? Ho corretto?
    Ho lasciato $data e non NOW... qual è la differenza? E comunque, questo script è ok x voi?

    $query = "SELECT id,link,dlc FROM download WHERE idn='$idn'";
    $result = mysql_query($query, $db);

    while ($row = mysql_fetch_array($result)) {
    $link=$row["link"];
    $dlc=$row["dlc"]+1;
    $id=$row["id"];
    }

    $query = "UPDATE download SET dlc = $dlc , data = $data WHERE id='$id'";
    mysql_query($query, $db);

    header ("Location: $link");

    mysql_close($db);

  6. #6

    Perfetto

    Ok, va bene, funziona. Ma ora ho un altro problema e questo è peggiore!

    Nella pagina del download devo far apparire il numero di download che quel file ha ricevuto. L'errore che mi viene restituito al posto del numero è: Resource id #3

    Il php che in questo caso elabora il tutto si chiama dlvisual.php ed è fatto così:

    <?php

    include("config.inc.php");

    $db = mysql_connect($db_host, $db_user, $db_password);

    mysql_select_db($db_name, $db);

    $query = "SELECT dlc FROM download WHERE idn='$idn'";
    $result = mysql_query($query, $db);

    echo $result;
    ?>


    E viene rischiamato dalla pagina in questo modo (notare che "idn" è una seconda ID letterale che ho inventato per non andare a toccare la ID che è chiave della tabella.

    <?
    $idn=ants;
    require ("dlvisual.php");
    ?>

    Allora che significa l'errore che mi appare?

  7. #7
    codice:
    $query = "SELECT id, link
              FROM download 
              WHERE idn = '$idn'"; 
    $result = mysql_query($query, $db); 
    
    $row  = mysql_fetch_array($result); 
    
    $link = $row["link"]; 
    $id   = $row["id"];  
    
    $query = "UPDATE download SET 
              dlc = dlc + 1 , data = NOW()
              WHERE id = '$id'"; 
    
    mysql_query($query, $db); 
    mysql_close($db);
    
    header ("Location: $link");
    exit;
    ?>
    Poi...
    codice:
    ......
    $query = "SELECT dlc FROM download WHERE idn = '$idn'"; 
    
    $result = mysql_query($query, $db); 
    
    $pippo = mysql_fetch_assoc($result);
    echo $pippo['dlc']; 
    ?>
    Ma perche' mai hai paura di usare la chiave primaria.... quello e' un puro dato inutile.

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

  8. #8
    Originariamente inviato da piero.mac
    codice:
    $query = "UPDATE dwonload SET dlc = $dlc AND data = NOW() WHERE id='$id'"; 
    header ("Location: $link");



    non ci vuole AND tra i valori da aggiornare ma una virgola.

    Poi bisogna eseguire la query....
    lo so
    è la sveglia delle 7 del mattino ke mi allucina.
    http://codecanyon.net/category/all?ref=Manuelandro
    And I bet she told a million people that she'd stay in touch, Well all the little promises they dont mean much,When theres
    memories to be made

  9. #9

    Benone...

    Tutto ok. Va. Grazie mille Piero e gli altri!

    Dunque, non volevo usare l'id perche mentre sull'id non ho visualizzazioni e quindi, quando avrò una pagina admin per assegnare nuovi download non avrò riferimenti all'id, usando un'altro sistema di identificazione vado più diretto al file: siccome sono canzoni, do un nomignolo ad ogni canzone.

    Ma perche invece di darci un nomignolo non ci metti un numero come id, ti chiederai...

    Beh, son stato abituato a mettere una colonna ID auto_increment not null in ogni tabella... mi sono sempre trovato bene e voglio continuare così! Anche se spesso può risultare superfluo, spesso avere un Id univoco a scanso di tuoi errori, fa sempre comodo... soprattutto quando si riprendono in mano gli script dopo mesi...

    Altre 2 cose: mi spiegheresti a parole a cosa serve il comando mysql_fetch_assoc che hai usato?

    E in che formato si salva la data quando la si salva con NOW?

  10. #10
    http://it.php.net/manual/it/function...etch-assoc.php

    NOW()

    Returns the current date and time as a value in 'YYYY-MM-DD HH:MM:SS' or YYYYMMDDHHMMSS format, depending on whether the function is used in a string or numeric context.

    mysql> SELECT NOW();
    -> '1997-12-15 23:50:26'
    mysql> SELECT NOW() + 0;
    -> 19971215235026

    Within a stored routine or trigger, NOW() returns a constant time that indicates the time at which the routine or triggering statement began to execute. This differs from the behavior for SYSDATE().
    http://dev.mysql.com/doc/refman/5.0/...functions.html

    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.