DB updaten

Dolphon

Erfahrenes Mitglied
Moin.

Ich hab folgendes Problem.
Das Skript spuckt mir eine Liste aus, beidem die Spalte "frei" in der DB "0" ist.
In dieser Spalte soll das Skript aus der "0" eine "1" machen.
Nun das Problem. das Skript geht in die richitge Tabelle und in die richtige Spalte,
nur weiß ich nicht wie er nur bei den Zeilen einen 1 setzten soll, wo ich ein Häckchen zuvor im Skirpt gemacht habe.
Hiermal der Code:


PHP:
<?php

if($neueintrag) 
{        

require("config.inc.php");
if(!($db = mysql_connect($db_host, $db_user, $db_pass))) //baue datebankverbindung auf 
  die(mysql_error());  
else 
{ 
  if(!mysql_select_db($db_name)) 
      die(mysql_error());   
}                  
    $sqlkommando = "UPDATE handwerker SET frei = '1' WHERE id = 'dasw größe Rätseln'";
    mysql_query($sqlkommando) or die("Error: " . mysql_error()); 
                                                              
    echo "Daten erfolgreich geändert" ;
 // echo "<meta http-equiv=\"refresh\" content=\"0; URL=../index.php?site=home\">";


}

?>

<form action="freischalten.php" method="post"> 
      <table cellSpacing="0" cellPadding="0" width="540" border="0" height="1">
        <tr>
          <TD width="540" align=middle height="1">
            <table width="535" height="1" border="1" bordercolor="#666666">
              <tr>
                <td height="19" width="80" align="center"><div align="center">
                    <p align="left"><strong>Firmenname</strong></div></td>
                <td height="19" width="410" align="center"><div align="center"><strong>Gewerbe</strong></div></td>
                <td height="19" align="center" width="47"><div align="center"><strong>Freischalten</strong></div></td>
              </tr>

<?

require("config.inc.php");
if(!($db = mysql_connect($db_host, $db_user, $db_pass))) 
  die(mysql_error());  
else 
{ 
  if(!mysql_select_db($db_name)) 
      die(mysql_error());   
} 

  $frei = '0';
  $abfrage = "SELECT firmenname, gewerbe FROM handwerker WHERE frei = '".$frei."'ORDER BY firmenname ASC";
  $ergebnis = mysql_query($abfrage);
  while($row = mysql_fetch_object($ergebnis))
    {
    echo "                                       
              <tr>
                <td height=\"19\" width=\"80\">$row->firmenname</td>
                <td height=\"19\" align=\"center\" width=\"410\">$row->gewerbe</td>
               <td height=\"19\" align=\"center\" width=\"47\"><input type=\"checkbox\" name=\"freischalten\" value=\"ON\"></td>
                 </tr>                                                                                                                                                                                                                               

    ";} 
?>  
</table>   </table> 
<p>
<input type="submit" name="neueintrag" value="Freischalten">
<input type="reset" value="Löschen">
</form>
?>

MFG

Dolphon
 
Hi,
so sollte es gehen:

PHP:
<?php

if($neueintrag) 
{        
	require("config.inc.php");
	$db = mysql_connect($db_host, $db_user, $db_pass))) or die(mysql_error());  
	mysql_select_db($db_name)) or die(mysql_error());   
	$ret = FALSE;
	while (list ($key, $val) = each ($_POST)) 
	{
   	if(preg_match("/freischalten/",$key))
   	{
   		$buf = explode("_",$key);
   		$sqlkommando = "UPDATE handwerker SET frei = '1' WHERE id = '".$buf[1]."'";
    		mysql_query($sqlkommando) or die("Error: " . mysql_error());
   		$ret = TRUE;
   	}		
	
	}
	if($ret)
   {                                                           
    echo "Daten erfolgreich geändert" ;
   }
   else
   {
   	echo "es wurde nix geändert";
   }	 
 // echo "<meta http-equiv=\"refresh\" content=\"0; URL=../index.php?site=home\">";


}

?>

<form action="freischalten.php" method="post"> 
      <table cellSpacing="0" cellPadding="0" width="540" border="0" height="1">
        <tr>
          <TD width="540" align=middle height="1">
            <table width="535" height="1" border="1" bordercolor="#666666">
              <tr>
                <td height="19" width="80" align="center"><div align="center">
                    <p align="left"><strong>Firmenname</strong></div></td>
                <td height="19" width="410" align="center"><div align="center"><strong>Gewerbe</strong></div></td>
                <td height="19" align="center" width="47"><div align="center"><strong>Freischalten</strong></div></td>
              </tr>

<?

require("config.inc.php");
if(!($db = mysql_connect($db_host, $db_user, $db_pass))) 
  die(mysql_error());  
else 
{ 
  if(!mysql_select_db($db_name)) 
      die(mysql_error());   
} 

  $frei = '0';
  $abfrage = "SELECT id,firmenname, gewerbe FROM handwerker WHERE frei = '".$frei."'ORDER BY firmenname ASC";
  $ergebnis = mysql_query($abfrage);
  while($row = mysql_fetch_object($ergebnis))
    {
    echo "                                       
              <tr>
                <td height=\"19\" width=\"80\">".$row->firmenname."</td>
                <td height=\"19\" align=\"center\" width=\"410\">".$row->gewerbe."</td>
               <td height=\"19\" align=\"center\" width=\"47\"><input type=\"checkbox\" name=\"freischalten_".$row->id."\" value=\"ON\"></td>
                 </tr>                                                                                                                                                                                                                               

    ";} 
?>  
</table>   </table> 
<p>
<input type="submit" name="neueintrag" value="Freischalten">
<input type="reset" value="Löschen">
</form>
?>

Cu
Major
 
noch ein wenig eleganter:

du schreibst in den checkboxen:

PHP:
<td height=\"19\" align=\"center\" width=\"47\"><input type=\"checkbox\" name=\"freischalten[]\" value=\"".$row->id."\"></td>

dann kannst Du die Auswertung so machen:

PHP:
for($i=0;$i<count($_POST["freischalten"]);$i++)
{
 $sqlkommando = "UPDATE handwerker SET frei = '1' WHERE id = '".$_POST["freischalten"][$i]."'";
    mysql_query($sqlkommando) or die("Error: " . mysql_error()); 
}

Cu
Major
 
hi.
Danke für die Antwort, nur leider klappt die Auswertung nicht, die du als leztes gepostet hast, der spuckt keine Fehelrmeldung aus.
Es kommt sogar die Meldung das die Daten geändert sind, aber in der DB ist nix geändert.
 
dann debugge doch mal ein wenig

z.B. schreibe mal ein:
PHP:
echo "<pre>";print_r($_POST);echo "</pre>";

an den Anfang Deines Programmes. Dann siehst Du alles, was per Post übertragen wird.

Cu
Major
 
Zuletzt bearbeitet:
So hab den Fehler gefunden, weiß aber nciht genau wie ich den Beheben kann.

PHP:
echo "                                       
              <tr>
                <td height=\"19\" width=\"80\">$row->firmenname</td>
                <td height=\"19\" align=\"center\" width=\"410\">$row->gewerbe</td>
               <td height=\"19\" align=\"center\" width=\"47\"><input type=\"checkbox\" name=\"freischalten[]\" value=\"'.row->id.'\"></td>
                 </tr>                                                                                                                                                                                                                               

    ";}

der gibt die row->id nicht aus. wegen den \ strichen, steh i.m auf dem Schlauch. weiß nciht wie ich das hinbekomme.
 
Wie wär's damit:
PHP:
<?php
echo "
  <tr>
    <td height=\"19\" width=\"80\">".$row->firmenname."</td>
    <td height=\"19\" align=\"center\" width=\"410\">".$row->gewerbe."</td>
    <td height=\"19\" align=\"center\" width=\"47\"><input type=\"checkbox\" name=\"freischalten[]\" value=\"".$row->id."\"></td>
  </tr>";
?>
 
Zurück