Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 15
  1. #1
    Utente di HTML.it L'avatar di Base
    Registrato dal
    Apr 2001
    Messaggi
    822

    query "pesca codice" a random

    ciao a tutti, mi sono incartato su una query:
    ho una tabella chiamata mms_codelist:
    questa tabella ha 29000 record così coposta:
    campo id_codice (che va da 1 a 29000)
    campo codice (contiene un codice alfanumerico univoco a 10 caratteri)
    campo used (puoò assumere valore 0 o 1)

    in pratica avrei bisogno di "pescare" a random un codice copreso tra l'id_codice 25001 all'id_codice 29000, fin qui tutto ok, il mio problema è integrare nella query (forse con un ciclo) che non deve pescare un codice che ha nel record il campo used = 1

    in poche parole:
    pesca un record compreso tra 25001 e 29000, se trovi used == 1 nel record pescato, pescane un'altro e non ti fermare fino a quando non ne trovi uno con con il campo used == 0.

    ho cominciato con questa query ma è incompleta, mi sapreste aiutare?

    Codice PHP:
    $random rand(25001,29000);
    $querypesca mysql_query("SELECT * FROM mms_codelist WHERE id_codice = '$random' ") or die("Query Fallita: " mysql_error());
    $data mysql_fetch_array($querypesca);
    if (
    $data['used'] == 1) {
    ...


  2. #2
    Codice PHP:
    SELECT FROM mms_codelist WHERE used==AND id_codice BETWEEN 25001 AND 29000 ORDER BY RAND() 

  3. #3
    Dovresti eseguire un ciclo WHILE sul recordset risultante:

    Codice PHP:
    $random rand(25001,28993);
    $querypesca mysql_query("SELECT * FROM mms_codelist WHERE id_codice = '$random' ") or die("Query Fallita: " mysql_error());
    while (
    $data mysql_fetch_array($querypesca)) {
      if (
    $data['used'] == 0) {
        
    $trovato=1;
        break;
      } else
        
    $trovato=0;
    }

    if (
    $trovato// ho trovato un campo che contiene zero! 

  4. #4
    Utente di HTML.it L'avatar di Base
    Registrato dal
    Apr 2001
    Messaggi
    822
    Originariamente inviato da ellecubo
    Codice PHP:
    SELECT FROM mms_codelist WHERE used==AND id_codice BETWEEN 25001 AND 29000 ORDER BY RAND() 
    che figata! veloce la risposta e la query !! grande ... provo a vedere se funzia.
    grazie assai!!!

  5. #5
    Utente di HTML.it L'avatar di Base
    Registrato dal
    Apr 2001
    Messaggi
    822
    Originariamente inviato da Emulman
    Dovresti eseguire un ciclo WHILE sul recordset risultante:

    Codice PHP:
    $random rand(25001,28993);
    $querypesca mysql_query("SELECT * FROM mms_codelist WHERE id_codice = '$random' ") or die("Query Fallita: " mysql_error());
    while (
    $data mysql_fetch_array($querypesca)) {
      if (
    $data['used'] == 0) {
        
    $trovato=1;
        break;
      } else
        
    $trovato=0;
    }

    if (
    $trovato// ho trovato un campo che contiene zero! 

    bella anche questa grazie ragazzi.. !!

  6. #6
    basta aggiungerla come condiziona al where...
    comunque per estrazioni casuali puoi usare direttamente il rand di mySQL:

    codice:
    SELECT * FROM mms_codelist WHERE id_codice BETWEEN 25001 AND 29000 AND used=0 ORDER BY RAND()





    Talvolta anche una persona apparentemente inutile si rivela un abile samurai dalla forza di mille uomini, dimostrando di poter rinunciare alla vita e che il suo cuore si è completamente identificato con quello del suo padrone

  7. #7
    urca miseria quanto c'ho messo a scrivere
    Talvolta anche una persona apparentemente inutile si rivela un abile samurai dalla forza di mille uomini, dimostrando di poter rinunciare alla vita e che il suo cuore si è completamente identificato con quello del suo padrone

  8. #8
    Utente di HTML.it L'avatar di Base
    Registrato dal
    Apr 2001
    Messaggi
    822
    Originariamente inviato da 13manuel84
    basta aggiungerla come condiziona al where...
    comunque per estrazioni casuali puoi usare direttamente il rand di mySQL:

    codice:
    SELECT * FROM mms_codelist WHERE id_codice BETWEEN 25001 AND 29000 AND used=0 ORDER BY RAND()





    la query funziona, ma devo comunque settare used = 1 un volta prelevato il record .... come faccio ?

  9. #9
    usando il codice php che hos critto prima..

    Codice PHP:
    $random rand(25001,28993);
    $querypesca mysql_query("SELECT * FROM mms_codelist WHERE id_codice = '$random' ") or die("Query Fallita: " mysql_error());
    while (
    $data mysql_fetch_array($querypesca)) {
      if (
    $data['used'] == 0) {
        
    $codice=$data['id_codice'];
        
    $trovato=1;
        break;
      } else
        
    $trovato=0;
    }

    if (
    $trovato) {
      
    // ho trovato un campo che contiene zero!
      
    $sql "UPDATE mms_codelist SET used=1 WHERE id_codice=$codice";
      
    $query mysql_query($sql) or die("Query Fallita: " mysql_error());


  10. #10
    Utente di HTML.it L'avatar di Base
    Registrato dal
    Apr 2001
    Messaggi
    822
    Originariamente inviato da Emulman
    usando il codice php che hos critto prima..

    Codice PHP:
    $random rand(25001,28993);
    $querypesca mysql_query("SELECT * FROM mms_codelist WHERE id_codice = '$random' ") or die("Query Fallita: " mysql_error());
    while (
    $data mysql_fetch_array($querypesca)) {
      if (
    $data['used'] == 0) {
        
    $codice=$data['id_codice'];
        
    $trovato=1;
        break;
      } else
        
    $trovato=0;
    }

    if (
    $trovato) {
      
    // ho trovato un campo che contiene zero!
      
    $sql "UPDATE mms_codelist SET used=1 WHERE id_codice=$codice";
      
    $query mysql_query($sql) or die("Query Fallita: " mysql_error());

    ok provo con questa allora , mi sembrava solo più "snella" l'altra query ... tutto li.
    thanks provo.

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.