- Home
- Categorie
- Coding e Sistemistica
- PHP
- errore in delete
-
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
-
@Privacy-Impresa said:
Scusa, perchè devi per forza tornare a quella pagina? Dopo il delete di un articolo, torna alla prima dove puoi scegliere le categorie...
keiske
come idea non è male
ma fare cio che ho appena detto è tropppo difficilecmq prendo in considerazione la tua idea
ciao
-
Non è che sia difficile... basta che ripassi la variabile in modalita url al redirect... quel valore ce l'hai ancora disponibile dentro $id...
header('location:'.'../app_eye_articolo.php'.'?msg='.$messaggio.'&id='.$id);
keiske
-
si ho fatto
header('location:'.'../app_eye_articolo.php?id='.$id);
ho eliminato il mess, tanto lo vede in tempo reale che l'articolo è stato eliminato
cmq facendo cosi mi da l'id_articolo e non l'id_categ
infatti la pag è sempre vuota
come mai?
-
E c'hai ragione... nella pagina del delete $id è dell'articolo, non della categoria...
Sai quale è il problema? E' che non sapendo bene la successione logica delle pagine... da dove uno viene, dove va, è anche difficile capire che dati estrarre... perchè tecnicamente potresti anche preparare una query al database da mettere in un'heade da includere in tutte le pagine, magari nel connect... così in ogni pagina certi valori ce li hai sempre... ovviamente la query che metti nell'header deve prendere di volta in volta i valori passati all'url...
keiske
-
come faccio a prendere l'id della categ
comunque lo prendo i eye_articoli.php
-
quando sei nella pagina per cancellare articoli non hai l'id della categoria... o meglio... come arrivi alla pagine del delete? Per forza dalla pagina dove hai visualizzato tutti gli articoli di una categoria? Se sì devi passare da quella pagina a quella del delete l'id della categoria... però a questo punto devi differenziare le variabili
$id = id_categ
$art = id_articoloI link cliccabili per andare alla pagina del delete saranno:
delete.php?id=10&art=20
poi cambi questo
if(isset($_GET['id']))
$id=mysql_real_escape_string($_GET['id']);
else
$id = "";in:
if(isset($_GET['id'] && $_GET['art')) {
$art=mysql_real_escape_string($_GET['art']);
$id=mysql_real_escape_string($_GET['id']);
} else {
$id = "";
$art="";
}E nella query sotto cambi $id in $art per cancellare l'articolo
In fondo a questo punto hai l'id della categoria stavolta salvato in $id e lo passi nel link del redirect
keiske
-
io lo sapevo che non portevo usare sempre $id
e dovevo differenziarlo
mannaggia la testa dura che ho
adesso mi tocca rivedere il codice
grazie tante privacy
contento di aver fatto amicizia
sei un fenomeno/a (booh)ti saluto
sto cacchio di $id mi ha fatto venire il mal di testapoi ti faccio sapere come è andata
ciao e notte da danny1975
-
Chiamami pure keiske
keiske