PDA

View Full Version : [php/sql]


$te
26-04-2008, 11:19
premetto che sono abb ignorante in campo php, volevo uno script per eliminare un dato in una tabella sql:

<?php

$report = mysql_query("
SELECT *
FROM $name

");

while ($row = mysql_fetch_row($report)) {

echo'
<b>Link:</b><br />
<a href="'.$row[1].'">
'.$row[2].'
</a>
';

$descri = $row[2];
echo'
<form action="include/delete.php" method="post">
<input type="submit" name="$descri" value="delete">
</form>



<br /><br />
';

};

?>


delete.php:

<?php


$id = $_POST["$descri"];

$risultato = mysql_query("
DELETE * FROM $name WHERE '$id' = 'descrizione'


")
or die("Query non valida: " . mysql_error());

?>

il problema é che non riesco ad "inviare" quando pigio il pulsante "delete", il dato descrizione, per poi appunto eliminarlo.

Come faccio? in generale anche, come faccio con un form submit ad inviare un dato?

grazie

kk3z
26-04-2008, 14:53
$descri = $row[2];
echo'
<form action="include/delete.php" method="post">
<input type="submit" name="$descri" value="delete">
</form>

Allora:

1) Usando le virgolette singole ('), le variabili non vengono sostituite, mentre usando le virgolette doppie (") si:
$variabile = "ciao";
echo '$variabile'; //Output: $variabile
echo "$variabile"; //Output: ciao

2) I form non funzionano così. Il valore della variabile lo devi mettere in value, non in name. Prova con

echo "<input type='submit' value='delete'>
<input type='hidden' name='descrizione' value='$descri'>";

Quindi nel file delete.php
$id = $_POST["descrizione"];

$risultato = mysql_query("
DELETE * FROM $name WHERE descrizione = '$id';

$te
26-04-2008, 17:46
ma non funziona se invece delle doppie virgolette metto le virgolette nell'input:

echo "<input type='submit' value='delete'>
<input type='hidden' name='descrizione' value='$descri'>";

se faccio cosi:

$id = mysql_query("
SELECT id
FROM $name
");
echo' <td>
<form action="include/delete.php" method="post">
<input type="submit" value="delete">
<input type="hidden" name="id" value='.$id.'>
</form>

poi in delte.php


$id = $_POST["id"];

$risultato = mysql_query("
DELETE * FROM $name WHERE id = '$id'
")
or die("Query non valida: " . mysql_error());

poi mi da questo errore: Query non valida: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '* FROM ste WHERE id = 'Resource'' at line 1

kk3z
27-04-2008, 22:44
Le query DELETE FROM non funzionano così:
DELETE FROM $name WHERE id = '$id'

$te
27-04-2008, 23:28
hai ragione!!

ora pero ho un altro problema, perché io selezionavo tramite id, ma l'id viene stampato cosi: Resource id #12, poi quando faccio delete from $name where id = '$id', $id mi da solo resource, come mai?
ecco il codice:

$id = mysql_query("
SELECT id
FROM $name
");
echo' <td>
<form action="include/delete.php" method="post">
<input type="submit" value="delete">
<input type="hidden" name="id" value='.$id.'>
</form>';

<?php

$id = $_POST["id"];

echo .$id.; qua ho printato e vedo ke appunto mi da resource, perché se no la pag non mi da errori

$risultato = mysql_query("
DELETE FROM $name WHERE id = '$id'
")
or die("Query non valida: " . mysql_error());


?>

kk3z
28-04-2008, 09:44
mysql_query restituisce una "risorsa" che tu poi devi "fetchare" con mysql_fetch_assoc:
$res = mysql_query("
SELECT id
FROM $name
");
$row = mysql_fetch_assoc($res);
$id = $row['id'];

$te
28-04-2008, 11:14
wow! grazie mille!!! stavo impazzendo:P

$te
30-04-2008, 22:54
mi é sorto un problema che ho notato solo ora:

il codice stampa piu link con un relativo pulsante per poter eliminare il link, es:

www.esempio1.com
"delete"

www.esempio2.com
"delete"

ecc.

ad ogni delete dovrebbe associarsi l'id del link nella tabella sql, solo che l'id resta il primo associato!! cioé non si "rinnova", anche perché dovrei fare un array!

il codice completo:

<?php

$report = mysql_query("
SELECT *
FROM $name

");

echo ' <table width="100%" valign="top">';

$a = 0;

$a = mysql_num_rows($report);

$b = 0;

while ($row = mysql_fetch_row($report)) {

if($b == 2) $b = 0;

if($a > 5)
{
$b++;

}

if($b != 2) echo'<tr>';


echo'<td>
<b>Link:</b>
<a href="'.$row[1].'" target="_blank">
'.$row[2].'
</a>
</td>';

$res = mysql_query("
SELECT id
FROM $name where
");
$row = mysql_fetch_assoc($res);
$id= $row['id'];
echo' <td>
<form action="account/include/delete.php" method="post">
<input type="submit" value="delete" >
<input type="hidden" size="30" name="id" value='.$id.'>
</form>';

echo'</td>';

if($b != 1) echo'</tr>';


};

echo'</table>' ;
?>


come posso fare??? grazie!!

$te
01-05-2008, 18:57
nessuna idea?

$te
01-05-2008, 19:02
risolto scusate:P