record non trovato

salve, ho questo codice,

però funziona cosi e cosi.

Non mi da nessun errore ma mi da un

Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in D:\xampp\htdocs\community\news\edit.php on line 30
Record non trovato

Ecco il codice:

<?php
require_once(dirname(__FILE__) . '/../include.php');

if($_POST)
{
$title = $_POST["title"];
$author = $_POST["autore"];
$news = $_POST["news"];
$id = $_GET["id"];

if ($title == "")
{
$error = "Non Hai inserito il titolo";
}
elseif($author =="")
{
$error = "Non Hai inserito l'autore";
}elseif($news =="")
{
$error = "Non Hai inserito la notizia";
}else
{
$query = "UPDATE news SET title='$title', news='$news' , author='$author' WHERE id = $id";
$result = mysql_query($query);
$error =  "News salvata.";
}
}
$query = "SELECT title, news , author FROM news WHERE id = $id";
$result = mysql_query($query);


//ECCO QUI


if (mysql_num_rows($result) == 0) { echo "Record non trovato"; }
else
{

while($r=mysql_fetch_array($result))
{   
/* Questo inizializza i dati di ogni riga come variabile, per rendere semplice la visualizzazione */
$title=$r["title"];
$news=$r["news"];
$autore=$r["author"];
/* Ora visualizziamo la form per le modifiche */
echo "".$error."";
    echo "<form name=\"edit_process.php\" method=\"post\" action=\"edit.php?id=$_GET[id]\">
  <p>Title :
    <input type=\"text\" name=\"title\" value=\"$title\">
  </p>
    <p>Autore :
    <input type=\"text\" name=\"autore\" value=\"$autore\">
  </p>

  <p>News :</p>
  <p>
    <textarea name=\"news\" cols=\"40\" rows=\"6\">$news</textarea>
  </p>
  <p>
    <input type=\"submit\" name=\"Submit\" value=\"Save\">
  </p>
</form>";
}

}
mysql_close($db);
?>

Mi dite cose c'è di sbagliato?.

grazie

inviato 7 anni fa
luik
luik
1
X 0 X

HA! ecco . funziona solo se passo un record che non esiste,

ma come faccio ad dirgli se per caso gli passo un coso cosi:

http://localhost/community/news/edit.php?id=

Senza record?

grazie.

risposto 7 anni fa
luik
luik
1
X 0 X

Alla sequenza degli IF che si trova in testa allo script dovresti aggiungere un controllo che verifica se $id è stato passato con l'URL:

if(empty($id)) {
$error = "ID non specificato";
}
elseif ...

 :bye:

risposto 7 anni fa
Gianni Tomasicchio
X 0 X

grazie risolto cosi:

<?php
require_once(dirname(__FILE__) . '/../include.php');

if($_POST)
{
$title = $_POST["title"];
$author = $_POST["autore"];
$news = $_POST["news"];
$id = $_GET["id"];
if($title == "")
{
$error = "Non Hai inserito il titolo";
}
elseif($author =="")
{
$error = "Non Hai inserito l'autore";
}elseif($news =="")
{
$error = "Non Hai inserito la notizia";
}else
{
$query = "UPDATE news SET title='$title', news='$news' , author='$author' WHERE id = $id";
$result = mysql_query($query);
$error =  "News salvata.";
}
}
$query = "SELECT title, news , author FROM news WHERE id = $id";
$result = mysql_query($query);
if(empty($id)) {
echo  "ID non specificato";
}
elseif (mysql_num_rows($result) == 0) { echo "Record non trovato"; }
else
{

while($r=mysql_fetch_array($result))
{   
/* Questo inizializza i dati di ogni riga come variabile, per rendere semplice la visualizzazione */
$title=$r["title"];
$news=$r["news"];
$autore=$r["author"];
/* Ora visualizziamo la form per le modifiche */
echo "".$error."";
    echo "<form name=\"edit_process.php\" method=\"post\" action=\"edit.php?id=$_GET[id]\">
  <p>Title :
    <input type=\"text\" name=\"title\" value=\"$title\">
  </p>
    <p>Autore :
    <input type=\"text\" name=\"autore\" value=\"$autore\">
  </p>

  <p>News :</p>
  <p>
    <textarea name=\"news\" cols=\"40\" rows=\"6\">$news</textarea>
  </p>
  <p>
    <input type=\"submit\" name=\"Submit\" value=\"Save\">
  </p>
</form>";
}

}
mysql_close($db);
?>
risposto 7 anni fa
luik
luik
1
X 0 X

ancora una cosa poi non vi do noia.....

se io passo un coso cosi: http://localhost/community/news/edit.php?id=%

mettendo che id è campo numerico autoincrementato,

come posso fare ad non saltare fuori l'errore che ho postato prima.?

grazie.

risposto 7 anni fa
luik
luik
1
X 0 X

Per prima cosa il controllo sull'ID devi farlo prima di utilizzare tale variabile nelle query.

Inoltre, supponendo che $id sia sempre maggiore di zero, puoi cambiare

$id = $_GET["id"];

in

$id = (int)$_GET["id"];

In questo modo $id sarà convertito in un numero intero e se non era un numero intero allora sarà convertito in zero.

Ma se $id = 0 allora scatterà il controllo if(empty(...

 :bye:

risposto 7 anni fa
Gianni Tomasicchio
X 0 X

Per prima cosa il controllo sull'ID devi farlo prima di utilizzare tale variabile nelle query.

Inoltre, supponendo che $id sia sempre maggiore di zero, puoi cambiare

$id = $_GET["id"];

in

$id = (int)$_GET["id"];

In questo modo $id sarà convertito in un numero intero e se non era un numero intero allora sarà convertito in zero.

Ma se $id = 0 allora scatterà il controllo if(empty(...

 :bye:

grazie mille per la spiegazione , ora funziona tutto regolare...

grazie.

risposto 7 anni fa
luik
luik
1
X 0 X
Effettua l'accesso o registrati per rispondere a questa domanda