Pagina 2 di 3 primaprima 1 2 3 ultimoultimo
Visualizzazione dei risultati da 11 a 20 su 21

Discussione: Gestione amicizie

Hybrid View

  1. #1
    Utente di HTML.it L'avatar di boots
    Registrato dal
    Oct 2012
    Messaggi
    1,626
    Io ti sconsiglierei di fare un unico form, poi diventa difficile capire quale bottone si è cliccati.
    Volendo restare sulle form, ne farei una per ogni riga

    Codice PHP:
    echo '<td><form action="..." method="POST">';
     echo 
    "<input type=\"hidden\" name=\"user\" value=\"{$row1['id']}\">";
    if(!isset(
    $amicizie[$row1['user']])) { 
         echo 
    "<input type=\"submit\" name=\"richiedi\" value=\"Richiedi amicizia\">";
    }else {
       if(
    $amicizie[$row1['user']] == 1) {         
            echo 
    "<input type=\"submit\" name=\"rimuovi\" value=\"Rimuovi amicizia\">"
       } else {           
           echo 
    "<input type=\"submit\" name=\"attesa\" value=\"Attesa amicizia\">";
       }
    }  
    echo 
    '</form></td>'
    in questo caso devi vedere quale bottone ti arriva

    Codice PHP:
    $user_target $_POST['user']; 
    if(isset(
    $_POST['richiedi'])){
        
    // Richiesta amicizia
    }
    if(isset(
    $_POST['rimuovi'])){
        
    // Rimuovi amicizia
    }
    if(isset(
    $_POST['attesa'])){
        
    // Attesa amicizia

    Ultima modifica di boots; 27-12-2013 a 10:45

  2. #2
    Quote Originariamente inviata da boots Visualizza il messaggio
    Io ti sconsiglierei di fare un unico form, poi diventa difficile capire quale bottone si è cliccati.
    Volendo restare sulle form, ne farei una per ogni riga

    Codice PHP:
    echo '<td><form action="..." method="POST">';
     echo 
    "<input type=\"hidden\" name=\"user\" value=\"{$row1['id']}\">";
    if(!isset(
    $amicizie[$row1['user']])) { 
         echo 
    "<input type=\"submit\" name=\"richiedi\" value=\"Richiedi amicizia\">";
    }else {
       if(
    $amicizie[$row1['user']] == 1) {         
            echo 
    "<input type=\"submit\" name=\"rimuovi\" value=\"Rimuovi amicizia\">"
       } else {           
           echo 
    "<input type=\"submit\" name=\"attesa\" value=\"Attesa amicizia\">";
       }
    }  
    echo 
    '</form></td>'
    in questo caso devi vedere quale bottone ti arriva

    Codice PHP:
    $user_target $_POST['user']; 
    if(isset(
    $_POST['richiedi'])){
        
    // Richiesta amicizia
    }
    if(isset(
    $_POST['rimuovi'])){
        
    // Rimuovi amicizia
    }
    if(isset(
    $_POST['attesa'])){
        
    // Attesa amicizia

    Grazie, provo.. gentilissimo

  3. #3
    Ho probabilmente (anzi sicuramente) sbagliato qualcosa perchè non va..
    Quando lo provo sul browser viene stampato l'errore Notice: Use of undefined constant user - assumed 'user'.Quando clicco su un bottone "Richiedi amicizia", dovrebbe stampare Richiedi amicizia a.. e invece nulla..
    Codice PHP:
    <table>  
       <tr>
          <td>#</td>
          <td>Nome</td>         
          <td>Username</td>
          <td>Azione</td> 
       </tr>
       
       <?php
          $conn 
    dbConnect();
          
    $utente $_SESSION['username'];
          
          
    $query "SELECT * FROM amicizie WHERE richiedente = '$utente' OR accettante = '$utente'";
          
    $result mysql_query($query) or die(mysql_error());  
          
    $amicizie = array();
          while(
    $row mysql_fetch_assoc($result)) {
             if(
    $row['richiedente'] == $utente) {
                
    $key $row['accettante'];
             }
             else {
                
    $key $row['richiedente'];
             } 
             
    $amicizie[$key] = $row['stato'];
          }  
                              
          
    $query1 "SELECT id, nome, user FROM users WHERE user<>'" .$utente"'";
          
    $result1 mysql_query($query1);
          
          while(
    $row1 mysql_fetch_array($result1)) {
               echo 
    "<tr>
                         <td>
    $row1[id]</td>
                         <td>
    $row1[nome]</td>  
                         <td>
    $row1[user]</td>";
              echo 
    "<form action=\"\" method=\"POST\">";
              echo 
    "<input type=\"hidden\" name=\".$row1[user].\" value=\"" .$row1['id']. "\">";
              if(!isset(
    $amicizie[$row1['user']])) {
                 echo 
    "<td><input type=\"submit\" name=\"richiedi\" value=\"Richiedi amicizia\"></td>";
              }
              else {
                 if(
    $amicizie[$row1['user']] == 1) {   
                    echo 
    "<td><input type=\"submit\" name=\"rimuovi\" value=\"Rimuovi amicizia\"></td>";
                 }
                 else {             
                    echo 
    "<td><input type=\"submit\" name=\"attesa\" value=\"In attesa\"></td>";
                 }
              }
              echo 
    '</form></tr>';                                  
          }
     
          
    $name $row1[user];
          if(isset(
    $_POST[$name])) {
             
    $user_target $_POST[$name]; 
             if(isset(
    $_POST['richiedi-submit'])){
                 
    // Richiesta amicizia
                
    echo "<p>Richiedi amicizia a ".$user_target."</p>";
             }
             if(isset(
    $_POST['rimuovi-submit'])){
                 
    // Rimuovi amicizia
                 
    echo "<p>Rimuovi amicizia a ".$user_target."</p>";
             }
             if(isset(
    $_POST['attesa-submit'])){
                 
    // Attesa amicizia
                 
    echo "<p>In attesa di amicizia a ".$user_target."</p>";
             }                                 
          }
       
    ?>                           
    </table>

  4. #4
    Utente di HTML.it L'avatar di boots
    Registrato dal
    Oct 2012
    Messaggi
    1,626
    Di solito quel errore (o meglio quella notice)accade quando usi una variabile senza metter i $ prima.
    Ricordati, quando usi gli array associativi, di mettere la chiave tra gli apici (se è una stringa):
    $_POST['user'] non $_POST[user]
    Ultima modifica di boots; 28-12-2013 a 10:30

  5. #5
    Quote Originariamente inviata da boots Visualizza il messaggio
    Di solito quel errore (o meglio quella notice)accade quando usi una variabile senza metter i $ prima.
    Ricordati, quando usi gli array associativi, di mettere la chiave tra gli apici (se è una stringa):
    $_POST['user'] non $_POST[user]
    Ho messo gli apici singoli a user e l'errore non lo da più ma comunque non entra negli if perchè non stampa nulla..

  6. #6
    Utente di HTML.it L'avatar di boots
    Registrato dal
    Oct 2012
    Messaggi
    1,626
    echo "<td><input type=\"submit\" name=\"richiedi\" value=\"Richiedi amicizia\">

    ...

    if(isset($_POST['richiedi-submit'])){
    // Richiesta amicizia
    echo "<p>Richiedi amicizia a ".$user_target."</p>";
    }

    Se chiami il submit "richiedi" perchè fai il controllo con "richiedi-submit" ? devi controllare $_POST['richiedi']
    Stesso discorso per gli atri bottoni

  7. #7
    Ok era un errore del cavolo. Non mi è chiara una cosa: come gestisco però il fatto dell'associare ad ogni utente il suo bottone? Quando Clicco su un bottone "Richiedi amicizia" come fa a capire su quale ho cliccato?
    Per questo motivo ho aggiunto nell'input hidden il name=$row1[user] e poi questo $_POST lo recupero nel controllo sotto con $name = $row1['user']; if(isset($_POST[$name])).
    Ma non va e allora non mi è chiaro il ragionamento che c'è sotto..

    Codice PHP:
    <?php
      $conn 
    dbConnect();
      
    $utente $_SESSION['username'];
      
      
    $query "SELECT * FROM amicizie WHERE richiedente = '$utente' OR accettante = '$utente'";
      
    $result mysql_query($query) or die(mysql_error());  
      
    $amicizie = array();
      while(
    $row mysql_fetch_assoc($result)) {
         if(
    $row['richiedente'] == $utente) {
            
    $key $row['accettante'];
         }
         else {
            
    $key $row['richiedente'];
         } 
         
    $amicizie[$key] = $row['stato'];
      }  
                          
      
    $query1 "SELECT id, user, nome FROM users WHERE user<>'" .$utente"'";
      
    $result1 mysql_query($query1);
      
      while(
    $row1 mysql_fetch_array($result1)) {
           echo 
    "<tr>
                     <td>
    $row1[id]</td>
                     <td>
    $row1[nome]</td> 
                     <td>
    $row1[user]</td>";
          echo 
    "<form action=\"\" method=\"POST\">";
          echo 
    "<input type=\"hidden\" name=\"".$row1[user]."\" value=\"" .$row1['id']. "\">";
          if(!isset(
    $amicizie[$row1['user']])) {
             echo 
    "<td><input type=\"submit\" name=\"richiedi\" value=\"Richiedi amicizia\"></td>";
          }
          else {
             if(
    $amicizie[$row1['user']] == 1) {   
                echo 
    "<td><input type=\"submit\" name=\"rimuovi\" value=\"Rimuovi amicizia\"></td>";
             }
             else {             
                echo 
    "<td><input type=\"submit\" name=\"attesa\" value=\"In attesa\"></td>";
             }
          }
          echo 
    '</form></tr>';                                     
      }


      
    $name $row1['user'];
      if(isset(
    $_POST[$name])) {
         
    $user_target $_POST[$name]; 
         if(isset(
    $_POST['richiedi'])){
            
    //richiedo l'amicizia
            
    echo "<p>Richiedi amicizia a ".$user_target."</p>";
         }
         if(isset(
    $_POST['rimuovi'])){
            
    //rimuovo l'amicizia
            
    echo "<p>Rimuovi amicizia a ".$user_target."</p>";
         }
         if(isset(
    $_POST['attesa'])){
            
    //in atttesa di conferma/rifiuto
            
    echo "<p>In attesa di amicizia a </p>";
         }                                 
      } 
    ?>

  8. #8
    Utente di HTML.it L'avatar di boots
    Registrato dal
    Oct 2012
    Messaggi
    1,626
    Premetto che non capisco cosa vuoi fare (lato codice)...cmq dovrebbe stamparti una volta cliccato il bottone "<p> ... </p>".
    Verifica che i dati che metti nella form son giusti...ad sempio vedo
    echo "<input type=\"hidden\" name=\"".$row1[user]."\" value=\"" .$row1['id']. "\">";
    Sicuro che come name mette $row1[user]? che hai scritto senza apici

  9. #9
    Quote Originariamente inviata da boots Visualizza il messaggio
    Premetto che non capisco cosa vuoi fare (lato codice)...cmq dovrebbe stamparti una volta cliccato il bottone "<p> ... </p>".
    Verifica che i dati che metti nella form son giusti...ad sempio vedo
    echo "<input type=\"hidden\" name=\"".$row1[user]."\" value=\"" .$row1['id']. "\">";
    Sicuro che come name mette $row1[user]? che hai scritto senza apici
    Quello che volevo facesse scrivendo quel codice è:
    - echo "<input type=\"hidden\" name=\"".$row1['user']."\" value=\"" .$row1['id']. "\">";
    come name gli ho dato l'username preso dal database, in modo tale che sia univoco per ogni utente
    - if(isset($_POST['richiedi-submit']))
    quando vado a controllare se l'utente ha cliccato qualcosa, guardo quale bottone associato all'utente ha cliccato

    Grazie infinite per la tua pazienza

  10. #10
    Utente di HTML.it L'avatar di boots
    Registrato dal
    Oct 2012
    Messaggi
    1,626
    però non ho capito perchè mettere $row1['user'] come nome del input: Se fai un form per ogni riga, basta che metti un nome fisso per ogni form.
    Però forse dipende dal fatto che fai quel controllo ( if(isset($_POST[$name])) ) dentro il ciclo while (cosa che non capisco visto che ti arriva una solo "username").

    Io avrei fatto due pagine:
    1. Qualla che hai postato (senza il controllo del POST), dove i form portano alla pagina 2
    2. Nella pagina fai le operazioni in base al submit premuto ed allo username che passi (con il name fisso, come quello che avevo postato prima). Dopo fai il redirect sulla pagina 1

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2026 vBulletin Solutions, Inc. All rights reserved.