Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 14
  1. #1

    Problema con array e ciclo while (presumo)

    Buona nottata a tutti, vi espongo subito il mio problema, il pezzo di codice che vi posterò di seguito riguarda una pagina in cui un utente debba poter selezionare la checkbox desiderata relativa al posto che vuole prenotare!

    Viene quindi stampata una griglia di checkbox (righe per colonne) tramite 2 cicli for.

    Ecco però il problema, ovvero se un posto è già prenotato invece di stampare la checkbox viene stampata un' immagine predefinita, e le coordinate relative al posto prenotato vengono pescate dal db e inserite in 2 array, uno per le righe e uno per le colonne (in un array perchè ci possono essere diversi posti prenotati)!!!

    Ho testato tutto e nella griglia stampata risulta occupato solo un posto, ovvero quello rappresentato dall' ultima coordinata presente nell' array.

    Certamente quindi devo aggiungere un ciclo while che andrà ad analizzare uno per uno le posizioni all'interno degli array per le righe e per le colonne.

    Ma dove metterlo??
    Ho provato dopo i cicli for ma purtroppo vengono stravolte le dimensioni della griglia di checkbox!!!
    Idem se lo metto prima...



    Codice PHP:
    <?php
    $query1 
    "SELECT row FROM prenotation WHERE id_show=$show";
    $result1 mysql_query($query1) or die (mysql_error());
    $row1 mysql_fetch_array($result1);
    $query2 "SELECT seatrow FROM prenotation WHERE id_show=$show";
    $result2 mysql_query($query2) or die (mysql_error());
    $row2 mysql_fetch_array($result2);
    for(
    $r=1;$r<=$righe;$r++){
          for(
    $c=1;$c<=$colonne;$c++){
          if((
    $r==$row1['row'])&&($c==$row2['seatrow'])){
          echo 
    "<img src=\"poltrona2.jpg\">";
          } else {
          echo 
    "<input name=\"posizione\" type=\"checkbox\" value=\"Colonna:$c  Fila:$r\"/>";
                }
          }
    echo 
    "
    "
    ;
    }
    ?>

    Non saprei davvero , l'idea è buona, e sono fiero di quello che ho creato, ma mi manca quest'ultimo passo...

    Grazie per l'attenzione e spero in un vostro aiuto!!!


  2. #2
    Beh intanto non serve fare due query, giacche' sono identiche a parte il nome del campo. Fai una sola query e costruisci un array bidimensionale per tenere traccia dei posti gia' occupati, quando stampi la tabella controlli l'array dando le "coordinate" del posto.

    Non testato e passibile di errori causa stanchezza

    Codice PHP:
    <?php
    $prenotazioni 
    = array();

    $query "SELECT row, seatrow FROM prenotation WHERE id_show=$show";
    $result mysql_query($query) or die (mysql_error());
    while (
    $row mysql_fetch_array($result)) {
        
    $prenotazioni[$row['row']][$row['seatrow']] = true;
    }

    for (
    $r=1$r<=$righe$r++) {
        for (
    $c=1$c<=$colonne$c++) {
            if (
    $prenotazioni[$r][$c]) {
                echo 
    "<img src=\"poltrona2.jpg\">";
            } else {
                echo 
    "<input name=\"posizione\" type=\"checkbox\" value=\"Colonna:$c  Fila:$r\"/>";
            }
        }
        echo 
    "
    "
    ;
    }
    ?>

  3. #3
    sì la doppia query era inutile hai ragione, e per quanto riguarda il resto............................................. ............................


    GRANDISSIMO GRAZIEEEEE

    non sono abituato ad usare gli array bidimensionali, o almeno non ne ho mai avuto la necessità, ma ora era la soluzione migliore

    Grazie davvero e nonostante l' ora non c'era nemmeno un errore dovuto alla stanchezza.


  4. #4
    Eccomi di nuovo, è sorto un altro problema relativo al pezzo postato precedentemente e che riguarda la fase successiva, ovvero la selezione di una o più checkbox e rimandare il valore in un altra pagina!

    Siccome posso selezionare più di una checkbox, che conterrà il numero della fila e il numero della colonna, i diversi valori dovranno essere anche loro salvati in un array, o sbaglio??

    Nella pagina successiva quindi, dopo aver richiamato la variabile postata, dovrò gestire un altro array bidimensionale e salvare le relative coordinate di tante quante sono le checkbox selezionate.

    Non saprei però come fare dato che il valore della checkbox è uno solo, righe e colonne insieme, quando invece sarebbe opportuno separarle:

    Codice PHP:
    echo "<input name=\"posizione\" type=\"checkbox\" value=\"[size=4][b]$c$r[/b][/size]\"/>"
    Non esiste un modo per assegnare 2 value all' input??

    Altrimenti come potrei fare??


  5. #5
    Non ho capito bene, il tuo problema e' separare il numero di riga dal numero di colonna?

  6. #6
    Sì sì, vorrei a seconda del valore riga e colonna aggiornare il mio db e occupare quella posizione.

    Penso che sia fondamentale quindi avere una variabile contenente la colonna e una la riga, e soprattutto dev'essere un' array dato che posso effettuare più di una selezione posto.

  7. #7
    Puoi usare un nome come "posizione[]" per i checkbox, in modo da avere i valori in un array. Per quanto riguarda il singolo valore, puoi semplicemente unire riga e colonna (magari con un separatore come ":" o "#" o quello che vuoi) nella stessa variabile (o, meglio, nello stesso elemento dell'array) e poi risepararle (explode()) nel codice che elabora i dati e li inserisce nel database.

  8. #8
    Può essere giusta la seguente sintassi per salvare i valori nell'array?

    $posizione[]=$_POST['posizione'];

  9. #9
    $posizione = $_POST['posizione'];

  10. #10
    Ma in questo modo se seleziono più di una checkbox mi mette i valori nell' array?? perchè ho l' impressione che nell' array mi metta per esempio se il value è "13,6", nella posizione 0 il numero 1, nella posizione 1 il 3, nella 2 la virgola ecc ecc...e non la stringa intera.

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.