Navigazione

    Privacy - Termini e condizioni
    © 2020 Search On Media Group S.r.l.
    • Registrati
    • Accedi
    • CATEGORIES
    • Discussioni
    • Non letti
    • Recenti
    • Hashtags
    • Popolare
    • Utenti
    • Stream
    • Interest
    • Categories
    1. Home
    2. Categorie
    3. Coding e Sistemistica
    4. Coding
    5. Recuperare dati dal database
    Questa discussione è stata cancellata. Solo gli utenti con diritti di gestione possono vederla.
    • S
      sovietiko User Attivo • ultima modifica di

      Recuperare dati dal database

      Ciao a tutti,

      mi è sorto un quesito, se ho una tabella nel database in questo modo:

      Gran Bretagna - USA - 2009
      Francia - 2011
      Italia - 2010

      Come posso fare una query e ricercare per l'anno?

      Forse con LIKE, devo provare.

      Grazie, Saluti.

      0 Miglior Risposta Ringrazia Cita Rispondi

        1 Risposta Ultima Risposta
      • A
        andrearufo User Attivo • ultima modifica di

        Non credo di aver ben capito come sia strutturata la tua tabella ma se quello che hai scritto sta tutto in un campo (e non e` un record), si, bisognerebbe cercare "SELECT [...] LIKE %". $anno ."[...]" e quindi dove la stringa finisce con $anno che dovrebbe essere il numero che ti interessa.

        0 Miglior Risposta Ringrazia Cita Rispondi

          1 Risposta Ultima Risposta
        • S
          sovietiko User Attivo • ultima modifica di

          [...]
          Sì sì stà tutto in un campo, dovrebbe funzionare in questo modo.

          Grazie mille, saluti.

          0 Miglior Risposta Ringrazia Cita Rispondi

            1 Risposta Ultima Risposta
          • A
            andrearufo User Attivo • ultima modifica di

            Fammi sapere se riesci ;-]

            0 Miglior Risposta Ringrazia Cita Rispondi

              1 Risposta Ultima Risposta
            • S
              sovietiko User Attivo • ultima modifica di

              Ok funziona perfettamente grazie mille.

              Saluti.

              0 Miglior Risposta Ringrazia Cita Rispondi

                1 Risposta Ultima Risposta
              • S
                sovietiko User Attivo • ultima modifica di

                Visto che ci siamo avrei un altro quesito inerente al topic vediamo se mi sai aiutare andrea.

                Allora dovrei fare delle ricerche nel db in base a un range di età

                La tabella è in date così:

                4-11-1986

                gli input mi danno gli anni:

                $eta1 = 18
                $eta2 = 26

                Come faccio per ricercare nel db quel range di età??

                WHERE eta = ?

                Non riesco proprio a capire come fare ehehe

                Grazie, saluti.

                0 Miglior Risposta Ringrazia Cita Rispondi

                  1 Risposta Ultima Risposta
                • A
                  andrearufo User Attivo • ultima modifica di

                  Non credo di aver capito bene: che ralazione c'e tra date e eta?

                  Comunque, sia nel caso hai l'anno oppure l'eta puoi fare un controllo se $eta e` compreso tra un max e un min: tipo if($eta>10 && $eta<20) query .= " range='range10-20' ";

                  0 Miglior Risposta Ringrazia Cita Rispondi

                    1 Risposta Ultima Risposta
                  • S
                    sovietiko User Attivo • ultima modifica di

                    Allora ti spiego meglio

                    con questa funziona calcolo l'età della persona dalla data di nascita presente nel database 4-11-1986

                    quindi $compleanno = 4-11-1986

                    [php]
                    {
                    list($bday_day, $bday_month, $bday_year) = array_map('intval', explode('-', $compleanno));

                    	if ($bday_year)
                    	{
                    		$now = getdate(time() + timezone + dst - date('Z'));
                    
                    		$diff = $now['mon'] - $bday_month;
                    		if ($diff == 0)
                    		{
                    			$diff = ($now['mday'] - $bday_day < 0) ? 1 : 0;
                    		}
                    		else
                    		{
                    			$diff = ($diff < 0) ? 1 : 0;
                    		}
                    
                    		$age = (int) ($now['year'] - $bday_year - $diff);
                    	}
                    }
                    

                    [/php]

                    Ora io dovrei fare una ricerca nel db per età. CIoè ho due input per la ricerca:

                    eta1 = 18
                    eta2 = 26

                    In teoria dovrei trasformarli in date e fare una ricerca, non sò se è chiaro..

                    0 Miglior Risposta Ringrazia Cita Rispondi

                      1 Risposta Ultima Risposta
                    • A
                      andrearufo User Attivo • ultima modifica di

                      Ah... una ricerca del range di eta` nel db!

                      Allora nella query dovrebbe bastare mettere delle condizioni: ' WHERE eta>18 AND eta<26 '. Ti restituisce tutte le righe dove eta e` maggiore di 18 e minore di 26.

                      0 Miglior Risposta Ringrazia Cita Rispondi

                        1 Risposta Ultima Risposta
                      • S
                        sovietiko User Attivo • ultima modifica di

                        [...]

                        Sì ma peccato che nella tabella è riportata solo la data di nascita così

                        4-11-1986 ehehee

                        Forse ho capito, ricalcolo la data di ricerca, cioè uso la funzione che mi dà l'età al contrario, ricavando la data dall eta 🙂

                        0 Miglior Risposta Ringrazia Cita Rispondi

                          1 Risposta Ultima Risposta
                        • S
                          sovietiko User Attivo • ultima modifica di

                          Ecco ora funziona

                          [php]
                          $now = getdate(time() + timezone + dst - date('Z'));
                          $anno1 = $now['year'] - $eta1;
                          $anno2 = $now['year'] - $eta2;
                          $anno1ok = "".$now['mday']."-".$now['mon']."-$anno1";
                          $anno2ok = "".$now['mday']."-".$now['mon']."-$anno2";[/php]

                          O per lo meno ottengo le date da ricercare.

                          Solo che mi dà un errore quando ricerco:

                          WHERE nascita=>'$anno1ok' AND nascita=<'$anno2ok'"

                          Spiacenti, si è verificato un errore: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '=>'4-10-1993 AND nascita=<'4-10-1988' order by username limit 0,10' at line 1

                          Come mai? Sbaglio la ricerca date?

                          0 Miglior Risposta Ringrazia Cita Rispondi

                            1 Risposta Ultima Risposta
                          • T
                            thedarkita ModSenior • ultima modifica di

                            Ciao Sovietiko,
                            puoi fare un echo della query e postarla?

                            0 Miglior Risposta Ringrazia Cita Rispondi

                              1 Risposta Ultima Risposta
                            • S
                              sovietiko User Attivo • ultima modifica di

                              Ciao Dark,

                              [php]
                              if($eta1 != "nullo" AND $eta2 != "nullo") { $rice5 = "AND nascita=>'$anno1ok' AND nascita=<'$anno2ok'"; }

                              $result = $db->sql_query("select * from ".$prefix."_users where username != 'Anonymous' $rice5 order by username limit $min,$perpage") or die("Spiacenti, si è verificato un errore: ".mysql_error());
                              [/php]

                              Questo il codice, come faccio a fare un print? Ho un vuoto di memoria ehehe

                              0 Miglior Risposta Ringrazia Cita Rispondi

                                1 Risposta Ultima Risposta
                              • A
                                andrearufo User Attivo • ultima modifica di

                                La query e` quella stringa che metti in sql_query()

                                Fai una stringa e poi inserisci la variabile cosi` la puoi stampare.

                                Fatto sta che l'errore ti viene dato in quanto non ci stai mettendo un anno ma una data.

                                0 Miglior Risposta Ringrazia Cita Rispondi

                                  1 Risposta Ultima Risposta
                                • S
                                  sovietiko User Attivo • ultima modifica di

                                  Scusate il ritardo non ero a casa

                                  [php]
                                  Spiacenti, si è verificato un errore: select * from utenti where username != 'Anonymous' AND nascita=>'4-10-1993' AND nascita=<'4-10-1985' order by username limit 0,10 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '=>'4-10-1993' AND nascita=<'4-10-1985' order by username limit 0,10' at line 1[/php]

                                  Forse il problema è che il campo è varchar e non un date? Se così fosse una soluzione alternativa? non posso rimodificare tutto..

                                  0 Miglior Risposta Ringrazia Cita Rispondi

                                    1 Risposta Ultima Risposta
                                  • A
                                    andrearufo User Attivo • ultima modifica di

                                    Ottieni la data dalla query; fai una substring della "data" (stringa dovremmo dire) per ottenere l'anno es. substr($data,-4,4); ottieni l'eta` dall'anno e poi fai un if... ecc. ecc. ecc.

                                    0 Miglior Risposta Ringrazia Cita Rispondi

                                      1 Risposta Ultima Risposta
                                    • S
                                      sovietiko User Attivo • ultima modifica di

                                      Guarda ho risolto mettendo il campo in date.

                                      [php]
                                      nascita BETWEEN '".$anno2ok."' AND '".$anno1ok."'[/php]

                                      Funziona regolare.

                                      Mi toccherà cambiare le date nel db prima di fare il cambio ufficiale..

                                      Pazienza.

                                      Saluti!

                                      0 Miglior Risposta Ringrazia Cita Rispondi

                                        1 Risposta Ultima Risposta
                                      • A
                                        andrearufo User Attivo • ultima modifica di

                                        Bhe, meglio! 😛

                                        0 Miglior Risposta Ringrazia Cita Rispondi

                                          1 Risposta Ultima Risposta
                                        Caricamento altri post
                                        Rispondi
                                        • Topic risposta
                                        Effettua l'accesso per rispondere
                                        • Da Vecchi a Nuovi
                                        • Da Nuovi a Vecchi
                                        • Più Voti