Modifica e cancellazione

rada

Nuovo Utente
25 Feb 2012
18
0
1
Buon giorno,ho utilizzato questo codice per il blog

PHP:
<?

//includiamo il file di configurazione
@include "config.php";

//valorizziamo le variabili con i dati ricevuti dal form
if(isset($_POST['submit'])){
  if(isset($_POST['autore'])){
    $autore = addslashes($_POST['autore']);
  }
  if(isset($_POST['titolo'])){
    $titolo = addslashes($_POST['titolo']);
  }
  if(isset($_POST['articolo'])){
    $articolo = addslashes($_POST['articolo']);
  }

  // popoliamo i campi della tabella articoli con i dati ricevuti dal form
  $sql = "INSERT INTO articoli (art_autore, art_titolo, art_articolo, art_data) VALUES ('$autore', '$titolo', '$articolo', now())";

  // se l'inserimento ha avuto successo inviamo una notifica
  if (@mysql_query($sql) or die (mysql_error())){
    echo "Articolo inserito con successo.";
  } 
}else{
  // se non sono stati inviati dati dal form mostriamo il modulo per l'inserimento
  ?>
<form action="insert_post.php" method="post">
Autore:<br>
<input name="autore" type="text" size="20"><br>
Titolo:<br>
<input name="titolo" type="text" size="30"><br>
Articolo:<br>
<textarea name="articolo" cols="40" rows="10"></textarea><br>
<input name="submit" type="submit" value="Invia">
</form>
  <?
}
?>
Volevo capire come richiamare i vari articoli per la loro modifica e/o eliminazione negli stessi form.
avete qualche idea?
Grazie anticipatamente Claudio
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.042
146
63
PR
www.borgo-italia.it
ciao
potresti fare così
in una pag chiamata es. mod_del.php elenche gli articoli tramite una select

PHP:
<?php
//....
$q=mysql_query("SELECT * FROM articoli ORDER BY data");
while($riga=mysql_fetch_array($q)){
	$id=$riga['id'];//id dell'articolo
	$autore=$riga['autore'];
	$titolo=$riga['titolo'];
	echo "$autore $titolo <a href=\"esegui.php?del=$id\" target=\"_blank\">elimina</a> <a href=\"esegui.php?mod=$id\" target=\"_blank\">elimina</a>";
}
//....
?>
poi nella pag esegui.php

PHP:
<?php
//....
if(isset($_GET['del'])){
	//qui metti la query  DELETE con WHERE id=$_GET{'id']
}elseif(isset($_GET['del']){
	/*qui con una select estrai i dati dell'articolo e riempi i campi di in form
	con i dati dell'articolo e ti conviene un capo hidden per trasmetter l'id
	*/
	//rirotno in automatico all'elenco
}else{
	//un ritorno a dove vuoi 
}
if(isset($_POST['modifica'])){
	//qui metterai l'UPDATE con il solito WHERE
}
//....
?>
ho tralasciato i controlli eventuali, la cui importnza dipende anche da chi fa le modifiche o la cancellazione, se hai problemi siamo qui

p.s.
NON usare lo short tag di php <? è deprecato usa <?php
 

rada

Nuovo Utente
25 Feb 2012
18
0
1
ciao
potresti fare così
in una pag chiamata es. mod_del.php elenche gli articoli tramite una select

PHP:
<?php
//....
$q=mysql_query("SELECT * FROM articoli ORDER BY data");
while($riga=mysql_fetch_array($q)){
	$id=$riga['id'];//id dell'articolo
	$autore=$riga['autore'];
	$titolo=$riga['titolo'];
	echo "$autore $titolo <a href=\"esegui.php?del=$id\" target=\"_blank\">elimina</a> <a href=\"esegui.php?mod=$id\" target=\"_blank\">elimina</a>";
}
//....
?>
poi nella pag esegui.php

PHP:
<?php
//....
if(isset($_GET['del'])){
	//qui metti la query  DELETE con WHERE id=$_GET{'id']
}elseif(isset($_GET['del']){
	/*qui con una select estrai i dati dell'articolo e riempi i campi di in form
	con i dati dell'articolo e ti conviene un capo hidden per trasmetter l'id
	*/
	//rirotno in automatico all'elenco
}else{
	//un ritorno a dove vuoi 
}
if(isset($_POST['modifica'])){
	//qui metterai l'UPDATE con il solito WHERE
}
//....
?>
ho tralasciato i controlli eventuali, la cui importnza dipende anche da chi fa le modifiche o la cancellazione, se hai problemi siamo qui

p.s.
NON usare lo short tag di php <? è deprecato usa <?php
prima di tutto grazie Il primo passo è ok
scusa ma sono proprio ignorante in php,come dovrei fare per riempire i form,
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.042
146
63
PR
www.borgo-italia.it
ciao
ecco un esempio

PHP:
<?php
//......
}elseif(isset($_GET['del']){ 
     $id=$_GET['del'];
	 $q=mysql_query"(SELECT * FROM articoli WHERE id=$id");//fai la querry sul record
	 $riga=mysql_fetch_array($q);
	 $autore=$riga['autore'];
	 //e gli altri titolo, testo...
?>
<form name="form1" method="post" action="<?php echo htmlspecialchars($_SERVER['PHP_SELF']);?>">
  <!-- guarda come inserire i valori vecchi dove c'è value= -->
  <input name="id" type="hidden" value="<?php echo $id;?>">
  <input name="autore" type="text" value="<?php echo $autore;?>">
  <!-- ecc -->
  <br>
  <input type="submit" name="modifica" value="Invia">
</form>
<?php
}else{ 
//......
?>
spero che sia chiaro
 

rada

Nuovo Utente
25 Feb 2012
18
0
1
Perdonami sono tarello,ma continua a darmi errore:

Parse error: syntax error, unexpected '}'

sta parentesi perchè è sbagliata?
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.042
146
63
PR
www.borgo-italia.it
ciao
guarda quello che ti ho inviato sono pezzettini devi mettere tutto insieme
quando trovi //.... (io uso così) viol dire tutto quello che ho indicato prima (o dopo), comunque se hai problemi ti posto tutto il completo.
comunque fai una verifica: partendo dall'inizio ad ogni parentesi aperta deve corrispondere una chiusa (se le conti num_aperte=num_chiuse). l'errore che ti da è dounto al fatto che probabilmente hai dimenticato di aprirne una.
 

rada

Nuovo Utente
25 Feb 2012
18
0
1
ciao
guarda quello che ti ho inviato sono pezzettini devi mettere tutto insieme
quando trovi //.... (io uso così) viol dire tutto quello che ho indicato prima (o dopo), comunque se hai problemi ti posto tutto il completo.
comunque fai una verifica: partendo dall'inizio ad ogni parentesi aperta deve corrispondere una chiusa (se le conti num_aperte=num_chiuse). l'errore che ti da è dounto al fatto che probabilmente hai dimenticato di aprirne una.
borgo italia scusami ma sono proprio ignorante le prime 5 righe vanno bene o sbaglio qualcosa

PHP:
<?php
@include "config.php"; 

if(isset($_GET['del'])){ 

mysql_query("DELETE FROM articoli WHERE id=$_GET{'art_id']");

}elseif(isset($_GET['del']){

$id=$_GET['del'];

     $q=mysql_query"(SELECT * FROM articoli WHERE art_id=$id");//fai la querry sul record
     $riga=mysql_fetch_array($q);
     $titolo=$riga['art_titolo'];
     //e gli altri titolo, testo...
?>
<form name="form1" method="post" action="<?php echo htmlspecialchars($_SERVER['PHP_SELF']);?>">
  <!-- guarda come inserire i valori vecchi dove c'è value= -->
  <input name="art_id" type="hidden" value="<?php echo $id;?>">
  <input name="art_titolo" type="text" value="<?php echo $titolo;?>">
  <!-- ecc -->
  <br>
  <input type="submit" name="modifica" value="Invia">
</form>
<?php
}else{ 
}
if(isset($_POST['modifica'])){
    //qui metterai l'UPDATE con il solito WHERE
}
//....
?>
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.042
146
63
PR
www.borgo-italia.it
ciao
visto così mi sembra ok, salvo alcune correzioni.
una cosa togli la @ si mette solo quando hai finito e sei sicuro che tutto funzioni alla perfezione.
mi ero dimenticato di una cosa: tu salvi i dati con addslshes, quindi quando li leggi devi usare stripslashes altrimenti ti vengono slash su slash

PHP:
<?php
include "config.php"; 
if(isset($_GET['del'])){ 
	//mysql_query("DELETE FROM articoli WHERE id=$_GET['art_id']");//inoltre qui avevi messo una { al posto di una [
	//poi se usi direttamente il get devi scrivere (concatenare)
	mysql_query("DELETE FROM articoli WHERE id=".$_GET['art_id']);
	//altrimenti fa casino con gli apici
	/* oppure leggi il get
	$id=$_GET['del'];
	mysql_query("DELETE FROM articoli WHERE id=$id");//come ho fatto per la modifica
	*/
}elseif(isset($_GET['mod']){//******vedi nota sotto *******
	$id=$_GET['mod'];
	$q=mysql_query"(SELECT * FROM articoli WHERE art_id=$id");//fai la querry sul record
	$riga=mysql_fetch_array($q);
	$titolo=stripslashes($riga['art_titolo']);//vedi quanto ti ho scritto prima
	$articolo=stripslashes($riga['art_articolo']);
?>
	<form name="form1" method="post" action="<?php echo htmlspecialchars($_SERVER['PHP_SELF']);?>">
		<!-- guarda come inserire i valori vecchi dove c'è value= -->
		<input name="art_id" type="hidden" value="<?php echo $id;?>">
		<input name="art_titolo" type="text" value="<?php echo $titolo;?>">
		<br>
		<input name="art_articolo" type="text" value="<?php echo $articolo;?>">
		<br>
		<input type="submit" name="modifica" value="Invia">
	</form>
<?php
}else{ 
	echo "<a href=\"javascript:\" onclick=\"window.close();\">CHIUDI FINESTRA</a>";
}
if(isset($_POST['modifica'])){
    $id=$_POST['art_id'];
	$art_titolo=addslashes($_POST['art_titolo']);
	$art_articolo=addslashes($_POST['art_articolo']);
	// se per caso non hai modificato nulla, non ti preuccupare mysql se ne accorge e non uppa
	$q=mysql_query("UPDATE articoli SET art_titolo='$art_titolo', art_articolo='$art_articolo' WHERE id=$id");
}
//....
?>
***non so se ho sbagliato io prima a scriverlo, ma in quel punto devi leggere la querystringa mod, altrimenti lo script come fa a capire se vuoi eliminare o uppare

provalo, al massimo non funzia
se funzia a te metterlo in buona grafica
 

rada

Nuovo Utente
25 Feb 2012
18
0
1
Scusami ma proprio non ne vuole sapere:

Parse error: syntax error, unexpected '{' on line 6
 

Eliox

Utente Attivo
25 Feb 2005
4.390
3
0
L'errore è qui:
PHP:
elseif(isset($_GET['del']){
dovrebbe essere:
PHP:
elseif(isset($_GET['del'])){
 

rada

Nuovo Utente
25 Feb 2012
18
0
1
da cambiare anche quì
PHP:
$q=mysql_query"(SELECT * FROM articoli WHERE art_id=$id");//fai la querry sul record
diventa così
PHP:
$q=mysql_query("SELECT * FROM articoli WHERE art_id=$id");//fai la querry sul record
ok adesso vedo la pagina per la modifica ,ma non effettua nessun cambiamento e non elimina nulla.
Altra domanda in value va bene se metto per Es. size="30"?

Grazie
 

rada

Nuovo Utente
25 Feb 2012
18
0
1
Risolto avevo sbagliato

PHP:
$q=mysql_query("UPDATE articoli SET art_titolo='$art_titolo', art_articolo='$art_articolo' WHERE id=$id");
così funziona a dovere

PHP:
$q=mysql_query("UPDATE articoli SET art_titolo='$art_titolo', art_articolo='$art_articolo' WHERE art_id=$id");
Non so proprio come ringraziarvi grazie,grazie,grazie @borgo italia @Eliox

Claudio
 

rada

Nuovo Utente
25 Feb 2012
18
0
1
Dimenticavo metto il codice per intero.

PHP:
<?php
include "config.php"; 
if(isset($_GET['del'])){ 
    $id=$_GET['del'];
    mysql_query("DELETE FROM articoli WHERE art_id=$id");//come ho fatto per la modifica
    
}elseif(isset($_GET['mod'])){//******vedi nota sotto *******
    $id=$_GET['mod'];
    $q=mysql_query ("SELECT * FROM articoli WHERE art_id=$id");//fai la querry sul record
    $riga=mysql_fetch_array($q);
    $titolo=stripslashes($riga['art_titolo']);//vedi quanto ti ho scritto prima
    $articolo=stripslashes($riga['art_articolo']);
?>
    <form name="form1" method="post" action="<?php echo htmlspecialchars($_SERVER['PHP_SELF']);?>">
        <!-- guarda come inserire i valori vecchi dove c'è value= -->
        <input name="art_id" type="hidden" value="<?php echo $id;?>">
        <input name="art_titolo" type="text" value="<?php echo $titolo;?>">
        <br>
        <input name="art_articolo" type="textarea" value="<?php echo $articolo;?>">
        <br>
        <input type="submit" name="modifica" value="Invia">
    </form>
<?php
}else{ 
    echo "<a href=\"javascript:\" onclick=\"window.close();\">CHIUDI FINESTRA</a>";
}
if(isset($_POST['modifica'])){
    $id=$_POST['art_id'];
    $art_titolo=addslashes($_POST['art_titolo']);
    $art_articolo=addslashes($_POST['art_articolo']);
    // se per caso non hai modificato nulla, non ti preuccupare mysql se ne accorge e non uppa
    $q=mysql_query("UPDATE articoli SET art_titolo='$art_titolo', art_articolo='$art_articolo' WHERE art_id=$id");
}
// grazie borgo italia
?>
 

Eliox

Utente Attivo
25 Feb 2005
4.390
3
0
brutto, ma dall'occhio di lince
La natura toglie e la natura da :)

Menzione di merito a Rada che pubblica sempre il codice corretto una volta risolto un problema, dovrebbe essere una procedura incoraggiata anche per gli altri utenti.
 

rada

Nuovo Utente
25 Feb 2012
18
0
1
Ho riscontrato questo errore:
premessa nell'areatext sia creazione articolo che modifica utilizzo tynmce

se modifico per la seconda volta l'articolo contenente un immagine l'immagine viene inglobata nella textarea.
Com'è possibile?
questo è l'esempio di una seconda modifica

HTML:
 <form name="form1" method="post" action="/modifica/esegui.php">
        <!-- guarda come inserire i valori vecchi dove c'è value= -->
        <input name="art_id" type="hidden" value="18">
        <input name="art_autore" type="text" value="123456">
        Titolo:<br><input name="art_titolo" type="text" value="poiuyt eeeee"></br>
        <br>

        <textarea name="art_articolo" cols="40" rows="10" value="<p><img title="1" src="http://forum.mrwebmaster.it/upload/img/0_nest.jpg" alt="1" width="300" height="180" />35131231315131<br />3515315315353153513<br />5153153153153135153153<br />51613153153531531<br />1531351531531531<br />31351531531531531351<br />531531531351531535335131231315131<br /> 3515315315353153513<br /> 5153153153153135153153<br /> 51613153153531531<br /> 1531351531531531<br /> 31351531531531531351<br /> 531531531351531535335131231315131<br /> 3515315315353153513<br /> 5153153153153135153153<br /> 51613153153531531<br /> 1531351531531531<br /> 31351531531531531351<br /> 531531531351531535335131231315131<br /> 3515315315353153513<br /> 5153153153153135153153<br /> 51613153153531531<br /> 1531351531531531<br /> 31351531531531531351<br /> 531531531351531535335131231315131<br /> 3515315315353153513<br /> 5153153153153135153153<br /> 51613153153531531<br /> 1531351531531531<br /> 31351531531531531351<br /> 531531531351531535335131231315131<br /> 3515315315353153513<br /> 5153153153153135153153<br /> 51613153153531531<br /> 1531351531531531<br /> 31351531531531531351<br /> 531531531351531535335131231315131<br /> 3515315315353153513<br /> 5153153153153135153153<br /> 51613153153531531<br /> 1531351531531531<br /> 31351531531531531351<br /> 531531531351531535335131231315131<br /> 3515315315353153513<br /> 5153153153153135153153<br /> 51613153153531531<br /> 1531351531531531<br /> 31351531531531531351<br /> 531531531351531535335131231315131<br /> 3515315315353153513<br /> 5153153153153135153153<br /> 51613153153531531<br /> 1531351531531531<br /> 31351531531531531351<br /> 531531531351531535335131231315131<br /> 3515315315353153513<br /> 5153153153153135153153<br /> 51613153153531531<br /> 1531351531531531<br /> 31351531531531531351<br /> 531531531351531535335131231315131<br /> 3515315315353153513<br /> 5153153153153135153153<br /> 51613153153531531<br /> 1531351531531531<br /> 31351531531531531351<br /> 531531531351531535335131231315131<br /> 3515315315353153513<br /> 5153153153153135153153<br /> 51613153153531531<br /> 1531351531531531<br /> 31351531531531531351<br /> 531531531351531535335131231315131<br /> 3515315315353153513<br /> 5153153153153135153153<br /> 51613153153531531<br /> 1531351531531531<br /> 31351531531531531351<br /> 531531531351531535335131231315131<br /> 3515315315353153513<br /> 5153153153153135153153<br /> 51613153153531531<br /> 1531351531531531<br /> 31351531531531531351<br /> 531531531351531535335131231315131<br /> 3515315315353153513<br /> 5153153153153135153153<br /> 51613153153531531<br /> 1531351531531531<br /> 31351531531531531351<br /> 531531531351531535335131231315131<br /> 3515315315353153513<br /> 5153153153153135153153<br /> 51613153153531531<br /> 1531351531531531<br /> 31351531531531531351<br /> 531531531351531535335131231315131<br /> 3515315315353153513<br /> 5153153153153135153153<br /> 51613153153531531<br /> 1531351531531531<br /> 31351531531531531351<br /> 531531531351531535335131231315131<br /> 3515315315353153513<br /> 5153153153153135153153<br /> 51613153153531531<br /> 1531351531531531<br /> 31351531531531531351<br /> 5315315313515315353<br />asdl&ograve;fm&agrave;alksmdfl&agrave;akmdfl&agrave;mal&agrave;gfmal&agrave;ksdfml&agrave;a<br />l&agrave;kdfjgl&agrave;ak&ograve;gl&agrave;ajgadfklgjaskl&ograve;gasjaskl&ograve;gsjgf</p>"></textarea>
        <br>
        <input type="submit" name="modifica" value="Invia">
    </form>
Grazie Claudio
 
Ultima modifica:

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.042
146
63
PR
www.borgo-italia.it
ciao
usi in tynmce nell'area di testo la funzione allega immagine? se si per forza poi ti appare nel testo.
secondo me terrei separata la possibilità di inserire l'immagine (disabilitando allega immagine in tymnice) e mettendo un campo di input tipo file per allegarla se presente, salvando nel db solo il suo nome e caricandola in una cartella apposita.
certo devi rimettere la mani sulla tabella sul form....
stai attenta inoltre che sugli editor diventa più difficile poi controllare cosa uno inserisce e qualche malentenzionato può inviarti anche degli script.
non uso tymnice (uso un altro) è ho abilitato solo le funzioni più semplici (grassetto inclinato ed elenco), poi filtro il testo con strip_tags()
 

rada

Nuovo Utente
25 Feb 2012
18
0
1
Ciao,i commenti lo ho disabilitati,i numeri che vedi li ho inseriti io il problema è come vedi

HTML:
value="<p><img title="1" src="http://forum.mrwebmaster.it/upload/img/0_nest.jpg" alt="1" width="300" height="180" />
l'immagine viene inglobata da value=
non capisco nella pagina creazione post funziona tutto a dovere.

tymnice mi serve perchè essendo sempre fuori casa mi da la possibilità di scrivere con immagini e sistemare il layout.
tu cosa usi?
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.042
146
63
PR
www.borgo-italia.it
ciao
io uso wysiwyg (http://www.openwebware.com) però, come ti ho detto, non dipende dall'editor, ma dal fatto che tu alleghi l'immagine nel testo e quindi è logigo che ti inserisca
....<img title="1" src="http://forum.mrwebmaster.it/upload/img/0_nest.jpg" alt="1" width="300" height="180" />....
poi che tu sia in casa o fuori non fa alcuna differenza
dovresti fare il form in questa maniera (importante se tratti immagini - files - l'enctype)

HTML:
<form action="<?php echo htmlspecialchars($_SERVER['PHP_SELF']);?>" method="post" enctype="multipart/form-data">
Autore:<br>
<input name="autore" type="text" size="20"><br>
Titolo:<br>
<input name="titolo" type="text" size="30"><br>
Articolo:<br>
<textarea name="articolo" cols="40" rows="10"></textarea><br> <!-- qui solo il testo -->
<input name="foto_1" type="file" id="foto_1"><!-- e con questo selezioni poi carichi l'immagine -->
<input name="submit" type="submit" value="Invia">
</form>
poi devi mettere in tabella articoli un campo in cui registrerai (se c'è) il nome dell'immagine.
poi come fare ... alla prossima

p.s.
se guardi il mio form sul mio sito contatti vedi come viene
 

rada

Nuovo Utente
25 Feb 2012
18
0
1
Ok compreso,ma ho una domanda,riesci a gestire il float dell immagini oppure creare tanbelle per impaginare ecc.