- Home
- Categorie
- Coding e Sistemistica
- PHP
- errore in delete
-
pagine delete_articoli.php
[php]<?php
if(isset($_GET['id']))
{
elimina_record();
}function elimina_record()
{
//richiamo il file di configurazione
require 'Config.php';
//richiamo il file di connessione
require 'Connect.php';//$id=trim($_GET['id_articolo']);
//$categoria=trim($_POST['frm_modifica_categoria']);
$id=$_GET['id'];
//preparo la query di eliminazione
$query="DELETE FROM Articoli
WHERE id_articolo='$id'";
//invio query
if(!mysql_query($query))
{
die("errore nella query;".mysql_error());
}
$messaggio=urlencode("Articolo eliminato");
header('location:'.'../app_eye_articolo.php'.'?msg='.$messaggio);
exit;
//chiudo la connessione
mysql_close();
}
?>[/php]pagina chiamante eye_artcoli.php
[php]<?php
//richiamo il file di configurazione
require 'Config.php';
//richiamo il file di connessione
require 'Connect.php';$id=$_GET['id'];
//'".$_GET['id']."'";
//creo la SELECT
$query="SELECT * FROM Articoli WHERE id_categ='$id'";
//eseguo la query
$risultato=mysql_query($query);
if(!$risultato)
{
die("errore nella query;".mysql_error());
}
mysql_close();
?><?php
while($riga=mysql_fetch_array($risultato,MYSQL_ASSOC))
{
print"<tr>";
print"<td width='5%' height='22' align='center'>
<font face='Palatino Linotype' size='1'>
<a href='Articolo/delete_articolo.php?id=$riga[id_articolo]'><img border='0' src='immages/cestino.gif' width='55' height='37'></a></font></td>";
print"<td width='7%' height='22' align='center'>
<font face='Palatino Linotype' size='1'>
<a href='app_frm_modifica_articolo.php?id=$riga[id_articolo]'><img border='0' src='immages/modifica.gif' width='55' height='37'></a></font></td>";
?>
[/php]
non l'ho scritta tutta xrchè avrei ripetuto ciò che ho postato prima
ciao e grazie di tutto
udo lo stesso id sia per eliminare che per modificare, va bene?
-
mm una cosa:
il tuo errore mi pare sia:
eye_articoli.php
Cioè nel primo postdici che è questo l'errore.
Quindi sembrerebbe che la pagina che chiama eye_articoli.php non gli passa "id" nella query string. Puo' essere?
-
Notice: Undefined index: id in c:programmieasyphp1-8wwwstudiosito_gennarogestioneArticoloeye_articoli.php on line 9
ciao è come hai pwnsato
la riga n 9
[PHP]$query="SELECT * FROM Articoli WHERE id_categ='$id'";[/PHP]
come uscirne?
ciao e grazie
-
Prova così
<?php
if(isset($_GET['id']))
$id=mysql_real_escape_string($_GET['id']);
else
$id = "";//richiamo il file di configurazione
require 'Config.php';
//richiamo il file di connessione
require 'Connect.php';//preparo la query di eliminazione
$query="DELETE FROM Articoli
WHERE id_articolo='$id'";
//invio query
$result = mysql_query($query)
or die(mysql_error());
if(mysql_num_rows($result) == 0)
{
echo = "Visualizzi un messaggio che dice che non c'è
nessun articolo da cancellare o compi altra
azione a scelta";
}
else
{
$messaggio=urlencode("Articolo eliminato");
header('location:'.'../app_eye_articolo.php'.'?msg='.$messaggio);
exit;
//chiudo la connessione
mysql_close();
}
?>
-
@Privacy-Impresa said:
Prova così
ciao ho copiato x intero il tuo codice
mi da il seguente errParse error: parse error, expecting
','' or
';'' in c:\programmi\easyphp1-8\www\studio\sito_gennaro\gestione\articolo\delete_articolo.php on line 20sull'echo
ciao
ah, volevo chiederti cosa non andava nel mio?ciao e grazie, sperimo di uscirne
-
Ti dà errore perchè per stare nel layout sono andato a capo due volte... fai in modo che tutto l'echo sia una riga sola anche se va a capo...
Nel tuo non andava che quando all'inizio chiamo la funzione elimina_record() dovresti passare qualcosa alla funzione... quindi tipo
if(isset($_GET['id']))
$record = $_GET['id']
elimina_record($record)e sotto
function elimina_record($id)
Ma è un giro inutile... si fa tutto in un'unica funzione, perchè farne una cosa condizionata e se la condizione è vera lanci una funzione...
Se la condizione è vera svolgi l'algoritmo, se non è vera esci... non serve lanciare una funzione... (a meno che non sia un processo "parziale" di cui il codice può aver bisogno in altre occasioni)
keiske
-
ciao scusami del fastidio
ho provato come hai detto
il problema gira e rigira, me lo ritrovo sempre, cioè quello
inizialeUndefined index: id in c:\programmi\easyphp1-8\www\studio\sito_gennaro\gestione\Articolo\eye_articoli.php on linea 9
la pagina eye_articoli.php
[PHP]<?php
//richiamo il file di configurazione
require 'Config.php';
//richiamo il file di connessione
require 'Connect.php';//creo la SELECT
$query="SELECT * FROM Articoli WHERE id_categ='".$_GET['id']."'"; NUM.9 riga
//eseguo la query
$risultato=mysql_query($query);
if(!$risultato)
{
die("errore nella query;".mysql_error());
}
//chiudo la connessione
mysql_close();
?>[/PHP]
-
Correggi allo stesso modo...
<?php
if(isset($_GET['id']))
$id=mysql_real_escape_string($_GET['id']);
else
$id = "";//richiamo il file di configurazione
require 'Config.php';
//richiamo il file di connessione
require 'Connect.php';//creo la SELECT
$query="SELECT * FROM Articoli WHERE id_categ='$id'"; NUM.9 riga
//eseguo la query
$risultato=mysql_query($query)
or die(mysql_error());
if(mysql_num_rows($risultato) == 0)
{
echo = "solito messaggio che non c'è niente"
}
//chiudo la connessione
mysql_close();
?>
-
ciao ti posto l'intera pagina
[PHP]<?php
//richiamo il file di configurazione
require 'Config.php';
//richiamo il file di connessione
require 'Connect.php';//creo la SELECT
$query="SELECT * FROM Articoli WHERE id_categ='".$_GET['id']."'";
//eseguo la query
$risultato=mysql_query($query);
if(!$risultato)
{
die("errore nella query;".mysql_error());
}
//chiudo la connessione
mysql_close();
?>
<html>
<head>
<meta http-equiv="Content-Language" content="it">
<meta name="GENERATOR" content="Microsoft FrontPage 5.0">
<meta name="ProgId" content="FrontPage.Editor.Document">
<meta http-equiv="Content-Type" content="text/html; charset=windows-1252">
<title>Nuova pagina 1</title>
</head>
<body>
<div align="left">
<table border="0" cellpadding="0" cellspacing="0" style="border-collapse: collapse" bordercolor="#111111" width="882" height="33" id="AutoNumber1">
<tr>
<td width="19" height="33" rowspan="11">
</td>
<td width="866" height="20" valign="top" colspan="2">
<img border="0" src="immages/active_linea.gif" width="857" height="11">
</td>
<td width="24" height="33" rowspan="11" valign="top"></td> </tr> <tr> <td width="866" height="1" valign="top" colspan="2"> </td> </tr> <tr> <td width="866" height="1" valign="top" colspan="2"> <table border="1" cellpadding="0" cellspacing="0" style="border-collapse: collapse" width="100%" id="AutoNumber2" height="46"> <tr> <td width="23%" height="21" valign="top" style="border-left-style: solid; border-left-width: 1; border-right-style: none; border-right-width: medium; border-top-style: solid; border-top-width: 1; border-bottom-style: solid; border-bottom-width: 1"> <table border="0" cellpadding="0" cellspacing="0" style="border-collapse: collapse" bordercolor="#111111" width="100%" id="AutoNumber3" height="54"> <tr> <td width="6%" height="28" align="center" bgcolor="#FF9933"><b> <font face="Bookman Old Style" size="1" color="#FFFFFF">Elimina</font></b> </td> <td width="6%" height="28" align="center" bgcolor="#FF9933"><b> <font face="Bookman Old Style" size="1" color="#FFFFFF">Modifica</font></b> </td> <td width="14%" height="28" align="center" bgcolor="#FF9933"><p><b> <font face="Bookman Old Style" size="1" color="#FFFFFF">Codice Articolo</font></b> </td> <td width="30%" height="28" align="center" bgcolor="#FF9933"><p align="left"><b> <font face="Bookman Old Style" size="1" color="#FFFFFF">Descrizione Prodotto</font></b> </td> <td width="12%" height="28" align="center" bgcolor="#FF9933"><b> <font face="Bookman Old Style" size="1" color="#FFFFFF">Categoria</font></b> </td> <td width="8%" height="28" align="center" bgcolor="#FF9933"><b> <font face="Bookman Old Style" size="1" color="#FFFFFF">Prezzo</font></b> </td> <td width="6%" height="28" align="center" bgcolor="#FF9933"><b> <font face="Bookman Old Style" size="1" color="#FFFFFF">Disp</font></b> </td> <td width="6%" height="28" align="center" bgcolor="#FF9933"><b> <font face="Bookman Old Style" size="1" color="#FFFFFF">Off</font></b> </td> <td width="6%" height="28" align="center" bgcolor="#FF9933"><b> <font face="Bookman Old Style" size="1" color="#FFFFFF">Nov</font></b> </td> <td width="6%" height="28" align="center" bgcolor="#FF9933"><b> <font face="Bookman Old Style" size="1" color="#FFFFFF">Rich</font></b> </td> </tr>
<?php
while($riga=mysql_fetch_array($risultato,MYSQL_ASSOC))
{
print"<tr>";
print"<td width='5%' height='22' align='center'>
<font face='Palatino Linotype' size='1'>
<a href='Articolo/delete_articolo.php?id=$riga[id_articolo]'><img border='0' src='immages/cestino.gif' width='55' height='37'></a></font></td>";
print"<td width='7%' height='22' align='center'>
<font face='Palatino Linotype' size='1'>
<a href='app_frm_modifica_articolo.php?id=$riga[id_articolo]'><img border='0' src='immages/modifica.gif' width='55' height='37'></a></font></td>";
print"<td width='14%' height='22' align='center'>
<font face='Bookman Old Style' size='1'>$riga[codice]</font></td>";
print"<td width='30%' height='22' align='center'>
<p align='left'><font face='Bookman Old Style' size='1'>$riga[descrizione]</font></td>";
print"<td width='12%' height='22' align='center'>
<font face='Bookman Old Style' size='1'>$riga[id_categ]</font></td>";
print"<td width='8%' height='22' align='center'>
<font face='Bookman Old Style' size='1'>$riga[prezzo]</font></td>";
print"<td width='6%' height='22' align='center'>
<font face='Bookman Old Style' size='1'>$riga[disponibile]</font></td>";
print"<td width='6%' height='22' align='center'>
<font face='Bookman Old Style' size='1'>$riga[offerta]</font></td>";
print"<td width='4%' height='22' align='center'>
<font face='Bookman Old Style' size='1'>$riga[novita]</font></td>";
print"<td width='7%' height='22' align='center'>
<font face='Bookman Old Style' size='1'>$riga[richiesto]</font></td>";
print"</tr>";
}
?>
</table>
</td>
</tr>
</tr>
</table>
</td>
</tr>
<tr>
<td width="866" height="8" valign="bottom" colspan="2" align="center">
</td>
</tr>
<tr>
<td width="866" height="1" valign="top" colspan="2">
</td>
</tr>
<tr>
<td width="866" height="12" valign="top" colspan="2">
<img border="0" src="immages/active_linea.gif" width="857" height="11">
</td>
</tr>
<tr>
<td width="866" height="1" valign="bottom" colspan="2" align="center">
<font face="Palatino Linotype" size="2">Pagina</font>
</td>
</tr>
</table>
</div>
</body>
</html>[/PHP]mi da sempre lo stesso errore
l'articolo lo cancella ma mi notifica sempre lo stesso errore
ho provato anche a mettere ciò cmi hai chiestola pagina delete invece con i tuo suggerimenti lo fatta così
[PHP]<?php
if(isset($_GET['id']))
$record = $_GET['id'];
elimina_record($record);function elimina_record($id)
{
//richiamo il file di configurazione
require 'Config.php';
//richiamo il file di connessione
require 'Connect.php';//$id=trim($_GET['id_articolo']);
//$categoria=trim($_POST['frm_modifica_categoria']);
//$id=$_GET['id'];
//preparo la query di eliminazione
$query="DELETE FROM Articoli
WHERE id_articolo='".$_GET['id']."'";
//invio query
if(!mysql_query($query))
{
die("errore nella query;".mysql_error());
}
//$messaggio=urlencode("Articolo eliminato");
//header('location:'.'../app_eye_articolo.php'.'?msg='.$messaggio);
header('location:'.'../app_eye_articolo.php');
exit;
//chiudo la connessione
mysql_close();
}
?>[/PHP]sto uscendo pazzo
ma che errore è questo!grazie del tuo aiuto
-
ho paura che tu faccia apposta...
$query="SELECT * FROM Articoli WHERE id_categ='".$_GET['id']."'";> $query="DELETE FROM Articoli
WHERE id_articolo='".$_GET['id']."'";NON devi usare $_GET['id']! SCORDATELO!
devi usare $id e prima di usare $id lo devi valorizzare con $_GET['id'] così:
[php]$id = isset($_GET['id']) ? $_GET['id'] : "";[/php]
-
Il fatto è che in cima è già valorizzato... poi però viene inserito cmq nella query $_GET['id']
Poi see usi l'isset nell'if iniziale e poi richiami la funzione e poi apri la funzione, anche se gli dai un valore da passare, non è logicamente corretto... ti avevo preparato il codice alternativo...
Oltretutto adesso il tuo if iniziale ha due righe, quindi devi mettere tutto dentro { } o la seconda istruzione è fuori if e parte comunque, quindi chiami la funzione elimina_record anche se $record non ha valori... e ti dà errore ancora...
keiske
-
Ciao poi mi spiegherai il xrchè
adesso mi daerrore nella query;Errore di sintassi nella query SQL vicino a '' linea 1
ho scritto cosi come hai detto tu
$query="SELECT * FROM Articoli WHERE id_categ = $id";
la cancellazione la fa ma mi da quella notiziaciao e grazie
-
id categ = '$id'
Ma quella query sleeziona gli articoli... è l'altra query che cancella le notizie...
keiske
-
privacy non riesco a starti dietro
scusatemi
io faccio una query di selezione x tirare fuori dei risultati
e cosi facendo visualizzo a video cio che ho nella tabella
poi ho un tasto che dovrebbe eliminare e href=delete_articolo.php
dove è il problema?Quando risolverò sto problema
comprerò delle paste
ciao da danny
-
Allora, ragioniamo con ordine... tu hai due pagine... in una selezioni un record dalla tabella a seconda di cosa viene passato all'url del browser come $id, ok?
Una cosa del tipo: pagina.php?id=22
Selezioni tutti i campi del record dove id = '22'
Ora, il tuo primo errore è che ad inizio pagina NON controlli se è stato effettivamente passato all'url un link con ?id=xx
Se non lo controlli quando parte la query ad id_categ viene assegnato il nulla e ti dice che la variabile è indefinita...
Il secondo errore è che cerchi di passare alla query direttamente la variabile $_GET['id'] invece di "filtrare" il valore e passarlo alla variabile $id
Entrambe queste cose le fai in cima con questa funzione:
if(isset($_GET['id'])) {
$id = mysql_real_escape_string($_GET['id']);
else
$id = "";Questa funzione dice: "Se esiste un valore in $_GET['id'], associa a $id il valore di $_GET['id'], ma prima aggiungi un carattere \ prima di ogni carattere potenzialmente pericoloso"
Adesso ti trovi che hai una variabile $id che esiste e che ha un valore se è stato passato un valore nell'url del browser, mentre è uguale a "" se non è stato passato nulla...
Adesso possiamo fare la query al database per agire sul record che è associato al tuo $id
$query="SELECT * FROM Articoli WHERE id_categ = '$id'";
Seleziona tutti i campi dalla tabella articoli per il record dove id_categ è uguale a $id... $id va messo tra apici singoli... tutta la query tra apici doppi.
Adesso lanci la query
$risultato=mysql_query($query);Adesso analizzi il risultato della query e decidi che fare...
Allora, nel tuo codice succede che dopo aver lanciato la query scrivi che se non c'è un $risultato lanci un die();
Scusa ma se non c'è un risultato significa solo che non esiste nessun id_categ con l'id passato al browser, mica che c'è un errore di mysql.
Poi basta. Col risultato della query non fai nulla per ora, salvo poi verso la fine ciclare intorno con un while e stampare tutti i dettagli dell'articolo... e va bene
Quindi per chiudere questa pagina bisogna sapere cosa vuoi fare se il $risultato non c'è... ovviamente non lanciare un die() ma magari ricarichi la pagina senza valori e memorizzi dentro una varabile un messaggio di avvertimento...
if(!$risultato) {
{
header("Location: altra_pagina.php");
exit();
}In questo modo se uno prova a caricare la pagina che dovrebbe mostrare un articolo senza però passare all'url l'id valida di un articolo, torni in automatico alla pagina prima
E con questa pagina i conti dovrebbero essere saldati...
-
La pagina del delete, la copi pari pari così intanto, senza quel doppio richiamo di funzioni che non ha molto senso:
<?php
//controllo se è statpo passato un id al browser e se no setto $id=""
if(isset($_GET['id']))
$id=mysql_real_escape_string($_GET['id']);
else
$id = "";//richiamo il file di configurazione
require 'Config.php';
//richiamo il file di connessione
require 'Connect.php';//preparo la query di eliminazione
$query="DELETE FROM Articoli WHERE id_articolo='$id'";
//invio query
$result = mysql_query($query)
or die(mysql_error());
//controllo se ci sono risultati. Se non ce ne sono torno alla pagina prima
if(mysql_num_rows($result) == 0)
{
header("Location: altra_pagina.php");
exit();
}
else
{
$messaggio=urlencode("Articolo eliminato");
header('location:'.'../app_eye_articolo.php'.'?msg='.$messaggio);
exit;
//chiudo la connessione
mysql_close();
}
?>
-
non so come ringraziarvi
non lo facevo apposta
solo che in altri script avevo usati
quel tipo di codi e andava bene
comunque ho imparato, prima effettuare il controllo
comunque il codice, va bene, se foste i caserta vi offrirei un caffèah, volevo chiedervi
a questa parte di codiceheader('location:'.'../app_eye_articolo.php');
come faccio a passargli l'id_categ
perchè quando faccio elimina gli articolo scompaiono, perche
perdono l'id_categciao e grazie di nuovo da danny1975
-
Cosa vuoi fare lì? Passare alla pagina app_eye_articolo.php la variabile $messaggio per poi visualizzarlo in quell pagina e avvertire dell'avvenuta cancellazione?
keiske
-
no! no!
allora tutto comincia cosi
ho una pagina dove ci sono delle categorie
clicco sulla categ e si apre la pagine eye_articoli.php, in base all'id_categ
che gli ho passatolocalhost/studio/sito_gennaro/gestione/app_eye_articolo.php?id=78
poi quando elimino un articolo
nella pagina delete_articoli.php, ho la location che richiama la pagina
la pagina eye_articoli.php
ma non visualizza + gli articoli xrchè perde l'id_categ
infatti la pagina si presenta cosilocalhost/studio/sito_gennaro/gestione/app_eye_articolo.php?
ciao e grazie
-
Scusa, perchè devi per forza tornare a quella pagina? Dopo il delete di un articolo, torna alla prima dove puoi scegliere le categorie...
keiske