Προς το περιεχόμενο

PHP Update


dbouraza
Μετάβαση στην απάντηση Απαντήθηκε από dbouraza,

Προτεινόμενες αναρτήσεις

Καλησπέρα σας. Εχω καιρό να γράψω σε php και έχω κολλήσει σε ένα σημείο. με if else για να κάνω εισαγωγή σε βάση. Παιρνω μηδενική τιμή και δεν μπορώ να βρώ που έχω κάνει λάθος. Θα μπορούσε κάποιος να με βοηθήσει?

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Εχεις δίκιο. Τωρα δεν ξέρω αν πρέπει να το ανεβάσω σας code ή σαν file. Τελος πάντων το ανεβάζω έτσι. Στο bold μέρος είναι που έχω το πρόβλημα. Μου δίνει μηδενική τιμή στα $visitsrvdate=int($data['visitsrvdate']); και   $visitdate=int($data['visitdate']); ενώ υπάρχει περιεχόμενο στη βάση. Σαν να μην τις διαβάζει αυτές τις γραμμές καν. Ευχαριστώ για το χρόνο

<?php
include_once('includes/connection.php');
include_once('includes/help_functions.php');

$visit= new Lifts;
$id = $_GET['id'];
$data = $visit->fetch_visitsingle($id);
$visitdate1=date('d-m-Y',$data['visitdate']);
$visitsrvdate1=date('d-m-Y',$data['visitsrvdate']);

if(count($_POST)>0){

  $visitid=$_POST['visitid'];
  $visitliftid=$_POST['visitliftid'];
  $visittype=$_POST['visittype'];
  $visitamount=$_POST['visitamount'];
  $visitvat=$_POST['visitvat'];
  if ($_POST['visitsrvdate']) {
  $visitsrvdate=strtotime($_POST['visitsrvdate']);
  } else {
  $visitsrvdate=int($data['visitsrvdate']);
  }
  if ($_POST['visitdate']) {
  $visitdate=strtotime($_POST['visitdate']);
  } else {
  $visitdate=int($data['visitdate']);
  }

  $visitinfo=nl2br($_POST['visitinfo']);

    $query = $pdo->prepare('UPDATE visit SET visitliftid=?, visittype=?, visitamount=?, visitvat=?, visitsrvdate=?, visitdate=?, visitinfo=?  WHERE visitid=?');
    $query->bindValue(1, $visitliftid);
    $query->bindValue(2, $visittype);
    $query->bindValue(3, $visitamount);
    $query->bindValue(4, $visitvat);
    $query->bindValue(5, $visitsrvdate);
    $query->bindValue(6, $visitdate);
    $query->bindValue(7, $visitinfo);
    $query->bindValue(8, $visitid);
    $query->execute();
  header('Location:lift.php?id='.$visitliftid);
}

include_once('header.php');?>

<div class="c_form">
  <h4>Προσθήκη Νέας Επισκεψης</h4>
  <?php if (isset($error)) { ?>
    <small><?php echo $error;?></small>
  <?php } ?>
<form action="uvisit.php?id=<<?php echo $id; ?>" method="post" autocomplete="off">
  <label><input type="hidden" name="visitid" value="<?php echo $data['visitid'];?>"/></label>
  <label><select name="visittype">
   <option value="<?php echo $data['visittype'];?>"><?php echo $data['visittype'];?> (Εαν διαφορετικό παρακαλω επιλεξτε)</option>
    <option value="Συντήρηση">Συντήρηση</option>
    <option value="Επισκευή">Επισκευή</option>
    <option value="Βλάβη">Βλάβη</option>
    <option value="Εξοδα">Εξοδα</option>
  </select></label>
 <label><input type="hidden" name="visitliftid" value="<?php echo $data['visitliftid'];?>"/></label>
  <label><input type="text" name="visitamount" value="<?php echo $data['visitamount'];?>" placeholder="Ποσό Συντήρησης" /></label>
  <label><input type="text" name="visitvat" value="<?php echo $data['visitvat'];?>" placeholder="Πόσο ΦΠΑ (Μονο ο αριθμός)" /></label>
  <label>Ημερομηνία Επισκεψης: <?php echo $visitsrvdate1;?><input type="date" name="visitsrvdate" /></label>
  <label>Ημερομηνία Πληρωμής: <?php echo $visitdate1;?><input type="date" name="visitdate" /></label>
  <label><textarea rows="15" cols="60" placeholder="Πληροφορίες" name="visitinfo"><?php echo $data['visitinfo'];?></textarea></label>
  <label><input type="submit" value="Ανανέωση"></label>
</form>
</div>

<?php include_once('footer.php');?>
 

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Δημοσ. (επεξεργασμένο)

Δεν ξέρω με το int που κάνεις μήπως σου χαλάει τις ημερομηνίες, To timestamp είναι long. To int δεν είναι συνάρτηση και χρησιμοποιείται έτσι (int) $value, Σαν συνάρτηση χρησιμοποίησε το intval ($data['visitdate'])

Πέρνεις από την db το visit με αυτή τη γραμμή $data = $visit->fetch_visitsingle($id);  και τις ίδιες τιμές στις ημερομηνίες τις πέρνεις και πάνω με τα visitdate1 και visitsrvdate1. Τι τιμές έχουν τα visitdate1 και visitsrvdate1 είναι άδεια? Αν ναι και η εγγραφή με το $id υπάρχει τότε πρέπει να δεις για πρόβλημα στο $visit->fetch_visitsingle($id) γιατί ενώ πρέπει να φέρει δεδομένα δεν το κάνει.  Τα if kai else δεν έχουν κάποιο συντακτικό λάθος.

 

Επεξ/σία από k33theod
Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Ευχαριστω πολύ για το χρόνο σας. Τις τιμες απο τη βάση τις παίρνω απο το $data = $visit->fetch_visitsingle($id);

Τα  visitdate1 και visitsrvdate1 δεν είναι άδεια είναι η ημερομηνία που μου εχω δώσει στην αρχική εγγραφή και μου τα δίνει στην φόρμα σαν υπάρχουσα τιμή. Μετά όταν κάνω update παίρνω το if else, δηλαδη αν έχει τιμή στο πεδίο ή φόρμα τότε περνάει την τιμή από τη φόρμα αλλιώς παίρνει την τιμή που υπάρχει ήδη στη βάση ($data['visitsrvdate']). Τα values των πχ $visitsrvdate=int($data['visitsrvdate']); το έχω  τσεκάρει και παίρνει από την $data = $visit->fetch_visitsingle($id); . Ναι το int είναι λάθος το copiara κατα λάθος δεν το έχω στο κώδικα, κανονικά είναι σκέτο. Δεν μπορώ να καταλάβω τι λάθος κάνω.

 

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Στις 3/5/2022 στις 10:37 ΜΜ, dbouraza είπε

Μου δίνει μηδενική τιμή στα $visitsrvdate=int($data['visitsrvdate']); και   $visitdate=int($data['visitdate']); ενώ υπάρχει περιεχόμενο στη βάση.

Εφόσον λες ότι έχεις τιμή εδώ $visitdate1=date('d-m-Y',$data['visitdate']); δεν μπορώ να καταλάβω γιατί πιστεύεις ότι είναι null τό $visitsrvdate το κάνεις echo και βλέπεις ότι είναι null? Δοκίμασε χωρίς καθόλου cast (int). 

Τι βάση χρησιμοποιείς και τι data έχεις στα dates

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

  • Λύση

Σας ευχαριστω πολύ για το χρόνο σας. Με αυτα που είπατε με έκαναν να δω πιο προσεκτικά τον κώδικα και τελικά το λάθος ήταν ένα <

<form action="uvisit.php?id=  <<  ?php echo $id; ?>" method="post" autocomplete="off">

Εκανε το submit αλλα οχι σωστα.

Και πάλι ευχαριστώ για το χρόνο σας

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Δημιουργήστε ένα λογαριασμό ή συνδεθείτε για να σχολιάσετε

Πρέπει να είστε μέλος για να αφήσετε σχόλιο

Δημιουργία λογαριασμού

Εγγραφείτε με νέο λογαριασμό στην κοινότητα μας. Είναι πανεύκολο!

Δημιουργία νέου λογαριασμού

Σύνδεση

Έχετε ήδη λογαριασμό; Συνδεθείτε εδώ.

Συνδεθείτε τώρα
  • Δημιουργία νέου...