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

connect to DB - php


panosu1

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

οκ κατάλαβα,

ο τρόπος να τα έχω έτοιμα σε άλλη σελίδα και να κάνω redirect με header (ίσως με κάποιο if) νομίζω πως θα δουλέψει αλλά μου φαίνεται κάπως μπακαλίστικο.

Kids these days. Κάποτε αυτός ήταν ο μόνος τρόπος.  :-D 

 

Θα προτιμούσα να έχω το φορμ με τις 4 επιλογές και ανάλογα τι επιλέξει ο χρήστης να του εμφανίζεται από κάτω το αντίστοιχο - σωστό φορμ. Φαντάζομαι πως είναι εφικτό αυτό.

 

όταν λες "Μπορείς να τα έχεις φορτωμένα όλα τα forms και όταν αλλάζει η επιλογή να δείχνεις μόνο το σωστό", εννοείς να τα έχω από κάτω ας πούμε στην σελίδα και ανάλογα την επιλογή του χρήστη να "εξαφανίζει τα περιττά". Αν εννοείς αυτό μου φαίνεται πιο σωστό αυτό που είπα στην αρχή, δηλαδή να τα έχω "κρυφά" και ανάλογα την επιλογή να εμφανίζει την επιλογή.

Υπάρχουν έτοιμα πράγματα που κάνουν αυτή τη δουλειά, αλλά για εκπαιδευτικούς σκοπούς μπορείς να την κάνεις μόνος σου κάπως έτσι:

 

<select id="whatever">
<option>Select one...</option>
<option data-panel-selector="#foopanel">Foo</option>
<option data-panel-selector="#barpanel">Bar</option>
</select>

Εδώ έχουμε ένα dropdown, κάθε μία από τις επιλογές του οποίου αντιστοιχεί σε μια ξεχωριστή φόρμα ή όπως θες πέστο. Τι χρειαζόμαστε άλλο;

 

1. Τις φόρμες

 

<div class="panel" id="foopanel">foo</div>
<div class="panel" id="barpanel">bar</div>

2. Ένα τρόπο να μην εμφανίζεται καμία φόρμα στην αρχή

.panel { display: none }

3. Όταν αλλάζεις επιλογή στο dropdown, να γίνεται κάτι

 

$("#whatever").change(function() {
    // ...
});

4. Συγκεκριμένα, να κρύβονται όλες οι φόρμες

$("#whatever").change(function() {
    $(".panel").hide();
});

5. Εκτός από αυτή που αντιστοιχεί στην επιλογή που έκανες

 

$("#whatever").change(function() {
    var panelSelector = $(this).attr("data-panel-selector");
    $(".panel").hide().filter(panelSelector).show();
});

Και έτοιμος.

 

Υπόψιν, υπάρχουν διάφορα πράγματα που θα μπορούσα να έχω κάνει διαφορετικά και που όντως μπορεί να έκανα διαφορετικά ανάλογα με την περίπτωση. Την παραπάνω λύση την επέλεξα καθόλου τυχαία γιατί έχει αρκετό διδακτικό ζουμί ενώ ταυτόχρονα παραμένει σχετικά απλή. Μη την παίρνεις σαν ευαγγέλιο εννοείται.

 

θα ήθελα να κάνω άλλη μια ερώτηση.

Διάβασα και έμαθα να χειρίζομαι σωστά τα sessions

άρα αν ο χρήστης δεν είναι login δεν του ανοίγει άλλες σελίδες από την project μου. όταν λοιπόν ο χρήστης προσπαθεί να μπει σε μια σελίδα αλλά δεν έχει κάνει login πρώτα, τον κάνω redirect στο login form μου.

θα ήθελα κάπως να του πετάω ένα μήνυμα είτε σε κάθε σελίδα που προσπαθεί να μπει και δεν έχει κάνει login είτε στο login φορμ αφού έχει γίνει redirect από άλλη σελίδα που δεν είναι log in ότι 'You have to log in, in order to use the platfrom" ή κάτι ανάλογα. Υλοποιείται κάτι τέτοιο?

 

πως όμως αυτό το μήνθμα θα είναι κρυφό στους χρήστες που ανοίγουν για πρώτη φορά της σελίδα μου και δεν έχουν γίνει redirect από τις not-login pages μου?

Ευχαριστώ ξανά!

Ο απλούστερος τρόπος όλων είναι να κάνεις redirect σε κάποιο διαφορετικό URL απ' αυτό που θα πήγαινε μόνος του ο χρήστης και να εμφανίζεις το μήνυμα σ' αυτή μόνο την περίπτωση, π.χ. στο /login.php κανονικά και στο /login.php?required=1 για να εμφανιστεί το μήνυμα (τα URL είναι καθαρά ενδεικτικά, το concept κράτα).

 

Αν δε θες να το κάνεις έτσι τότε η άλλη λύση είναι... να χρησιμοποιήσεις το session.

 

protected.php:

session_start();

if (!isset($_SESSION['username'])) {

$_SESSION['show_login_required'] = true;

header("Location: login.php", true, 302);

die;

}

 

login.php:

session_start();

if (isset($_SESSION['show_login_required'])) {

// ...

}

unset($_SESSION['show_login_required']);

 

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

  • Απαντ. 69
  • Δημ.
  • Τελ. απάντηση

Συχνή συμμετοχή στο θέμα

Ο απλούστερος τρόπος όλων είναι να κάνεις redirect σε κάποιο διαφορετικό URL απ' αυτό που θα πήγαινε μόνος του ο χρήστης και να εμφανίζεις το μήνυμα σ' αυτή μόνο την περίπτωση, π.χ. στο /login.php κανονικά και στο /login.php?required=1 για να εμφανιστεί το μήνυμα (τα URL είναι καθαρά ενδεικτικά, το concept κράτα).

Ok αυτό το κατάλαβα και είναι το πιο εύκολο στην υλοποίηση αλλά νομίζω είναι κάπως κουραστικό για τον χρήστη καθώς αν το κατάλαβα καλά πρέπει να τον κάνω redirect σε άλλο page πχ errorMessage.php ώστε να του λέω "Πρέπει να κάνεις login για να έχεις πρόσβαση στην εφαρμογή" και έπειτα να τον κάνω redirect παλι στο login.php (login form) με refresh κάποια seconds ώστε να προλαβαίνει να διαβάζει το μήνυμα.

 

Αν δε θες να το κάνεις έτσι τότε η άλλη λύση είναι... να χρησιμοποιήσεις το session.

 

protected.php:

session_start();

if (!isset($_SESSION['username'])) {

$_SESSION['show_login_required'] = true;

header("Location: login.php", true, 302);

die;

}

 

login.php:

session_start();

if (isset($_SESSION['show_login_required'])) {

// ...

}

unset($_SESSION['show_login_required']);

και εγώ έτσι σκεφτόμουν να γίνει, δηλαδή με κάποιο μήνυμα στο header του session_start.

όπως είπα και σε προηγούμενο μήνυμα μου έχω καταλάβει τα sessions και τα έχω υλοποιήσει με επιτυχία. Αντικαθιστότας τον δικό μου κώδικα με τον δικό σου όμως, δεν βγάζει το "show_login_required" πουθενά.

 

ορίστε ο δικός μου κώδικας για τα "protected pages"


<?php

session_start();
if(!isset($_SESSION["sess_user"])){
	header("location:login.php");
} else {
?>

Υπάρχουν έτοιμα πράγματα που κάνουν αυτή τη δουλειά, αλλά για εκπαιδευτικούς σκοπούς μπορείς να την κάνεις μόνος σου κάπως έτσι:

 

<select id="whatever">

<option>Select one...</option>

<option data-panel-selector="#foopanel">Foo</option>

<option data-panel-selector="#barpanel">Bar</option>

</select>

Εδώ έχουμε ένα dropdown, κάθε μία από τις επιλογές του οποίου αντιστοιχεί σε μια ξεχωριστή φόρμα ή όπως θες πέστο. Τι χρειαζόμαστε άλλο;

 

1. Τις φόρμες

 

<div class="panel" id="foopanel">foo</div>

<div class="panel" id="barpanel">bar</div>2. Ένα τρόπο να μην εμφανίζεται καμία φόρμα στην αρχή

.panel { display: none }3. Όταν αλλάζεις επιλογή στο dropdown, να γίνεται κάτι

 

$("#whatever").change(function() {

    // ...

});4. Συγκεκριμένα, να κρύβονται όλες οι φόρμες

$("#whatever").change(function() {

    $(".panel").hide();

});5. Εκτός από αυτή που αντιστοιχεί στην επιλογή που έκανες

 

$("#whatever").change(function() {

    var panelSelector = $(this).attr("data-panel-selector");

    $(".panel").hide().filter(panelSelector).show();

});Και έτοιμος.

 

δυστυχώς δεν σε κατάλαβα 100% εδώ, κυρίως λόγο έλειψης γνώσεων.

1. τα divs είναι οι φόρμες, οκ το πιάνω, θα μπούν όμως κάτω από το παραπάνω φορμ που παραθέτεις?

ετσι?

 

<form action="action_page.php">

<fieldset>

<legend>Nomous H dhmous:</legend>

<select name="department">

<option>Select one...</option>

<option data-panel-selector="#dimoi">nomoi</option>

<option data-panel-selector="#nomoi">dimoi</option>

</select>

<br><br>

<input id="submit" type="submit" class="submit" value="Submit" />

</fieldset>

</form>

 

<div class="panel" id="dimoi">nomoi</div>

<div class="panel" id="nomoi">dimoi</div>

 

αυτό

.panel { display: none }

είναι css?

επίσης το 3., 4., 5. που μου έγραψες και σε ευχαριστώ δεν το κατάλαβα δυστυχώς. Θα προσπαθήσω να διαβάσω κάπου τι κάνει ώστε να μην αντιγράφω στα κουτουρού.

 

 

edit

τις φόρμες και τις υποφόρμες τις υλοποίησα

 

έτσι

<html>

<body>

<form action="action_page.php">
  <fieldset>
    <legend>Nomous H dhmous:</legend>
   <select name="department">
<option>Select one...</option>
<option data-panel-selector="#dimoi">nomoi</option>
<option data-panel-selector="#nomoi">dimoi</option>
</select>
    <br><br>
    <input id="submit" type="submit" class="submit" value="Submit" />
  </fieldset>
</form>

<div class="panel" id="dimoi">
<form action="action_page.php">
  
   <select name="department">
<option>Nomoi</option>
<option data-panel-selector="#dimoi">Messinia</option>
<option data-panel-selector="#nomoi">Lakonia</option>
</select>
    <br><br>
    <input id="submit" type="submit" class="submit" value="Submit" />

</form>
</div>


<div class="panel" id="nomoi">

</form>

<div class="panel" id="dimoi">
<form action="action_page.php">
  
   <select name="department">
<option>Dimoi</option>
<option data-panel-selector="#dimoi">Kalamata</option>
<option data-panel-selector="#nomoi">Messini</option>
</select>
    <br><br>
    <input id="submit" type="submit" class="submit" value="Submit" />

</form>
</div>
<?php
/*.panel { display: none }*/
?>
</body>
</html>
Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Ok αυτό το κατάλαβα και είναι το πιο εύκολο στην υλοποίηση αλλά νομίζω είναι κάπως κουραστικό για τον χρήστη καθώς αν το κατάλαβα καλά πρέπει να τον κάνω redirect σε άλλο page πχ errorMessage.php ώστε να του λέω "Πρέπει να κάνεις login για να έχεις πρόσβαση στην εφαρμογή" και έπειτα να τον κάνω redirect παλι στο login.php (login form) με refresh κάποια seconds ώστε να προλαβαίνει να διαβάζει το μήνυμα.

Δεν κατάλαβες καλά. Η ιδέα είναι πως όταν πας στο login page θα εμφανίζεται και ένα έξτρα μήνυμα (μέσα στην ίδια σελίδα) μόνο σε περίπτωση που έχεις γίνει redirect από αλλού.

 

Αντικαθιστότας τον δικό μου κώδικα με τον δικό σου όμως, δεν βγάζει το "show_login_required" πουθενά.

Ο κώδικας που έγραψα ήταν στο περίπου για να δεις την ιδέα, όχι για copy/paste.

 

ορίστε ο δικός μου κώδικας για τα "protected pages"


<?php

session_start();
if(!isset($_SESSION["sess_user"])){
	header("location:login.php");
} else {
?>

 

Απλά θα κάνεις redirect στο login.php?foo=1 και σ' εκείνη τη σελίδα θα δεις αν σου ήρθε το foo=1.

 

δυστυχώς δεν σε κατάλαβα 100% εδώ, κυρίως λόγο έλειψης γνώσεων.

1. τα divs είναι οι φόρμες, οκ το πιάνω, θα μπούν όμως κάτω από το παραπάνω φορμ που παραθέτεις?

ετσι?

Τι σημασία έχει πού θα μπουν; Πάνω κάτω δεξιά αριστερά αυτό είναι δικό σου θέμα.

 

αυτό

.panel { display: none }
είναι css?

 

Ναι.

 

επίσης το 3., 4., 5. που μου έγραψες και σε ευχαριστώ δεν το κατάλαβα δυστυχώς. Θα προσπαθήσω να διαβάσω κάπου τι κάνει ώστε να μην αντιγράφω στα κουτουρού.

Do that. Αν έχεις απορίες εδώ είμαστε. 

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

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

Do that. Αν έχεις απορίες εδώ είμαστε. 

διάβασα και υλοποίησα το error message κατά το redirect! είναι όντως εύκολο και χρήσιμο

αλλά όσο και αν ψάχνω δεν μπορώ να βρω πως να κάνω αυτό με τα panels

δηλαδή να εμφανίζω και να κρύβω όποιο θέλω ανάλογα την επιλογή του κεντρικού πανελ. δεν γνωρίζω καθόλου javascript.

Μήπως υπάρχει κάποιο link ώστε να μάθω στην δομή του κώδικα, ας πούμε κάποια σελίδα όπου σου εξηγεί τις εντολές όπως το php.net - παράδειγμα ?

 

edit

 

ξεκινάω να διαβάζω εδώ, είδη από τα πρώτα παραδείγματα έμαθα πολλά!

 

edit 2

 

τελικά κάτι κατάφερα πριν λίγο αλλά όχι 100% σωστό. Έπειτα από πολλές αλαγές το έχασα, κάπως.

Είχα καταφέρει να μου εμφανίζει το ένα υποπάνελ αλλά μετά όταν στο αρχικό μενού διάλεγες το δεύτερο δεν το έκανε. Νομίζω ότι κάπου το χάνω με τα classes και τα ids.

 

ορίστε τι έχω κάνει μεχρι στιγμής. Μπορεί να είναι ίδιο με του defacer αλλά διαβάζοντας από το w3schools κατάλαβα τι έκανα.

<html>

<head>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.3/jquery.min.js"></script>
<title>Forma Epilogis</title>

<h1>My Application</h1>
</head>
<body>


<select id="whatever">
<option>Select one...</option>
<option data-panel-selector="#foopanel">Nomoi</option>
<option data-panel-selector="#barpanel">Dimoi</option>
</select>



<div class="panel" id="foopanel">
<select>
<option data-panel-selector="#foopanel">Messinia</option>
<option data-panel-selector="#foopanel">Lakonia</option>
</select>
</div>



<div class="panel" id="barpanel">
<select>
<option data-panel-selector="#barpanel">Kalamata</option>
<option data-panel-selector="#barpanel">Sparti</option>
</select>
</div>


<script>
$("#whatever").change(function() 
{
    var panelselector = $(this).attr("data-panel-selector");
    $(".panel").hide().filter(panelSelector).show();
});
</script>


</body>
</html>

<?php

?>

Νομίζω ότι τα ids και η συσχέτηση με το αρχικό πάνελ φταίνε αλλά τώρα δεν μπορώ να το βρω.

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

τελικά κάτι κατάφερα πριν λίγο αλλά όχι 100% σωστό. Έπειτα από πολλές αλαγές το έχασα, κάπως.

Είχα καταφέρει να μου εμφανίζει το ένα υποπάνελ αλλά μετά όταν στο αρχικό μενού διάλεγες το δεύτερο δεν το έκανε. Νομίζω ότι κάπου το χάνω με τα classes και τα ids.

 

Χμ σου είχα γράψει λάθος στο αρχικό παράδειγμα, οπότε no wonder που δε δουλεύει. Θέλει μια μικρή αλλαγή από

 

var panelselector = $(this).attr("data-panel-selector");

 

σε

 

var panelselector = $(this).find(":selected").attr("data-panel-selector");

 

Και προσοχή στο αν το panelselector είναι γραμμένο παντού με μικρό ή κεφαλαίο S έτσι;

 

Να το να δουλεύει.

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

Χμ σου είχα γράψει λάθος στο αρχικό παράδειγμα, οπότε no wonder που δε δουλεύει. Θέλει μια μικρή αλλαγή από

 

var panelselector = $(this).attr("data-panel-selector");

 

σε

 

var panelselector = $(this).find(":selected").attr("data-panel-selector");

 

Και προσοχή στο αν το panelselector είναι γραμμένο παντού με μικρό ή κεφαλαίο S έτσι;

 

Να το να δουλεύει.

ευχαριστώ πολύ!

 

συνεχίζω λοιπόν. Έχω να πω πάντως ότι από το διάβασμα στο php.net και w3scholls έχω μάθει πολλά πράγματα

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

  • 1 μήνα μετά...
Δημοσ. (επεξεργασμένο)

καλησπέρα και χρόνια πολλά σε όλους.
θα χρειαστώ την καθοδήγηση σας για ακόμα μια φορά. 

έχω φτιάξει αυτόν τον πίνακα. 

θέλω λοιπόν ο χρήστης να μπορεί να βάλει τιμές στο input type text μόνον όταν θα έχει τσεκαριστεί το αντίστοιχο check box του. 

αλλιώς να μην τον αφήνει. 
 

φαντάζομαι θα γίνει με js. έχετε να μου προτείνετε κάποιο link ώστε να βρω πως θα το κάνω? 

 

 

edit

είδα ότι ίσως γίνεται με το παρακάτω script απλά δεν έχω καταλάβει ακόμα πως ακριβώς πρέπει να το κάνω 
κώδικας: 

 

<script type="text/javascript">
var chk = $('input[type="checkbox"]');
    chk.each(function(){
        var v = $(this).attr('checked') == 'checked'?1:0;
        $(this).after('<input type="hidden" name="'+$(this).attr('rel')+'" value="'+v+'" />');
    });

chk.change(function(){ 
        var v = $(this).is(':checked')?1:0;
        $(this).next('input[type="hidden"]').val(v);
    });
</script>

edit 2

 

μέχρι στιγμής έχω κάνει αυτό: 

<!DOCTYPE html>
<html>
<head>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.3/jquery.min.js"></script>
<style>
#A1 {
display: none; 

}
</style>
</head>
<body>


<script type="text/javascript">
var chk = $('input[type="checkbox"]');
    chk.each(function(){
        var v = $(this).attr('checked') == 'checked'?1:0;
        $(this).after('<input type="hidden" name="'+$(this).attr('rel')+'" value="'+v+'" />');
    });

chk.change(function(){ 
        var v = $(this).is(':checked')?1:0;
        $(this).next('input[type="hidden"]').val(v);
    });
</script>



<label>Active</label><input rel="active" type="checkbox" />
<input type="text" name="username" id="A1">
</body>
</html>

Τι κάνω λάθος? 


 

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

Εκανα καποιες αλλαγές στο markup για να δουλέψει το script. Κάτι τέτοιο δεν θέλεις?

PS : Τώρα μαθαίνω JS οπότε μπορεί να είναι εντελώς σκουπίδι. (δουλεύει πάντως :P )

<div class="form">

<table border="01" rules="all" >
  <tr>
    <th>MPLA1</th>
    <th>MPLA2</th>
  </tr>
  <tr id="section1">
    <td><input class="checkbox" type="checkbox" name="aep" value="Bike"> AEP </td>
    <td><input type="text" disabled name="username"><br /></td>
  </tr>
  <tr id="section2">
    <td><input class="checkbox" type="checkbox" name="mplampla" value="Bike"> MPLAMPLA</td>
    <td><input type="text" disabled name="username"><br /></td>
  </tr>
   <tr id="section3">
    <td><input class="checkbox" type="checkbox" name="mplampla2" value="Bike"> mplampla2 </td>
    <td><input type="text" disabled name="username"><br /></td>
  </tr>
   <tr id="section4">
    <td><input class="checkbox" type="checkbox" name="mplampla3" value="Bike"> mplampla3 </td>
    <td><input type="text" disabled name="username"><br /></td>
  </tr>
</table>
</div>
$(document).ready(function() {
    $(".checkbox").click(function() {
      var parent = $(this).closest('tr').attr('id');
      console.log(parent); // ayto mporeis na to vgaleis sto telos. Yparxei gia na deis ti ginetai kathe fora pou kaneis click ena checkbox
      if($(this).is(':checked')){
        $('#'+parent+' input[type="text"]').removeAttr('disabled');
        
      }else{
        $('#'+parent+' input[type="text"]').attr('disabled',true);
      }
    });
  });
Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

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

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

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

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

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

Σύνδεση

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

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