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

    sql in php ho una domanda

    Ciao a tutti, io ho preso dei dati dal data base, il codice è moltoo lungo quindi vi faccio vedere solo la parte del lezionamento:

    Codice PHP:
    //seleziono tutto
    mysql_fetch_row($result2);
    $sql_altri_villi ="Select
    id_slot,
    id_villaggio,
    id_giocatore,
    tipo_terreno,
    nome_giocatore,
    nome_villaggio
    FROM mappa
    WHERE x = 
    $a_x1 AND y = $a_y1 OR x =$a_x2 AND y = $a_y2  OR $a_x3 AND y = $a_y3 OR  $a_x4 AND y = $a_y4 OR $a_x5 AND y = $a_y5 OR
              
    $b_x1 AND y = $b_y1 OR x =$b_x2 AND y = $b_y2  OR $b_x3 AND y = $b_y3 OR  $b_x4 AND y = $b_y4 OR $b_x5 AND y = $b_y5 OR
              
    $c_x1 AND y = $c_y1 OR x =$c_x2 AND y = $c_y2  OR $c_x3 AND y = $c_y3 OR  $c_x4 AND y = $c_y4 OR $c_x5 AND y = $c_y5 OR
              
    $d_x1 AND y = $d_y1 OR x =$d_x2 AND y = $d_y2  OR $d_x3 AND y = $d_y3 OR  $d_x4 AND y = $d_y4 OR $d_x5 AND y = $d_y5 OR
              
    $e_x1 AND y = $e_y1 OR x =$e_x2 AND y = $e_y2  OR $e_x3 AND y = $e_y3 OR  $e_x4 AND y = $e_y4 OR $e_x5 AND y = $e_y5";
     
    $result2 mysql_query($sql_altri_villi);
    $array2 mysql_fetch_row($result2); 
    io ho questa domanda ho messo molti or perche deve selezionarmi tutti questi campi:
    id_slot,
    id_villaggio,
    id_giocatore,
    tipo_terreno,
    nome_giocatore,
    nome_villaggio

    in tutti i where, richiamare WHERE x = $a_x1 AND y = $a_y1 è facile basta fare:
    (seleziono id slot)
    Codice PHP:
    echo"$array2[0]"
    ma se invece voglio selezionare il secondo where?
    questo:
    OR x =$a_x2 AND y = $a_y2

    come faccio?
    grazie in anticipo grazie

  2. #2
    guarda che echo"$array2[0]"; non ti ritorna necessariamente il primo where, perché i result sono ordinati in base alla chiave primaria, se non indichi un ORDER BY.
    Se vuoi ottenere un dato particolare devi fare un ciclio while controllando tutti i valori e, se ti serve solo il primo, uscire con un break quando sei a posto, ma comunque avrai bisogno di X e di Y nel return della query.
    (
    Select
    id_slot,
    id_villaggio,
    id_giocatore,
    tipo_terreno,
    nome_giocatore,
    nome_villaggio,
    x,
    y
    FROM mappa

    Poi controlli che $array2[6] ==$a_x2 && $array2[7] == $a_y2
    )


    Se hai bisogno di un recor più specifico non fai prima a creare una query dinamica?
    Voglio dire, tu passi in GET l'indice del where, o dei where, da impostare e pi crei la query con quelli soltanto.

  3. #3
    Se hai bisogno di un recor più specifico non fai prima a creare una query dinamica?
    Voglio dire, tu passi in GET l'indice del where, o dei where, da impostare e pi crei la query con quelli soltanto.
    non ho capito cosa intendi...




    Cmq ora ti spiego meglio, il
    x = $a_x1 AND y = $a_y1 sono numeri quindi in sostanza fa cosi:
    x (del db) = $a_x1, in questo caso $a_x1 corristonde a 1 quindi sa dove prenderle le info.
    il mio problema è che mi seleziona solo il primo where, per gli altri come faccio?
    questa mi sembrava la soluzione piu ragionevole

  4. #4
    forse non mi sono spiegato bene, praticamente a me serve cnhe ogni or del while venga eeseguito, come posso fare?

  5. #5
    up

  6. #6
    Utente di HTML.it L'avatar di wdb
    Registrato dal
    Nov 2002
    Messaggi
    155
    Chiedo scusa ma non ho capito nemmeno io la tua domanda.
    L'unica osservazione che posso fare e' di aggiungere gruppi di parentesi tonde, aperte e chiuse, per separare LOGICAMENTE le condizioni della tua WHERE (con dentro gli AND e OR conditions).

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.