[PHP] IF und ELSE Afrage funktioniert nicht richtig

mh1001 schrieb:
@Phux

Da hast du schon Recht. Dass es auch so möglich ist möchte ich auch gar nicht bestreiten. ;)

Zum Code:

Für SELECT-Abfragen gibt es mysql_num_rows(). mysql_affected_rows() ist dafür eigentlich nicht vorgesehen.


MfG mh1001

Du hast Recht, es ist nicht sauber. Allerdings funktioniert es - im Gegensatz zur Aussage auf php.net - sehr wohl und richtig. Jedenfalls bei meinem Provider und mit FoxServ. :-)

Wenn wir grad dabei sind: Tables sind übrigens auch nicht für Strukturgerüste vorgesehen :D
Von solch schlechten Angwohnheiten kommt wohl auch mein missbräuchlicher Einsatz von mysql_affected_rows...
 
Vielendank an alle! Habe das jetzt hinbekommen wie ich das wollte :)

mfg digiTALE
 
Achso noch eine Frage,
wie verhält sich dann die 2 Tagesvorschau wenn der Monat wechselt?

Also Heute ist z.B. der 31.01.2006. Habe ja nur das Datum von dem jetzigen Tag genommen und dahinter jeweils +1 und + 2 im PHP Script geschrieben. So zeigt er mir sicher nicht den 1.Februar und den 02.Februar 2006 an! Sondern er zählt bestimmt 32 und 33!?

Wie kann ich das Problem lösen?

mfg digiTALE
 
Schaue dir dazu einmal INTERVAL an. ;)

MfG mh1001

//Edit:

Wenn ich das jetzt richtig verstehe hat dies jetzt nichts mehr mit der Datenbankthematik zu tun. Dann kannst du folgendermaßen vorgehen:
Wandle das aktuelle Datum in einen UNIX-Timestamp um, addiere 86400 und wandle es anschließend wieder zurück um. ;)
 
Zuletzt bearbeitet:
Alles klar, danke dir. Hab es einwenig anders gelöst!

PHP:
$timestamp=mktime(0,0,0,01,31,2006);

$year=date("Y",$timestamp);
$month=date("m",$timestamp);
$day=date("d",$timestamp)+1;

$timestamp2=date("Y-m-d",mktime(0,0,0,$month,$day,$year));

echo $timestamp2;

Datum das berechnet wird : 2006-01-31
Ausgabe des PHP Scriptes : 2006-02-01

mfg digiTALE
 
AW: [PHP/MySQL] Eintraege edetieren und wieder abspeichern

Wie bekomme ich es hin, die Einrträge die ich gemacht habe später zu edetieren?

Hab es jetzt erstmal geschafft per "id" die entsprechenden Daten in ein Formular einzulesen um die Daten zu ändern.
Nur wie geht das, das er mir genau die Daten wieder zu dieser Person speichert ohne einen neuen Eintrag zu tätigen!?

Welche Befehle sind dafür geeignet?

mfg digiTALE
 
Hallo,

dazu gibt es die UPDATE-Anweisung.
Wenn du in deiner Tabelle zum Beispiel eine Identifier-Spalte mit der Bezeichnung "id" hast, könnte dies dann zum Beispiel so aussehen:

Code:
UPDATE tabellenname SET feldname1 = '$wert1', feldname2 = '$wert2' WHERE id = '$id'
MfG mh1001
 
Zuletzt bearbeitet:
Lösung 1:
PHP:
<?php

$MysqlServer = mysql_connect("localhost", "...", "..."); 
	
mysql_select_db("calendar", $MysqlServer);

$SQL = "UPDATE birthdate SET Datum='$datum', Name='$Name',
Geburtsdatum='$Geburtsdatum', Sternzeichen='$Sternzeichen',
Gruppe='$Gruppe', Bild='Bild', WHERE id='$_POST[id]'";
?>

Lösung 2:
PHP:
<?php

$MysqlServer = mysql_connect("localhost", "...", "..."); 
	
mysql_select_db("calendar", $MysqlServer);

$SQL = "UPDATE `birthdate` SET `Datum`='".$datum"', `Name`='".$_POST[Name]."',
`Geburtsdatum`='".$_POST[Geburtsdatum]."', `Sternzeichen`='".$_POST[Sternzeichen]."',
`Gruppe`='".$_POST[Gruppe]."', `Bild`='".$_POST[Bild]."' WHERE `id`='".$_POST[id]."'";
?>

Welche Variante wäre besser, Lösung 1 oder 2

mfg digiTALE
 
Geschmackssache.

Aber du MUSST in beiden Version mysql_real_escape_string auf die Variablen, die in die DB eingetragen werden sollen, anwenden.


( nach $datum fehlt übrigens ein . )

edit: Beim 1. geh ich davon aus, dass du die Variablen natürlich vorher aus $_POST schon geholt hast. Sonst funktioniert das Skript ja nicht bei register_globals off.
 
Zuletzt bearbeitet:
@matze,
ich benutze das nur lokal, dafür brauch ich keine passowrt abfrage!


1. wenn ich auf den link edetieren klicke, dann wird die "id" mitgesendet zu "edit.php"

2. in der "edit.php" wird anhand der "id" die daten aus der datenbank gelesen in den enstprechenden feldern ausgegeben

3. bei der Speicherung werden die Daten per "Post" an "edit_save.php" gesendet.

4. auf der seite "edit_save.php" werden die Daten der vorhanden Person gespeichert/überschrieben.

Aber irgendwie funktioniert das nicht so wie ich das will


edit.php
PHP:
<?php
if ($id = $_GET['id']) {

$MysqlServer = mysql_connect("localhost", "...", "...");

mysql_select_db("calendar", $MysqlServer);

$Result = mysql_query("SELECT * FROM birthdate WHERE id LIKE '$id' ORDER BY id", $MysqlServer);

$a=mysql_num_rows($Result);

while($row=mysql_fetch_array($Result)){

?><br><br>
<form name="eingabe" action="edit_save.php" method="post">
<table width="520" cellpadding="0" cellspacing="0" align="center">
<tr>
<td class="zeile1">ID :&nbsp;</td>
<td class="zeile2"><input type="text" name="id"
value="<?php echo $row[ID]; ?>" disabled> <input type="radio" name="check"
onclick="this.form.id.disabled=false">Feld aktiviert | <input type="radio"
name="check" onclick="this.form.id.disabled=true" checked>Feld deaktiviert</td>
</tr>
<tr>
<td height="20" colspan="2" background="../img/teiler.png"></td>
</tr>
<tr>
<td class="zeile1">Vor- /Nachname :&nbsp;</td>
<td class="zeile2"><input type="text" name="Name"
value="<?php echo $row[Name]; ?>"></td>
</tr>
<tr>
<td class="zeile1">Geburtsdatum :&nbsp;</td>
<td class="zeile2"><input type="text" name="Geburtsdatum"
value="<?php echo $row[Geburtsdatum]; ?>"></td>
</tr>
<tr>
<td class="zeile1">Sternzeichen :&nbsp;</td>
<td class="zeile2"><input type="text" name="Sternzeichen"
value="<?php echo $row[Sternzeichen]; ?>"></td>
</tr>
<tr>
<td class="zeile1">Gruppe :&nbsp;</td>
<td class="zeile2"><input type="text" name="Gruppe"
value="<?php echo $row[Gruppe]; ?>"></td>
</tr>
<tr>
<td class="zeile1">Kommentar :&nbsp;</td>
<td class="zeile2"><textarea name="kommentar" rows="7" cols="21"
value="<?php echo $row[Kommentar]; ?>"></textarea></td>
</tr>
<tr>
<td height="20" colspan="2" background="../img/teiler.png"></td>
</tr>
<tr>
<td class="zeile1">Bild hochladen :&nbsp;</td>
<td class="zeile2"><input type="file" name="Bild"></td>
</tr>
</table><br><br><input name="action" value="Speichern" type="submit">
<input type="reset" value="Reset"></form>
<?php
}
if ($a==0)echo "Konnte keinen Eintrag finden<br><br>";
}		
?>


edit_save.php
PHP:
<?php

$MysqlServer = mysql_connect("localhost", "...", "..."); 
	
mysql_select_db("calendar", $MysqlServer);

$sql_query = "UPDATE `birthdate` SET `Datum`, '".$_POST['Name']."',
'".$_POST['Geburtsdatum']."', '".$_POST['Sternzeichen']."',
'".$_POST['Gruppe']."', '".$_POST['Bild']."' WHERE '".$_POST['ID']."'";
	

$result = mysql_query($sql_query, $MysqlServer); 
   
if ($result) { 
   echo "Die Tabelle wurde erfolgreich geändert"; 
} else { 
  echo "Bei dem Versuch die Tabelle zu ändern ist ein Fehler aufgetreten: <br>\n
Fehler-Nummer: 
      <b>".mysql_errno($MysqlServer)."</b><br>\nFehler-Ausgabe:<b>".mysql_error($MysqlServer). "</b>"; 
}

?>


Das speichern geht irgendwie nicht.
Fehlermeldung:

Bei dem Versuch die Tabelle zu ändern ist ein Fehler aufgetreten:
Fehler-Nummer: 1064
Fehler-Ausgabe:You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ' 'Max Mustermann', '01.01.1990', 'Steinbock', 'Chris', '' WHERE ''' at line 1


Was hat diese Fehlermeldung zu bedeuten?


mfg digiTALE
 
In deinem MySQL-Statement fehlt die Bezüge zu den Spalten. Vorrausgesetzt die Spaltennamen entsprechen denen deises vorherigen Posts, so sollte es so klappen:
PHP:
$sql_query = "UPDATE birthdate SET Datum = '$Datum', Name = '$Name', Geburtsdatum = '$Geburtsdatum', Sternzeichen = '$Sternzeichen', Gruppe = '$Gruppe', Bild = '$Bild', WHERE id= '$id' ";
Wie schon angesprochen solltest du aber unbedingt darauf achten, dass die Variablen auch entsprechend maskiert werden und dies gegebenenfalls bei deaktiviertem MagicQuotes mit addslashes() oder mysql_real_escape_string() nachholen.

MfG mh1001
 
Zuletzt bearbeitet:
Irgendwie komme ich nicht klar wie ich das realisieren soll :rolleyes:
Hab mir das ganze zwar durchgelesen und gegoogelt aber werd nicht schlau draus wie ich das in mein Script integrieren soll.

Könnt ihr mir da ein bisschen helfen!?

mfg digiTALE
 
Hier einmal ein kleines Beispiel wie dies aussehen könnte ;) :

PHP:
<?php

function maskieren($string)
{
  if(get_magic_quotes_gpc())
  {
    $format = $string;
  }
  else
  {
    $format = addslashes($string);
  }

  return $format;
}

$Datum =  maskieren($_POST["Datum"]);
$Name = maskieren($_POST["Name"]);
$Geburtsdatum = maskieren($_POST["Geburtsdatum"]);
$Sternzeichen = maskieren($_POST["Sternzeichen"]);
$Gruppe = maskieren($_POST["Gruppe"]);
$Bild = maskieren($_POST["Bild"]);

if(is_numeric($_POST["id"))
{
  $id = $_POST["id"];
}
else
{
  die("inkorrekter Identifier!");
}

$verbindung = mysql_connect("localhost", "...", "..."); 
    
mysql_select_db("calendar", $verbindung);

$bearbeiten = mysql_query("UPDATE birthdate SET Datum = '$Datum', Name = '$Name', Geburtsdatum = '$Geburtsdatum', Sternzeichen = '$Sternzeichen', Gruppe = '$Gruppe', Bild = '$Bild' WHERE id= '$id'"); 
   
if ($bearbeiten) 
{ 
  echo "Die Tabelle wurde erfolgreich geändert"; 
}
else
{ 
  echo "Bei dem Versuch die Tabelle zu ändern ist ein Fehler aufgetreten: <br>\n Fehler-Nummer: <b>".mysql_errno()."</b><br>\nFehler-Ausgabe:<b>".mysql_error()."</b>"; 
}

?>
MfG mh1001
 
Zuletzt bearbeitet:
Danke dir mh1001 :)

Hat alles super geklappt!

mfg digiTALE
 
Zurück
Oben