Visualizzazione dei risultati da 1 a 9 su 9
  1. #1

    [MySql] id auto_inc (INT) ...strano!!!!

    premetto che ho letto tutto quello che offre il portale, ma nn riesco a capire dov'è l'anomalia...

    ho una semplice tabella con un campo id_nome_sito:
    -PRIMARY
    -auto_incremento
    -INT(11)

    PROBLEMI:
    - se ID è maggiore di 9, o cmq con 2 cifre nn visualizza il record
    - inserendo un nuovo record, con auto_inc nn me lo posiziona in fondo alla tabella (nonostante che il suo id sia maggiore di tutti gli altri)
    - se modifico il suo valore tramite MySqlAdmin(es: da 2 a 9) nn cambia di posto nella tabella

    potete schiarirmi le idee o suggerirmi dove posso trovare informazioni in merito (le pillole per neofiti le ho gia lette)

    grazie

  2. #2
    ehm...è normalissimo che non cambia posto...mysql li invia in base a come vengono inseriti

    devi usare order by per ordinarli

    per il fatto che non li visualizza non zo :\

    PS: int massimo arriva a 10 non a 11 puoi ridurlo

  3. #3
    Originariamente inviato da daniele_dll
    ehm...è normalissimo che non cambia posto...mysql li invia in base a come vengono inseriti
    devi usare order by per ordinarli
    per il fatto che non li visualizza non zo :\
    PS: int massimo arriva a 10 non a 11 puoi ridurlo
    ho individuato l'errore, o meglio lo script che nn va'....

    Spiego meglio il problema. Voglio estrapolare i dati presenti in un determinato rigo della tabella, senza conoscere nessuno dei valori dei suoi campi.
    Se ad esempio voglio leggere i dati del 5° rigo, utilizzo 2 query:
    -mysql_result($select, 5); per conoscere l'id
    -mysql_fetch_array($query2); per conoscere tutto il resto.

    lo script è il seguente:
    codice:
    <?php
    include ("config2.inc.php");
    $query = "SELECT id_sito FROM info_siti";
    $select = mysql_query($query, $connessione);
    $data = mysql_result($select, 5);
    $a = $data['id_sito'];
    
    $sql = "SELECT nome_sito FROM info_siti WHERE id_sito = $a";
    $query2 = mysql_query($sql, $connessione);
    $result = mysql_fetch_array($query2);
    $n_sito = $result["id_sito"];
    $titolo = $result["nome_sito"];
    print "$n_sito
    $titolo";
    mysql_close ($connessione) or die (errore());
    ?>
    se l'id è composto da una sola cifra (0<ID> 9), lo script funziona, mentre se l' id è composto da 2 cifre (ID> 9) lo script mi stampa la cifra relativa alla decina.
    Quindi se l'id è 23 mi stampa 2, e nn visualizzo il record giusto...

    ohhh miei Sommi Maestri, qual'è l'intoppo?
    i miei più Sinceri Saluti

  4. #4
    Mamma mia che masturbo mentale.....

    Gia' il sommo daniele disse che i record nel db non sono ordinati, quindi il fatto che tu estragga il quinto record non ha molto significato ai fini del possibile ordinamento.

    Quindi in assenza di un ordinamento non si capisce per quale ragione tu debba estrarre il quinto. Al limite dovresti fare :

    SELECT * FROM info_siti
    limit 5,1

    ti estrae giusto il quinto.

    Per il mistero del 10 posta la struttura della tabella, ricavala con:

    SHOW CREATE TABLE info_siti.


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

  5. #5
    Originariamente inviato da piero.mac
    Gia' il sommo daniele disse che i record nel db non sono ordinati, quindi il fatto che tu estragga il quinto record non ha molto significato ai fini del possibile ordinamento.
    i record sono ordinati, mi ha tratta in inganno l'errore che ho postato su, dove appunto io mi aspettavo un record con id=20, e lui mi mostrava il record con id=2.... e così con tutti gli altri
    la tabella ha queste caratteristiche:
    CREATE TABLE `info_siti` (
    `id_sito` int(11) NOT NULL auto_increment,
    `nome_sito` varchar(30) NOT NULL default '',
    `img` blob NOT NULL,
    `ita` text,
    `eng` text,
    `url_sito` varchar(250) NOT NULL default '',
    PRIMARY KEY (`id_sito`)
    ) TYPE=MyISAM

  6. #6
    La tabella e' corretta, l'unico particolare che dovresti correggere e' il campo INT(11) che al max puo essere 10 e non 11 come gia' disse daniele.

    Il problema e' che non si capisce quale sia il tuo problema.

    l'id identifica un record, non il suo ordinamento. Se ti serve ordinato per id lo devi specificare.

    SELECT * FROM info_siti
    ORDER BY id_sito


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

  7. #7
    Originariamente inviato da piero.mac
    Il problema e' che non si capisce quale sia il tuo problema.
    l'id identifica un record, non il suo ordinamento. Se ti serve ordinato per id lo devi specificare.

    SELECT * FROM info_siti
    ORDER BY id_sito
    nn mi interessa ordinare i record, sono già ordinati...

    ho un maledetto ciclo for, in flash, che mi genera TOT numeri (0-14) tanti quante sono le righe della tabella (15).
    Dato che gli id nn corrispondono ai numeretti generati dal ciclo for, per leggere il contenuto dei records, utilizzo mysql_result($select, $numero_della_riga); per estrapolare l'ID del record, e mysql_fetch_array($query2); per estrapolare tutti gli altri dati.

    il problema è che se l'id è maggiore di 9 nn funziona lo script, e quindi nn riesco a leggere i dati presenti nei records dal decimo in poi...

    tutto qui!
    spero di essere stato chiaro

    grazie cmq piero.mac

  8. #8
    Ma se tu estrai tutti i record, ordinati per come ti pare, e poi conti i record estratti oppure utilizzi un ciclo WHILE per visualizzarli non e' la stessa cosa?....

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

  9. #9
    no! in questo modo nn posso (o nn saprei) gestirli ...
    per ogni record si crea dinamicamente un Movie Clip in flash che contiene tutti i dati, quindi ho bisogno di estrarre i records singolarmente.
    cmq provo a fare un WHILE e vedere se riesco a memorizzare tutti gli id da qualche parte (speriamo bene)

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.