[RISOLTO]oscurare momentaneamente oggetto del database

Il problema sta nella variabile $dispo che è un array mentre deve essere un intero di valore 0 o 1.
Come hai chiamato il campo che si chiamava set? Credo dispo.
Allora la query dovrebbe essere così:
$sql = "UPDATE ".$table." SET ".$champ." = '".addslashes($nmodif)."', dispo = ".$dispo." WHERE id = ".$id[$idxid]."";
Ovviamente correggi prima il valore di $dispo che deve essere valere 0 o 1.
 
ciao, grazie mille per la risposta...
mi dà questo errore adesso:

Notice: Array to string conversion in C:\xampp\... on line 83
Erreur SQL > UPDATE tpain SET nom_pain = 'Baguette', dispo = Array WHERE id = 1
Unknown column 'Array' in 'field list'
 
Si dal tuo codice non si capisce cosa ci metti in $dispo. E' li il problema.
 
ci sono riuscito, ora riesco a modificare il campo (è normale che lo 0 non si veda?)

Potresti aiutarmi per l'ultima cosa per favore?
Non riesco ad usare il WHERE in questa pagina:

PHP:
foreach($tab['pain'] as $id => $pain)   
{			
	if ($pain == 'Baguette')
		echo '<input type="radio" checked="checked" name="rbpain" value="'.$pain.'"  />'.$pain;	
	else
		echo '<input type="radio" name="rbpain" value="'.$pain.'"  />'.$pain;			
}

Nella pagina di prima posso aggiungere o modificare il tipo di pane, grazie al vostro aiuto ora ho aggiunto il campo "dispo" di tipo "set" e riesco anche a modificarlo (0 o 1).
Ma non so dove mettere la variante WHERE...grazie!
 
ciao!
scusa non riesco a spiegarmi.

Ho una pagina dove si possono sommare diversi ingredienti per formare un sandwich personalizzato.
Questo è il codice della pagina che appare all'utente e dove seleziona gli ingredienti:
PHP:
//Pain	
					
foreach($tab['pain'] as $id => $pain)   
{			
	if ($pain == 'Baguette')
		echo '<input type="radio" checked="checked" name="rbpain" value="'.$pain.'"  />'.$pain;	
	else
		echo '<input type="radio" name="rbpain" value="'.$pain.'"  />'.$pain;			
}
//Charcuterie
echo '</div></td></tr></table><br />
<div class="autorizzo">Dans le cas où l\'un des produits sélectionnés n\'etait pas disponible, nous autorisez-vous à le remplacer par un autre?<br />
<p class="PCentrer"><input type="radio" name="autorizzazione" value="OUI" checked="checked"/>OUI
                  <input type="radio" name="autorizzazione" value="NON" />NON</p></div>
      <table width="690" border="0" cellspacing="5" cellpadding="5">
      <tr>
      <td valign="top"><p class="titolo1">Charcuteries :</p><br />';	
foreach($tab['charcuterie'] as $id => $charcuterie)		
	echo ' <input type="checkbox" name="cbcharcuteries[]" value="'.$charcuterie.'" />'.$charcuterie.'<br />';	
//Fromages
echo '</td>
      <td valign="top"><p class="titolo1">Fromages :</p><br />';	
foreach($tab['fromage'] as $id => $fromage)		
	echo ' <input type="checkbox" name="cbfromages[]" value="'.$fromage.'" />'.$fromage.'<br />';	
//Garniture (inverser à l'affichage avec les diver en bas!!!)
echo '<br /><p class="titolo1">Divers :</p><br />';	
foreach($tab['garniture'] as $id => $garniture)		
	echo ' <input type="checkbox" name="cbgarnitures[]" value="'.$garniture.'" />'.$garniture.'<br />';	
//Divers
echo '</td><td valign="top"><p class="titolo1">Garnitures :</p><br />';	
foreach($tab['divers'] as $id => $divers)		
	echo ' <input type="checkbox" name="cbdivers[]" value="'.$divers.'" />'.$divers.'<br />';

Ora ho aggiunto il campo di tipo "set" chiamato "dispo" per tutte le tabelle degli ingredienti (quindi tpain, tfromages, tgarnitures etc)
Come faccio a usare il [WHERE dispo="1"] in un tipo di pagina come questa?
Cioè, nelle altre pagine ho il comando:
PHP:
$sql_pane = "SELECT * FROM tpane
            WHERE dispo='1'";

Grazie infinite, non so proprio come fare!
 
questa è la pagina dove si compone il panino:
esempio.png

questa invece è la pagina admin dove si aggiungono o modificano gli ingredienti
esempio1.png
 
dunque vicino al tipo di pane (seconda immagine) ho il valore 1 o 0 del campo dispo.
Ma come vedi su "Pain aux olives" ho messo il valore 0 ma appare ugualmente nella pagina (prima immagine)

Mi spiace torturavi cosî, scusatemi tanto...
 
Puoi anche disabilitare il check se non è disponibile (ovviamente devi aggiungere altri controlli lato php perchè il check si potrebbe comunque abilitare).
 
ciao
se non ho capito male quello che vuoi fare, ti suggerirei di provare questo
PHP:
<?php
//.....
if(isset($_POST['modifica'])){
	$modificare=$_POST['dispo'];
	foreach($modificare as $id_mod => $val_mod){
		$query="UPDATE tpain SET disp='$val_mod' WHERE id='$id_mod'";
		$ris=mysqli_query($query);
	}
//....
}
//......
$query="SELECT * FROM tpain ORDER BY pain";
$ris=mysqli_query($query);
?>
<form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post">
  <table width="60%"  border="0" cellspacing="0" cellpadding="3">
    <tr>
      <td width="64%">&nbsp;</td>
      <td colspan="2" align="center">disponibilit&agrave;</td>
    </tr>
    <tr>
      <td>tipo pane: </td>
      <td width="18%" align="center">SI</td>
      <td width="18%" align="center">NO</td>
    </tr>
<?php 
while($r=mysqli_fetch_array($ris)){
	$id=$r['id'];
	$tipo=$r['nom_pain'];
	$disp=$r['disp'];
	if($disp=="0"){$ch_0="$checked";$ch_1="";}else{$ch_0=="";$ch_1=="checked";}
	echo "<tr><td>$tipo</td>";
	echo "<td align=\"center\"><input name=\"dispo[$id]\" type=\"radio\" value=\"1\"$ch_1 ></td>";
	echo "<td align=\"center\"><input name=\"dispo[$id]\" type=\"radio\" value=\"0\"$ch_0 ></td>";
	echo "</tr>";
}
?>
	<tr><td>&nbsp;</td><td align="center">&nbsp;</td>
      <td align="center"><input name="modifica" type="submit" id="modifica" value="modifica"></td>
    </tr>
  </table>
</form>

in questo modo vedi se il pane è disponibile o no (il chek selezionato) e puoi rendere non disponibile o disponibile uno o più tipi di pane
non l'ho testato quindi ti conviene provarlo a parte
sappimi dire
 
intanto grazie infinite! ho provato, ma è un po' complicato per me...
non capisco perchè non si possa fare come ho fatto in un'altra pagina dove semplicemente ho:
PHP:
$sql_pane = "SELECT * FROM tpane
            WHERE dispo='1'";

Quando metto dispo=0 sparisce e risolto il problema.
Non si può fare lo stesso con i check?

Se vuoi ti posto gli errori che mi ha dato con il tuo metodo...
 
ciao
intendi qui?
PHP:
foreach($tab['pain'] as $id => $pain)   
{            
    if ($pain == 'Baguette')
        echo '<input type="radio" checked="checked" name="rbpain" value="'.$pain.'"  />'.$pain;    
    else
        echo '<input type="radio" name="rbpain" value="'.$pain.'"  />'.$pain;            
}
se si devi dire cosa c'è prima,
se per ottenere quella variabile $tab['pain'] interroghi il db basta che nella select tu aggiunga
o
WHERE disp='1'
o se c'è gia il vhere per qualcos'altro
AND disp='1'
in questo modo non ti appaiono i check se disp è 0


p.s.
si posta gli errori
 
risolto!!!
mi è bastata la frase "dimmi cosa c'è prima..."
ho aggiunto WHERE dispo='1' e ora funziona!!!
grazie...ma forse avrò ancora bisogno...intanto grazie mille!!!!!
 
ecco appunto..appena detto
ora funziona, però quando scrivo valore=1 (sul campo dispo) e poi clicco su MODIFICA mi ritorna il valore 0!
Ma perchè????
 
ho sbagliato sicuramente qualcosa qui:
PHP:
if ($pass == false)	
		{
			$champ = 'nom_'.substr($table, 1);
			$nom = $_POST['nom_'.substr($table, 1)];
      $champs3 = 'dispo';
			$dispo = $_POST['tdispo'];
      $nom = $_POST[$champ];
			$pass = true; 
      
		}

e qui:

PHP:
else
		if (isset($champs3))
		{		
			for($i = 0; $i < count($nom); $i++)
			{
			
				$sql = "UPDATE ".$table." SET ".$champ." = '".addslashes($nom[$i])."', ".$champs3." = ".$dispo[$i]." WHERE id = ".$id[$i]."";
				mysql_query($sql) or die ("Erreur SQL > ".$sql."<br />".mysql_error()); 								
				$idxid++;
			}			
		}
 
ciao
metti un bel var_dump e verifica cosa ti risulta

PHP:
else
        if (isset($champs3))
        {        
            for($i = 0; $i < count($nom); $i++)
            {
                $sql = "UPDATE ".$table." SET ".$champ." = '".addslashes($nom[$i])."', ".$champs3." = ".$dispo[$i]." WHERE id = ".$id[$i]."";
                var_dump($sql); echo "<br />";// poi togli
				mysql_query($sql) or die ("Erreur SQL > ".$sql."<br />".mysql_error());                                 
                $idxid++;
            }            
        }
 
Grazie infinite pper l'aiuto, veramente, senza non ci sarei mai arrivato...
cmq il problema era semplicemente che nelle impostazioni della tabella, il Length/Values di set l'avevo settato così: '0','1'
e invece bastava: '1'
:dipser:
grazie mille davvero!!!:fonzie:
 

Discussioni simili