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

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

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

Καλησπέρα σε όλους,
Φτιάχνω μια εφαρμογή "στο χέρι" και θέλω κάποια καθοδήγηση γιατί αυτά που γράφω τώρα συνήθως τα έπαιρνα έτοιμα από ενα CMS ή at least plugin !

Έχω : 

<h2>Λίστα μαθημάτων</h2>
						<ul class="ul_style_1">
						<p><?php 
						
						$sqlessons = 'SELECT * FROM lessons ';
						$lessons = $mysqli->query($sqlessons);	
						while ($row=$lessons->fetch_assoc()) 
						{
							echo "<li>$row[lesson_name] : <span>$row[lesson_description]</span></li>";?>
							<p id="add" onclick="myFunction()">Προσθήκη μαθήματος</p>
							
						<?php 
					
						} ?>
						</p>
						</ul>

Μου φέρνει σε κάθε γραμμή τον τίτλο του μαθήματος (lesson_name) και δίπλα την περιγραφή.
Θέλω ο χρήστης πατώντας πάνω στο "Προσθήκη μαθήματος" (ή onclick σε κάποιο image) να φτιάχνω μια γραμμή που θα γράφει στη βάση το userid (που το χω στο session) και το id του lesson που το τραβάω μεσα στο while.

ANY IDEAS πως να περασω αυτο το onclick γιατί εχω φάει γερό σκάλωμα ; 

Υ.Γ. στο σκριν που επισυνάπτω φαίνεται η κατάσταση ως εχει τωρα

Screenshot (21).png

Επεξ/σία από diakoman
Δημοσ.

Για αρχή, από τον κώδικα που δίνεις, δεν φαίνεται να γνωρίζεις html  και πολύ καλά. μέσα σε μια ετικέτα UL δεν επιτρέπονται άλλες ετικέτες εκτός από ετικέτες LI  και σχόλια (Δες εδώ). Επίσης το id κάθε ετικέτας θα πρέπει να είναι μοναδικό (αναφέρομαι στο <p id="add".. Δες εδώ ). Χρησιμοποίησε class αντί για id αν το θες μόνο για CSS.

Προφανώς θα πρέπει να περάσεις στη συνάρτηση myFunction κάποιο χαρακτηριστικό της εγγραφής του μαθήματος. Μετά μέσα από τη συνάρτηση θα πρέπει να στείλεις τα δεδομένα αυτά στο server κάνοντας χρήσης ajax (htmlxmlrequest, jquery.ajax ή ότι σε βολεύει) και από το script που θα καλέσεις με την ajax θα περάσεις στη βάση δεδομένων σου την εγγραφή που θες.

<?php 

$sqlessons = 'SELECT * FROM lessons ';
$lessons = $mysqli->query($sqlessons);	

while ($row=$lessons->fetch_assoc()) {
	echo "<li>{$row['lesson_name']} : <span>{$row['lesson_description']}</span>";
	echo "<div><a class=\"addLessonLink\" href=\"#\" onclick=\"myFunction('{$row['lesson_name']}')\">Προσθήκη μαθήματος</a></div></li>";
}

?>

Για ajax με javascript μόνο δες εδώ, για jquery εδώ και γενικά googleαρέ το!

Δημοσ.
11 ώρες πριν, elvizakos είπε

Για αρχή, από τον κώδικα που δίνεις, δεν φαίνεται να γνωρίζεις html  και πολύ καλά. μέσα σε μια ετικέτα UL δεν επιτρέπονται άλλες ετικέτες εκτός από ετικέτες LI  και σχόλια (Δες εδώ). Επίσης το id κάθε ετικέτας θα πρέπει να είναι μοναδικό (αναφέρομαι στο <p id="add".. Δες εδώ ). Χρησιμοποίησε class αντί για id αν το θες μόνο για CSS.

Προφανώς θα πρέπει να περάσεις στη συνάρτηση myFunction κάποιο χαρακτηριστικό της εγγραφής του μαθήματος. Μετά μέσα από τη συνάρτηση θα πρέπει να στείλεις τα δεδομένα αυτά στο server κάνοντας χρήσης ajax (htmlxmlrequest, jquery.ajax ή ότι σε βολεύει) και από το script που θα καλέσεις με την ajax θα περάσεις στη βάση δεδομένων σου την εγγραφή που θες.


<?php 

$sqlessons = 'SELECT * FROM lessons ';
$lessons = $mysqli->query($sqlessons);	

while ($row=$lessons->fetch_assoc()) {
	echo "<li>{$row['lesson_name']} : <span>{$row['lesson_description']}</span>";
	echo "<div><a class=\"addLessonLink\" href=\"#\" onclick=\"myFunction('{$row['lesson_name']}')\">Προσθήκη μαθήματος</a></div></li>";
}

?>

Για ajax με javascript μόνο δες εδώ, για jquery εδώ και γενικά googleαρέ το!

Εχεις δίκιο για αρχή, το 

<p id="add" onclick="myFunction()">Προσθήκη μαθήματος</p>

ήταν ένα απ τα τεστ που βρήκα στο google και δεν θα επρεπε να είναι εκεί, στη βιασύνη του copy-paste το πήρα μαζι. Βέβαια έχω να πιασω raw προγραμματισμό σε html 10+ χρόνια από την σχολή, γιατί ασχολούμαι μόνο με asp/.net πλέον... οπότε στο οτι δεν χρησιμοποιώ την γλώσσα και κει σωστός εισαι. 

Στο θέμα μας τώρα :P
Επρεπε να διευκρινίσω ότι αφορά εργασία φίλου που επιτρέπεται μόνο html/php/mysql.
ΜΕΤΑ από πολύ πόνο κατέληξα σε αυτή την λύση η οποία παραδόξως μου δουλεύει :
 

                       <?php 
						$sqlessons = 'SELECT * FROM lessons ';
						$lessons = $mysqli->query($sqlessons);
						while ($row=$lessons->fetch_assoc()) 
						{
							echo "<li>$row[lesson_name] : $row[lesson_description]</li>";
						
							?>
							<form action="includes/addmylesson.php" method="post">
								<input type="hidden" name="lesson_id" value="<?php echo "$row[id]";?>" />
								<input type="submit" class="button" name="Submit" value="Προσθήκη" />
							</form>
							<form action="includes/delmylesson.php" method="post">
								<input type="hidden" name="lesson_id" value="<?php echo "$row[id]";?>" />
								<input type="submit" class="button" name="Submit" value="Διαγραφή" />
							</form>
							
							<?php 
						} ?>

 

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

Αν δεν θες να σου αλλάζει σελίδα κατά το submit στην φόρμα μην περάσεις action κάνε τα αρχεία σου require_once "myFile.php"; και έλεγξε τι τιμή έχει πάρει το κουμπί.

πχ. if(isset($_POST["Submit"]) && $_POST["Submit"] == "Προσθήκη"){

//add to database

}

 

Επεξ/σία από TheDarkKnight
Δημοσ.

Δες και αυτό βασικά:

<?php
$sqlessons = 'SELECT * FROM lessons ';
$lessons = $mysqli->query($sqlessons);
while ($row=$lessons->fetch_assoc())
{
	echo "<li>{$row['lesson_name']} : {$row['lesson_description']} | ";
	echo "<a href=\"includes/lesson_add_del.php?id={$row['id']}&amp;action=add\">Προσθήκη</a>";
	echo "<a href=\"includes/lesson_add_del.php?id={$row['id']}&amp;action=del\">Διαγραφή</a>"
	echo "</li>";
} ?>

Και το αρχείο includes/lesson_add_del.php μπορεί να είναι κάπως έτσι:

<?php

if (isset($_GET['action'])) switch ($_GET['action']) {
	case 'add':
		$mysqli->query(/* INSERT QUERY εδώ */);
		break;
	case 'del':
		$mysqli->query(/* DELETE QUERY εδώ */);
		break;
}

?>

Επίσης, όπως λέει και ο TheDarkKnight, μπορείς στους συνδέσμους να μη δίνεις διαδρομή, και έτσι να καλείς την ίδια σελίδα:

<?php
$sqlessons = 'SELECT * FROM lessons ';
$lessons = $mysqli->query($sqlessons);

require_once('includes/lesson_add_del.php');

while ($row=$lessons->fetch_assoc())
{
	echo "<li>{$row['lesson_name']} : {$row['lesson_description']} | ";
	echo "<a href=\"?id={$row['id']}&amp;action=add\">Προσθήκη</a>";
	echo "<a href=\"?id={$row['id']}&amp;action=del\">Διαγραφή</a>"
	echo "</li>";
} ?>

Αν παρόλα αυτά αποφασίσεις να το κάνεις με φόρμες (όπως το έχεις δλδ), βάλτες μέσα στο LI γιατί όπως σου εξήγησα και στην πρώτη απάντησή μου, δεν επιτρέπονται απευθείας μέσα στο UL.

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

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

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

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

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

Σύνδεση

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

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