Cancellare amicizia

sappe

Nuovo Utente
27 Mar 2011
27
0
0
Ho dei problemi con la cancellazione delle amicizie. Cos'ho fatto? Per sistemare la visualizzazione delle amicizie l'ho divisa concettualmente in due parti (fa schifo da vedere lo so, ma funziona): amicizie che l'utente connesso ha richiesto e le amicizie che l'utente connesso ha ricevuto.
PHP:
<?php 
include ("connessione.inc");
$nickname = $_SESSION['login'];
$sql="SELECT IDutente FROM utenti WHERE Nickname = '$nickname'";
$res=mysql_query($sql, $conn) or die("Error!".mysql_error());
while ($records = mysql_fetch_assoc($res)){
$IDutente=$records['IDutente'];
echo "<h3>Friends to whom you asked the friendship:</h3>";
$sql1="SELECT nickname FROM utenti WHERE IDutente = ANY (SELECT Receiver AS amico FROM amicizie WHERE (Sender = '$IDutente') AND (Friend = '1'))";
$res1 = mysql_query($sql1, $conn) or die("Error!".mysql_error());
while ($records = mysql_fetch_assoc($res1)){
$friendA=$records['nickname'];
   echo <<<MESS
</br>$friendA</br>
<a href="deleteFriend.php?friendA=$friendA">Delete Friend</a><hr />
</br>
MESS;
}

echo "<h3>Friends who have called for the friendship:</h3>";
$sql2="SELECT nickname FROM utenti WHERE IDutente = ANY (SELECT Sender AS amico FROM amicizie WHERE (Receiver = '$IDutente') AND (Friend = '1'))";
$res2 = mysql_query($sql2, $conn) or die("Error!".mysql_error());
while ($records = mysql_fetch_assoc($res2)){
$friendB=$records['nickname'];
   echo <<<MESS
</br>$friendB</br>
<a href="deleteFriend.php?friendB=$friendB">Delete Friend</a><hr />
MESS;
}
}
?>
tutto si stampa e tutto va bene.
Nel momento in cui mi sono ritrovata a non saper bene gestire questa situazione, difatti mi sa che sto facendo una confusione tremenda nelle query:
PHP:
<?php 
include ("connessione.inc");
$nickname = $_SESSION['login'];
$sql3="SELECT IDutente FROM utenti WHERE Nickname = '$nickname'";
$res3=mysql_query($sql3, $conn) or die("Error!".mysql_error());
while ($records = mysql_fetch_assoc($res3)){
$IDutente=$records['IDutente'];
}
$sql= "SELECT * FROM amicizie WHERE (Sender = '$IDutente') or (Receiver = '$IDutente')";
$res=mysql_query($sql,$conn)or die("Error!".mysql_error());
while ($records=mysql_fetch_assoc($res)) {
   $username = $_SESSION['login'];
	 }
$sql1="DELETE FROM amicizie WHERE (Receiver='$IDutente' or Sender='$IDutente') AND (Receiver='$friendA' or Sender='$friendA') OR (Receiver='$friendB' or Sender='$friendB')";
$res1=mysql_query($sql1,$conn)or die("Error!".mysql_error());
while($records=mysql_fetch_assoc($res1)){
$friendA=$_POST["friendA"];
$friendB=$_POST["friendB"];
}
   echo "You and $friendA$friendB are no longer friend.";
	 echo "Come back to <a href=friend.php>friend</a> page.";

?>
mi restituisce una ovviamente lunghina lista di errori:
PHP:
Notice: Undefined variable: friendA in C:\Program Files\EasyPHP-5.3.2\www\Sito\deleteFriend.php on line 75

Notice: Undefined variable: friendA in C:\Program Files\EasyPHP-5.3.2\www\Sito\deleteFriend.php on line 75

Notice: Undefined variable: friendB in C:\Program Files\EasyPHP-5.3.2\www\Sito\deleteFriend.php on line 75

Notice: Undefined variable: friendB in C:\Program Files\EasyPHP-5.3.2\www\Sito\deleteFriend.php on line 75

Warning: mysql_fetch_assoc() expects parameter 1 to be resource, boolean given in C:\Program Files\EasyPHP-5.3.2\www\Sito\deleteFriend.php on line 77

Notice: Undefined variable: friendA in C:\Program Files\EasyPHP-5.3.2\www\Sito\deleteFriend.php on line 81

Notice: Undefined variable: friendB in C:\Program Files\EasyPHP-5.3.2\www\Sito\deleteFriend.php on line 81
You and are no longer friend.Come back to friend page.
non so come risolvere, mi sa che sto sbagliando anche la logica... Sono fusa e non ci sto capendo più niente! Mi aiutate per favore? :(
Grazie per la pazienza!!
 
Ho fatto dei cambiamenti

Siccome non mi ritrovavo più nel ragionamento che avevo fatto ho scisso la parte della cancellazione in due parti, esattamente come logicamente avevo scisso le amicizie ricevute da un utente e quelle che l'utente connesso invia. Non funzionano, proprio non agiscono sul database (non cancellano l'amicizia) anche se non danno errori e restituiscono la stringa giusta. Ricapitolando:
Pagina dove stampo la lista degli amici e che contiene il link che dà l'input per cancellare l'amicizia:
PHP:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<?php 
session_start();
?>
<HTML>
<HEAD>
<TITLE>Your Friends</TITLE><link href="style.css" rel="stylesheet" type="text/css">
<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
</HEAD>
<BODY>
<div align="center">
  <TABLE class="maintable" CELLPADDING="0" CELLSPACING="0">
    <TR> 
      <TD COLSPAN=3> <IMG SRC="images/index_01.gif" WIDTH=727 HEIGHT=240 ALT=""></TD>
    </TR>
    <TR> 
      <TD ROWSPAN=2 class="navbg" valign="top"><div id="nav">
          <p><span class="h2">Menu</span> <a href="index.php">Home</a> <a href="rules.php">Rules</a> 
            <a href="gallery.php">Gallery</a> <a href="upload.php">Upload</a> <a href="search.php">Search</a>
            <span class="endbox"></span> </p>
						
         
					
<?php 
if ((isset($_SESSION['login']))&&((isset($_SESSION['password'])))){
   echo <<<print
	 
	 <p><span class="h2">Logout</span> <a href="profile.php">Your Profile</a> <a href="logout.php">Logout</a><span class="endbox"></span> </p>
         <p><span class="h2">Friendship</span> <a href="users.php">Search user</a> <a href="friend.php">My friends</a> <a href="request.php">Friends request</a> <span class="endbox"></span> </p>
print;
}
else {
   echo <<<print
	 
	 <p><span class="h2">Sign in</span> <a href="create.html">Create account</a> <a href="login.htm">Login</a><span class="endbox"></span></p>
print;
}
 ?>
<?php 
include("connessione.inc");
if (isset($_SESSION['login'])) { 
    $login = $_SESSION['login']; 
$sqlA="SELECT Nickname FROM utenti WHERE Nickname = '$login' AND Admin = '1'";
$resA=mysql_query($sqlA,$conn)or die("Error!".mysql_error());
$lines=mysql_num_rows($resA);
if ($lines == 1){
 echo <<<print
	 
	 <p><span class="h2">Admin</span> <a href="admin.php">Administration</a><span class="endbox"></span></p>
print;
}
}
echo <<<print

 </p>
        </div></TD>
      <TD ROWSPAN=2 class="contentbg" valign="top"><div id="content">
print;
 ?>
          <h1>Friend page:</h1>
<h2 align="center">Your friends:</h2>
<?php 
include ("connessione.inc");
$nickname = $_SESSION['login'];
$sql="SELECT IDutente FROM utenti WHERE Nickname = '$nickname'";
$res=mysql_query($sql, $conn) or die("Error!".mysql_error());
while ($records = mysql_fetch_assoc($res)){
$IDutente=$records['IDutente'];
echo "<h3>Friends to whom you asked the friendship:</h3>";
$sql1="SELECT nickname FROM utenti WHERE IDutente = ANY (SELECT Receiver AS amico FROM amicizie WHERE (Sender = '$IDutente') AND (Friend = '1'))";
$res1 = mysql_query($sql1, $conn) or die("Error!".mysql_error());
while ($records = mysql_fetch_assoc($res1)){
$friendA=$records['nickname'];
   echo <<<MESS
</br>$friendA</br>
<a href="deleteFriendA.php?friendA=$friendA" onclick="return confirm('Do you really want to delete $friendA from your friends?')">Delete Friend</a><hr />
</br>
MESS;
}

echo "<h3>Friends who have called for the friendship:</h3>";
$sql2="SELECT nickname FROM utenti WHERE IDutente = ANY (SELECT Sender AS amico FROM amicizie WHERE (Receiver = '$IDutente') AND (Friend = '1'))";
$res2 = mysql_query($sql2, $conn) or die("Error!".mysql_error());
while ($records = mysql_fetch_assoc($res2)){
$friendB=$records['nickname'];
   echo <<<MESS
</br>$friendB</br>
<a href="deleteFriendB.php?friendB=$friendB" onclick="return confirm('Do you really want to delete $friendB from your friends?')">Delete Friend</a><hr />
MESS;
}
}
?>	
 </p>

				</p>

          </br>
					</br>
					</br>
					</br>
          <h1>©SketchMania</h1>
			<TD valign="top" class="spacer"></TD>
    </TR><TR> 
      <TD height="2" class="spacer2"></TD>
    </TR><TR> 
      <TD COLSPAN=3 class="creditsbg">
				<p>| Contact us <a href="http://yahoo.com/" target="_blank">sketchmania@yahoo.com</a> | </p></TD>
    </TR>
  </TABLE>
</div>
</BODY>
</HTML>
Pagina dove cancello l'amico A:
PHP:
<?php 
include ("connessione.inc");
$nickname = $_SESSION['login'];
$friendA=$_GET["friendA"];

$sql3="SELECT IDutente FROM utenti WHERE Nickname = '$nickname'";
$res3=mysql_query($sql3, $conn) or die("Error!".mysql_error());
while ($records = mysql_fetch_assoc($res3)){
$IDutente=$records['IDutente'];
}

 
$sql1="DELETE FROM amicizie WHERE (Sender='$IDutente') AND (Receiver='$friendA')";
$res1=mysql_query($sql1,$conn)or die("Error!".mysql_error());

   echo "You and $friendA are no longer friend.";
	 echo "</br>Come back to <a href=friend.php>friend</a> page.";

?>
Pagina dove cancello l'amico B:
PHP:
<?php 
include ("connessione.inc");
$nickname = $_SESSION['login'];
$friendB=$_GET["friendB"];

$sql3="SELECT IDutente FROM utenti WHERE Nickname = '$nickname'";
$res3=mysql_query($sql3, $conn) or die("Error!".mysql_error());
while ($records = mysql_fetch_assoc($res3)){
$IDutente=$records['IDutente'];
}

 
$sql1="DELETE FROM amicizie WHERE (Receiver='$IDutente') AND (Sender='$friendB')";
$res1=mysql_query($sql1,$conn)or die("Error!".mysql_error());

   echo "You and $friendB are no longer friend.";
	 echo "</br>Come back to <a href=friend.php>friend</a> page.";

?>	
 </p>
Perché non funziona? Sembra cancellarlo ma non succede niente nel database!
Grazie in anticipo dell'aiuto! :D
 
Stampa le query tipo:

PHP:
$sql1="DELETE FROM amicizie WHERE (Sender='$IDutente') AND (Receiver='$friendA')"; 
echo $sql1;
Stampa la cosa giusta, ovvero:
PHP:
DELETE FROM amicizie WHERE (Receiver='47') AND (Sender='liquirizia')
se controllo nel database infatti l'utente connesso è 47 colui che ha inviato l'amicizia è liquirizia, e non ci sono cose strane nel database come doppi o cose del genere... Non capisco :S
 
E se

Prova a fare

PHP:
$query="SELECT * FROM amicizie WHERE Receiver='47' AND Sender='liquirizia'";  
$query=mysql_query($query);
echo "NUMERO DI RIGHE: ".mysql_num_rows($query);

Se ti da 0 righe allora sbagli la query.
 
Ultima modifica:

Discussioni simili