• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

Doppelte sicherung bei mysql änderung?!

Status
Für weitere Antworten geschlossen.

wolf360

Neues Mitglied
hey,

ich will hab so ne art onlinenewssystem gmacht, aber bei änderrungen will ich ne doppelte sicherung haben (id und datum) erst dann soll eine änderung vorgenommen werden... hier mal das script:

PHP:
Was soll geändert werden?!
<form method="post">
<input name="aendern[id]" type="text" value="id"><br>
<input name="aendern[datum]" type="text" value="datum"><br>

<br>
<br>

Zu:<br>
<input name="update[datum]" type="text" value"Datum"><br>
<input name="update[news]" type"text" value"Nachricht"><br>
<input type="submit" >
</form>



<?php include("verbindungsaufbau.php");


    $id = mysql_real_escape_string($_POST['aendern']['id']);
    $datum = mysql_real_escape_string($_POST['aendern']['datum']);

    $datumneu = mysql_real_escape_string($_POST['update']['datum']);
    $newsneu = mysql_real_escape_string($_POST['update']['news']);

    $aendern= "UPDATE `test` SET `datum` = '".$datumneu."', `news` = '".$newsneu."' WHERE id=".$id." AND datum=".$datum."";
    $update= mysql_query($aendern);


    //ausgabe
    $ausgabe = "SELECT * FROM test";
    $query = mysql_query($ausgabe);

    while($wahl = mysql_fetch_assoc($query)){
       echo $wahl['id']."<br>";
       echo $wahl['datum'];
       echo $wahl['news']."<p>";
       }



?>

hier klappt das nicht aber ich hab keine ahnung wieso?! auch wenn ich das AND zur ein komma ersetzte, geht es trotzdem nicht, wenn ich allerdings nur die id überprüfenwill klappt es ?! was mach ich falsch?!!
 
Zuletzt bearbeitet von einem Moderator:
versuchs mal so:

PHP:
<?php
$aendern= "UPDATE test SET datum = '".$datumneu."', `news` = '".$newsneu."' WHERE id = '".$id."' AND datum = '".$datum."' ";
?>

Nils aka XraYSoLo
 
klappt auch nicht :(...

Edit: lol auf einmal klappts... danke für die hilfe!!!!
 
Zuletzt bearbeitet:
dann kom ich gleich zu nem anderen punkt:

hier mal 2 codes:
mysqleintragen.php
HTML:
<form action="<?php $_SERVER["PHP_SELF"]; ?>" method="post">
<input name="eintragen[datum]" type="text" value="Datum"><br>
<input name="eintragen[news]" cols="20" rows="2" type="text" value="News"><br>
<input type="submit">
</form>


<?php include("verbindungsaufbau.php"); ?>

<?php

    $datum = mysql_real_escape_string($_POST['eintragen']['datum']);
    $news = mysql_real_escape_string($_POST['eintragen']['news']);

  if($_POST['eintragen']['datum'] == "Datum" ||
     $_POST['eintragen']['news'] == "News") {
        echo "Du musst scho was eingeben";
  }
  else{
      $eintrag= "INSERT INTO `test` (`datum`,`news`) VALUES ('".$datum."','".$news."')";
      $eintragen = mysql_query($eintrag);
      echo "Eintrag hat geklappt";
  }

?>

onlinenews.php
HTML:
<a href="onlinenews.php?eintragen">Eintragen</a><br>
<a href="onlinenews.php?aendern">&Auml;ndern</a><br>
<a href="onlinenews.php?loeschen">L&ouml;schen</a>
<br>

<?php


switch(isset($_GET)) {

   case isset($_GET['eintragen']):
     include("mysqleintragen.php");
     break;

   case isset($_GET['aendern']):
     include("mysqlaendern.php");
     break;

   case isset($_GET['loeschen']):
     echo "Loeschen";
     break;

}

?>

immer wenn ich auf den Link eintragen geh, zeigt er mir sofort an "Eintrag hat geklapp" und in der Mysql Datenbank is dann ein eintrag mit leeren feldern! ich kappier blos net warum?

woran liegt das und wie verhindere ich das ?!
 
du musst das GET spezifizieren.

PHP:
<?php
switch($_GET)
?>

reicht nicht. da muss noch die variable 'rein:

PHP:
<?php
switch($_GET['var'])
   {
   case 'eintragen': include('mysqleintragen.php'); break;
   case 'aendern': include('mysqlaendern.php'); break;
   case 'loeschen': echo 'l&ouml;schen'; break;
   default: echo 'sonst was'; break;
   }
?>

Nils aka XraYSoLo
 
wenn ich des etz so mach wie du, klappen meine links nicht mehr...

dann kommt egal auf was ich klick "sonst was"... der link ändert sich zwar auf onlinenews.php?eintragen aber das was im case steht erscheint nicht ?!
 
Zuletzt bearbeitet:
das prinzip von switch hab ich schon verstanden... blos ich kappiers nicht im zusammenham mit get nicht?!... mein code klappt ja auch einwandfrei... blos das es sofort einen eintrag macht, wenn ich auf eintragen geh?!

switch probiert ja mit case obs die einzelnen variablen gibt und wenn nicht, gibts dafür default... aber in deinem beispiel gibts ja alle 3 fälle blos kappier/find ich den fehler nicht, der link ändert sich aber case tritt nicht ein?!
 
mhhhh... okey fehler hab ich gefunden, beim link musste ich noch var=eintragen etc. machn... aber dennoch ist es das gleiche problem wie bei mir... sobald ich auf eintragen geh, kommt sofot ein eintrag mit leeren felder...

PS: Wenn ich das etz falsch verstanden hab, was ist dann sinn der funktion ?!
 
Wie an den Farben zu erkennen, ist die Definition des <form action=""> nicht wirklich gut gemacht.

Versuch es bitte so:
PHP:
<form action="<?php $_SERVER['PHP_SELF']; ?>" method="post">

Dein Script schreibt einen Eintrag, wenn $_POST['eintragen']['datum'] und $_POST['eintragen']['news] nicht einen bestimmten Wert haben.

Da $_POST['eintragen']['datum'] und $_POST['eintragen']['news'] zum Zeitpunkt des ersten Aufrufens aber noch gar nicht definiert ist, weil das Formular noch nicht abgeschickt wurde, enthält es logischerweise auch nicht das Standardvalue und es wird dein Query ausgeführt.

Auch hier hilft die Überprüfung, ob das Formular abgeschickt wurde.

HTML:
<input type="submit" name="submit">
PHP:
<?php
    if($_POST['submit'])
        // hier kommt dann die IF-Abfrage nach den Standardvalues
?>
 
ich hab des etz so gmacht:

HTML:
<?php  
if($_POST['eintragen']['datum'] == "Datum" ||
     $_POST['eintragen']['news'] == "News") {
        echo "Du musst scho was eingeben";
  }
  elseif(isset($_POST['eintragen'])) {
      $eintrag= "INSERT INTO `test` (`datum`,`news`) VALUES ('".$datum."','".$news."')";
      $eintragen = mysql_query($eintrag);
      echo "Eintrag hat geklappt";
  }
?>

so klappts zuminderst auch?! Ist diese methode auch gut ?!
 
Was heißt gut. Jede Methode, die zum gewünschten Ergebnis führt ist gut.

Aber wenn die Frage ist, ob deine Variante vom Code her korrekt ist, ja. Ist nichts gegen einzuwenden.
 
Status
Für weitere Antworten geschlossen.
Zurück
Oben