[RISOLTO] Problema switch
[RISOLTO] Problema switch postato il 04/10/2013 16:20:05 nel forum programmazione, open source e hosting e modificato da astro991 il 04/10/2013 17:35:04
Salve a tutti
Sto cercando di creare un modulo per richiedere la conferma o meno di determinate attività. Ho creato nel db una tabella chiamata conferma_pg così articolata:
id_conferma
pg
data_conferma
conferma
non_conferma
creare il modulo per la richiesta di conferma è stata una passeggiata. Il problema lo sto avendo nella creazione del file che deve visualizzare le richieste. Il modulo dovrebbe essere così articolato:
NOME RICHIEDENTE - CONFERMA/NON CONFERMA - TASTI PER LA CONFERMA/NON CONFERMA
La parte iniziale del codice del modulo è questa:
<?php
if ($_SESSION['permessi'] < MODERATOR){
echo 'NON HAI I PERMESSI';
}else{
$result = gdrcd_query("SELECT * FROM conferma_pg ORDER BY data_conferma ASC, 'result');
/** Procedure conferme e non conferme **/
switch($_POST['ops']){
case 'confirmed':
$id_record = (int)$_POST['id_record'];
$status_conf = (int)$_POST['status_conf'];
gdrcd_query("UPDATE conferma_pg SET conferma = $status_conf WHERE id_conferma = $id_record")or die(mysql_error());
break;
case 'not_confirmed':
$id_record = (int)$_POST['id_record'];
$status_no_conf = (int)$_POST['status_no_conf'];
gdrcd_query("UPDATE conferma_pg SET non_conferma = $status_no_conf WHERE id_conferma = $id_record")or die(mysql_error());
break;
}
?>
Non dovrebbero esserci errori, poiché l'ho basato sul codice che è presente nella pagina forum.inc.php. Invece mi dà questo problema:
Parse error: syntax error, unexpected T_ENCAPSED_AND_WHITESPACE, expecting T_STRING or T_VARIABLE or T_NUM_STRING e dice che si trova on line 9. Contando le righe scopro che la riga 9 è questa:
switch($_POST['ops']){
Ma dove è l'errore? Io non riesco a trovarlo, anche perché nelle altre pagine simili che ho creato mi dice che va tutto bene.
Ah, sto usando l'ultima versione del gdrcd.
Pagine → 1 2
04/10/2013 16:28:44
<?php
if ($_SESSION['permessi'] < MODERATOR){
echo 'NON HAI I PERMESSI';
}else{
$result = gdrcd_query("SELECT * FROM conferma_pg ORDER BY data_conferma ASC", 'result');
/** Procedure conferme e non conferme **/
switch($_POST['ops']){
case 'confirmed':
$id_record = (int)$_POST['id_record'];
$status_conf = (int)$_POST['status_conf'];
gdrcd_query("UPDATE conferma_pg SET conferma = ".$status_conf." WHERE id_conferma = ".$id_record."")or die(mysql_error());
break;
case 'not_confirmed':
$id_record = (int)$_POST['id_record'];
$status_no_conf = (int)$_POST['status_no_conf'];
gdrcd_query("UPDATE conferma_pg SET non_conferma = ".$status_no_conf." WHERE id_conferma = ".$id_record."")or die(mysql_error());
break;
}
?>
Servito, avevi dimenticato una virgolettatura nella query prima.
P.S. = Perché fare una colonna Conferma ed una Non Conferma e non una sola "Conferma" con caratteristica booleana Vero-Falso?
04/10/2013 16:36:53
Pensa te che errore stupido -.- E dire che l'avevo controllato e ricontrollato, non capisco come mi sia sfuggito. Grazie.
L'ho fatto così solo perché nell'altra maniera non saprei come farlo. In poche parole vorrei che il codice funzionasse così: quando arriva la richiesta il campo CONFERMA/NON CONFERMA deve essere vuoto (quindi senza nessuna scritta), poi se clicco sul tasto CONFERMA appare la scritta "confermato", se clicco sul tasto NON_CONFERMA appare la scritta "non confermato". Avevo provato a farlo basandomi sul tasto "topic aperto/chiuso" presente nel forum, ma in quel modo mi metteva in automatico la scritta "non confermato" finché io non cliccassi sul tasto, mentre all'inizio (ossia non appena la richiesta viene inviata) il campo deve restare vuoto. Solo che non sapendo come farlo ho optato per questa soluzione.
04/10/2013 16:46:12
Usi una colonna sola che si chiama "Conferma", categoria Int(1) e valore predefinito NULL.
Se è confermato, metti a 1, se non confermato metti a 0 e predefinito NULL.
Fai una verifica con SWITCH, se è 1 dice confermato, se 0 non confermato, se nullo sta zitto XD
04/10/2013 16:52:21
Ah, provo subito grazie. Ho però un altro problema, ossia non mi visualizza le richieste, nonostante nel db ci siano. Dopo il pezzo di codice di prima c'è questo:
<table>
<tr>/**contiene la prima riga della tabella con le scritte "pg", "conferma" etc**/</tr>
<?php while($row=mysql_fetch_array($result)){ ?>
<tr>
<td class="casella_elemento">
<div class="elementi_elenco">
<a href="main.php?page=scheda&pg=<?php echo gdrcd_filter('out',$row['pg']); ?>">
<?php echo gdrcd_filter('out',$row['pg']); ?>
</a>
</div>
</td>
</tr>
<?php }//while ?>
</table>
questo è copiato pari pari dal file del forum, eppure non mi funziona.
04/10/2013 16:57:53
Questo codice, ammesso che chiami le richiesti giuste, l'unica cosa che fa e metterti un link alla scheda pg.
04/10/2013 17:01:35
Si lo so, ma a me non visualizza nemmeno la scritta con il nome del pg da cliccare..
04/10/2013 17:04:20 e modificato da overlord il 04/10/2013 17:07:06
Evidentemente ci sarà un errore in $result
EDIT: e prova ad usare mysql_fetch_assoc() invece di array. Ma perché mischi richiami mysql diretti, che ormai sono pure deprecati, con quelli di gdrcd, usa o l'uno o l'altro, no?
04/10/2013 17:13:02
Quello l'avevo immaginato, anche se non riesco a capire cosa..
Riguardo allo switch che mi dicevi prima, dovrei fare una cosa del genere:
switch($_POST['ops']=="confirmed"){
case 0:
case 1:
}
mi basta questo giusto?
04/10/2013 17:18:34
No, devi controllare il valore "Conferma" della tabella dopo averlo pescato, non quello di $_POST... se ho capito bene che vuoi fare XD :-P Stai confondendo pure me adesso.
04/10/2013 17:25:11
Provo a spiegare meglio quello che avrei intenzione di fare xD
In questo modulo dovrebbe comparire (sperando di riuscire a risolvere quel problema) una tabella così strutturata:
NOME PG CHE FA LA RICHIESTA - CONFERMA/NON CONFERMA - TASTI
dove:
- nel campo NOME PG CHE FA LA RICHIESTA deve comparire il nome del pg
- nel campo CONFERMA/NON CONFERMA deve comparire la scritta "confermato" se uno conferma, "non confermato" se non conferma, nulla come default
- nel campo TASTI il tasto per confermare e, per come l'avevo fatto prima, il tasto per non confermare
quindi se clicco il tasto CONFERMA appare la scritta "confermato", se clicco sul tasto NON CONFERMA appare la scritta "non confermato". Così è come l'avevo fatto prima.
Discussione seguita da
Pagine → 1 2
Rispondi alla Discussione Segui Discussione Inoltra Discussione Forum Programmazione, Open Source e Hosting Elenco Forum
Articoli, Interviste e altre Risorse!
Wuthering Waves ↗
Tibia ↗
War Thunder ↗
World of Tanks ↗
World of Warship ↗
New Orleans ↗
World of the Sea Battle ↗
Project Entropy ↗