Esecuzione di una Update di singoli record

Alessandro Violante

Nuovo Utente
27 Set 2013
2
0
0
Buona sera, il mio problema riguarda l'utilizzo di una query UPDATE allo scopo di modificare i nomi di alcuni record. Non riesco bene a capire cosa devo fare.

Questo è il mio codice

PHP:
	function show_pagina($db,$sql,$q) {
	
		$pagina = htmlentities($_GET['modifica_pagina']);
		echo $pagina;
	
		try {
			$sql = $db->prepare("SELECT * FROM pagine");
			$sql->execute();
			$result = $sql->fetchAll(PDO::FETCH_ASSOC);
			$db->setAttribute(PDO::ATTR_ERRMODE,PDO::ERRMODE_EXCEPTION);	
			
			echo 'Elenco pagine';
			echo '<ul>';
			foreach ($result as $value) {
				echo "<a href='{$value['slug']}'><li>{$value['nome_pagina']}</li></a>";
				echo "<label for 'modifica_pagina'>";
				echo "<form name='form' method='get' action=''>";
				echo "<input type='text' name='modifica_pagina'>";
				echo "<input type='submit' name='edit_pages' value='Modifica pagina'>";
				echo "</form>";
			}
				echo '</ul>';
				 
			} catch (PDOException $e) {
				echo 'Selezione fallita'.$e->getMessage();
			}
		
		try {	
		
			if (isset($_POST['edit_pages'])) {
			
				$sql = "UPDATE pagine SET nome_pagina = :modifica_pagina, slug = :modifica_pagina WHERE modifica_pagina = '".$modifica_pagina."'";
				$q = $db->prepare($sql);
				$q->execute(array(':modifica_pagina'=>$_POST['modifica_pagina'],':slug'=>$_POST['modifica_pagina']));
				$db->setAttribute(PDO::ATTR_ERRMODE,PDO::ERRMODE_EXCEPTION);
			}
				
			} catch(PDOException $e) {
				echo 'Modifica fallita'.$e->getMessage();
			}		
	}

Quello che non capisco è: voglio che la mia variabile get sia, a seconda delle caselle, il nuovo nome delle pagine. Detto questo la clausola WHERE che cosa deve dire? Laddove cosa? Io voglio dire qualcosa tipo "laddove $modifica_pagina è uguale al nuovo nome_pagina". Come si fa?

Grazie!
 
Ciao, a me sembra corretto a parte che la variabile $modifica_pagina non esiste perche all'inizio la chiami $pagina
dovrebbe quindi idventare
PHP:
WHERE modifica_pagina = '".$pagina."'";
 
ciao critic, sì è vero avevo scritto male il codice ma comunque il problema non è quello perchè in questo modo l'update non fa nulla. sembra che la condizione if nome pagina = variabile get modifica pagina per la query non significhi niente

qualche suggerimento?
 
$modifica_pagina non è definita
PHP:
$sql = "UPDATE pagine SET nome_pagina = :modifica_pagina, slug = :modifica_pagina WHERE modifica_pagina = '" . $modifica_pagina . "'";
prova cosi
PHP:
$sql = "UPDATE pagine SET nome_pagina = :modifica_pagina, slug = :modifica_pagina WHERE modifica_pagina = '" . $_POST['modifica_pagina'] . "'";
 

Discussioni simili