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

    Città virtuale, problema...

    Ciao a tt,
    avrei un piccolo problema:
    non sono molto esperto di php ma in ogni caso sono riuscito a mettere su una città virtuale.
    Allura, ho una pagina della city che è il mercato che seleziona tutto dalla tabella oggetti e mi stampa il result su delle tabelle fatte a posta. Quindi, quando l'utente clicca compra, manda a do_compra.php l'ID dell'oggetto, il nome e il costo.
    Volevo chiedere: come faccio a dire al database di non cancellare il valore precedente di Oggetti nella tabella users e di aggiungere l'id dell'oggetto appena aquistato?
    Faccio un esempio:
    tizio va al mercato e compra l'armatura. Gli vengono scalati i soldi e, se va a vedere nell'avatar, trova il link oggetti. Clicca e gli esce una pagina che scrive che ha l'armatura e gli fa vedere l'immaginina.
    Quindi decide di comprarsi anche lo stiletto. Va al mercato, lo compra, gli vengono scalati i soldi, ma quando va a vedere gli oggetti, risulta che ha solo lo stiletto.
    Come ovviare a questo??
    grassie a tt!!!!!!

  2. #2
    Utente di HTML.it L'avatar di thepooh
    Registrato dal
    Oct 2005
    Messaggi
    203
    non so come hai strutturato il DB, ma dovrebbe essere una cosa del tipo:

    tabella1 = Id_personaggio, soldi
    tabella2 = Id_oggetto, prezzo
    tabella3 = id_oggetto, id_personaggio

    Quando presenti gli oggetti prendi la lista dalla tabella2, quando li vuoi comprare scali i soldi dalla tabella1 e inserisci una nuova riga nella tabella3, infine quando presenti gli oggetti posseduti devi fare una query sulla tabella3 del tipo:
    select * from tabella3 where id_personaggio='cccccc';

  3. #3
    Utente di HTML.it L'avatar di thitan
    Registrato dal
    Feb 2001
    Messaggi
    716
    altrimenti puoi metterci una "pezza", cioè quando fai la query di UPDATE fa UPDATE tabella SET colonna=CONCAT(colonna, '|', '$oggetto')

    poi quando listi i dati ti devi ricordare di farli "esplodere".

    xò questo metodo è mooolto casareccio, ti consiglio vivamente di fare la tabella oggetti/user!!

    www.inter-rail.it
    travellers, not tourist
    Is cuma cá mhinice a théann tú ar strae; is é is tábhachtaí gurb áil leat do bhealach a aimsiú arís.

  4. #4
    Allora, provate a dare un occhiata al codice xchè nn riesco a capire che c'è di sbagliato: gli ho detto di fare un insert into, e di dirmi Non riesco a creare il record quando non riesce a farlo... e contina a darmi l'errore. Ecco il codice:
    <?
    include "config.inc.php";
    include "controlla_login.php";
    $mysql = "SELECT OGGETTI, Soldi FROM USERS WHERE USERNAME = '$_SESSION[USERNAME]'";
    $result = mysql_query($mysql) or die("Non riesco a selezionare i record");
    $rs = mysql_fetch_array($result);
    $OGG = $rs['OGGETTI'];
    $SOLDI = $rs['Soldi'];
    $IDOGG = $_GET['IDOGG'];
    $Costo = $_GET['Costo'];
    if ($SOLDI < $Costo) {?>
    <script language=javascript>alert("Non hai abbastanza soldi");</script>
    <?
    } else {
    $k = "SELECT ID_USER FROM USERS WHERE USERNAME = '$_SESSION[USERNAME]'";
    $l = mysql_query($k) or die ("Non riesco a selezionare l'id");
    $o = mysql_fetch_array($l) or die ("Non riesco a creare l'array degli ID");
    $a="UPDATE USERS SET Soldi = Soldi - $Costo WHERE USERNAME = '$_SESSION[USERNAME]'";
    $b = mysql_query($a) or die ("Non riesco a scalare i soldi");
    $ID = $o['ID_USER'] or die("non riesco a settare la variabile $ID");
    $c = "INSERT INTO USERS (IDOGG, IDPG)
    VALUES ('$IDOGG','$ID')";
    $ol = mysql_query($c) or die ("Non riesco a inserire il record");
    ?>
    <script language=javascript>alert("Hai acquistato <?= $Ogg?>");</script>
    <?
    }
    ?>

  5. #5
    Ok, scherzavo: avevo sbagliato a dire in quale tabella doveva inserirlo...
    cmq un altra cosa: si può creare una tabella così?
    CREATE TABLE `OGG` (
    `IDOGG` int(11),
    `IDPG` int(11),
    )
    xchè mi da errore e nn capisco come mai...nel senso è necessario l'auto increment?

  6. #6
    Utente di HTML.it L'avatar di thepooh
    Registrato dal
    Oct 2005
    Messaggi
    203
    il nome tabella sarebbe meglio in minuscolo, se non erro server tipo aruba lo formattano in minusculo e poi ti danno errore nello script perchè sono case sensitive.
    Se non erro non ci va l'ultima virgola

  7. #7
    Originariamente inviato da KaNnA
    Ok, scherzavo: avevo sbagliato a dire in quale tabella doveva inserirlo...
    cmq un altra cosa: si può creare una tabella così?
    CREATE TABLE `OGG` (
    `IDOGG` int(11),
    `IDPG` int(11),
    )
    xchè mi da errore e nn capisco come mai...nel senso è necessario l'auto increment?

    Perchè per questo non usi PhpMyAdmin?
    Comunque vivamente consigliato fare 3 tabelle così come ti è stato detto da qualcuno ai primi post di risposta... Molto meno incasinato e più chiaro anche per future modifiche...

  8. #8
    Utente di HTML.it L'avatar di chris
    Registrato dal
    Sep 1999
    Messaggi
    1,568
    $Costo = $_GET['Costo'];

    Un piccolo appunto, attento che così hai dei grossi problemi di sicurezza. Non ti fidare mai dei dati che arrivano dall'esterno, fatti sempre mandare il minimo indispensabile (ad esempio l'id dell'oggetto) e poi ricavati i dati necessari direttamente lato server con un'interrogazione al database.

  9. #9
    ho già provato a scrivere, che so...
    http://www.isteriaworld.altervista.o...&&Ogg=Stiletto
    dove in realtà costo sarebbe 500, e mi reindirizza alla pagina principale nn so nemmeno xchè XD
    in ogni caso nn credo che gli utenti riescano a sorpassarlo...tutt al + ingrandirò la finestra in modo che cavi la barra di sotto e di sopra...tu guarda che faccio x evitare un po' di lavoro in + ghgh
    cmq ho risolto per quanto riguarda al mercato, grazie mille!!!!!

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 © 2024 vBulletin Solutions, Inc. All rights reserved.