Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 16

Discussione: Ripetizione record

  1. #1

    Ripetizione record

    Ancora una volta ecco un incasinamento di query:

    codice:
    <table width="100%" border="0" bgcolor="#F2F2F2">
      <tr>
        <td>
    <?
    if ($ID_areesx=="") {
    $ID_areesx="2";
    }
    $query = "SELECT ID_areesx,Titolo_areesx FROM areesx WHERE ID_areesx = $ID_areesx";
    $result = mysql_query($query, $db);
    while ($rows = mysql_fetch_array($result)) {
    echo "[img]images/indice3.gif[/img] ".$rows["Titolo_areesx"]."";
    }
    ?>
    </td>
      </tr>
    </table>
    
    
    <?
    $query = "SELECT ID,Titolo,Descrizione,Testo,Data,Ora,Scadenza,Area,Link,Sottoarea,Sottoarea2 FROM notizie WHERE Area = $ID_areesx";
    $result = mysql_query($query, $db);
    while ($rows = mysql_fetch_array($result)) {
    $link = $rows["Link"];
    $area = $rows["Area"];
    $sottoarea = $rows["Sottoarea"];
    $sottoarea2 = $rows["Sottoarea2"];
    if ($link=="" AND $sottoarea=="" AND $sottoarea2=="") {
    echo "[img]images/indice2.gif[/img] <font size=2><a href=articolo.php?ID=".$rows["ID"].">".$rows["Titolo"]."</a></font>
    
    ";
    }
    if ($link!="" AND $sottoarea=="" AND $sottoarea2=="") {
    echo "[img]images/indice2.gif[/img] <font size=2>".$rows["Titolo"]."</font>
    
    ";
    }
    if ($sottoarea!="" AND $link=="" AND $sottoarea2=="") {
    
    $query2 = "SELECT ID,Titolo,Area,Link FROM sottoaree WHERE Area = $ID_areesx 	AND ID = $sottoarea";
    $result2 = mysql_query($query2, $db);
    while ($rows2 = mysql_fetch_array($result2)) {
    if ($rows2["Link"]=="") {
    echo "[img]images/indice2.gif[/img] <font size=2><a href=sottoarea.php?ID=".$rows2["ID"]."&ID1=".$ID_areesx.">".$rows2["Titolo"]."</a></font>
    
    ";
    } else {
    echo "[img]images/indice2.gif[/img] <font size=2>".$rows2["Titolo"]."</font>
    
    ";
    }
    }
    }
    }
    ?>
    L'ultima però mi ripete 2 volte i record, perché?

  2. #2
    provato con DISTINCT?

    Codice PHP:
    SELECT DISTINCT ... 
    ciao

  3. #3
    spero che il tuo problema si risolva con la risposta che hai ottenuto

    per le prossime volte cerca di essere un attimo più chiaro, esplicativo e conciso soprattutto nel codice che posti. tu lo conosci, l'hai studiato e probabilmetne scritto, noi lo vediamo per la prima volta senza conoscerne il contesto.

  4. #4
    Non va con DISTINCT

  5. #5
    Originariamente inviato da poeta1978
    Non va con DISTINCT
    Difatti era abbastanza chiaro. Non e' un problema di DISTINCT anche perche' punti ad un preciso id. Piu' probabile che finito il ciclo while della seconda query, ti rilanci al primo while e te ne esegua un'altra. bisognerebbe pero' leggere e capire tutto il giro dello script.


    Il silenzio è spesso la cosa migliore. Pensa ... è gratis.

  6. #6
    Vediamo se riesco a spiegare un pò il codice:

    codice:
    <table width="100%" border="0" bgcolor="#F2F2F2">
      <tr>
        <td>
    <?
    //Qui legge la variabile proveniente dalla pagina precedente
    if ($ID_areesx=="") {
    $ID_areesx="2";
    }
    //Avvia la prima query e in base alla variabile darà il titolo
    $query = "SELECT ID_areesx,Titolo_areesx FROM areesx WHERE ID_areesx = $ID_areesx";
    $result = mysql_query($query, $db);
    while ($rows = mysql_fetch_array($result)) {
    echo "[img]images/indice3.gif[/img] ".$rows["Titolo_areesx"]."";
    }
    ?>
    </td>
      </tr>
    </table>
    
    
    <?
    //Seconda query - sempre in base alla variabile
    $query = "SELECT  ID,Titolo,Descrizione,Testo,Data,Ora,Sca
    denza,Area,Link,Sottoarea,Sottoarea2 FROM notizie WHERE Area = $ID_areesx";
    $result = mysql_query($query, $db);
    while ($rows = mysql_fetch_array($result)) {
    $link = $rows["Link"];
    $area = $rows["Area"];
    $sottoarea = $rows["Sottoarea"];
    $sottoarea2 = $rows["Sottoarea2"];
    //Se i campi sono vuoti mi collega diretamente a articolo.php
    if ($link=="" AND $sottoarea=="" AND $sottoarea2=="") {
    echo "[img]images/indice2.gif[/img] <font size=2><a href=articolo.php?ID=".$rows["ID"].">".$rows["Titolo"]."</a></font>
    
    ";
    }
    //Se è indicato un link me lo crea
    if ($link!="" AND $sottoarea=="" AND $sottoarea2=="") {
    echo "[img]images/indice2.gif[/img] <font size=2>".$rows["Titolo"]."</font>
    
    ";
    }
    //Qui casca l'asino. Se è indicata una sottoarea fa una terza query, quindi il titolo lo legge da una nuova tabbella, ma lo ripete una seconda volta, mente io lo voglio una volta
    if ($sottoarea!="" AND $link=="" AND $sottoarea2=="") {
    
    $query2 = "SELECT ID,Titolo,Area,Link FROM sottoaree WHERE Area = $ID_areesx 	AND ID = $sottoarea";
    $result2 = mysql_query($query2, $db);
    while ($rows2 = mysql_fetch_array($result2)) {
    //Qui non ci sono problemi, va bene... credo
    if ($rows2["Link"]=="") {
    echo "[img]images/indice2.gif[/img] <font size=2><a href=sottoarea.php?ID=".$rows2["ID"]."&ID1=".$ID_areesx.">".$rows2["Titolo"]."</a></font>
    
    ";
    } else {
    echo "[img]images/indice2.gif[/img] <font size=2>".$rows2["Titolo"]."</font>
    
    ";
    }
    }
    }
    }
    ?>

  7. #7
    codice:
    <?
    	//Qui legge la variabile proveniente dalla pagina precedente
    	if ($ID_areesx=="") 
    	{
    		$ID_areesx="2";
    	}
    	//Avvia la prima query e in base alla variabile darà il titolo
    	$query = "SELECT ID_areesx,Titolo_areesx FROM areesx WHERE ID_areesx = $ID_areesx";
    	$result = mysql_query($query, $db);
    	while ($rows = mysql_fetch_array($result)) 
    		echo "[img]images/indice3.gif[/img] ".$rows["Titolo_areesx"]."";
    	?>
    	</td>
    	  </tr>
    	</table>
    	
    
    	<?
    	//Seconda query - sempre in base alla variabile
    	$query = "SELECT   ID,Titolo,Descrizione,Testo,Data,Ora,Sca
    	
    	denza,Area,Link,Sottoarea,Sottoarea2 FROM notizie WHERE Area = $ID_areesx";
    	$result = mysql_query($query, $db);
    	while ($rows = mysql_fetch_array($result)) 
    	{
    		$link = $rows["Link"];
    		$area = $rows["Area"];
    		$sottoarea = $rows["Sottoarea"];
    		$sottoarea2 = $rows["Sottoarea2"];
    		//Se i campi sono vuoti mi collega diretamente a articolo.php
    		if ($link=="" AND $sottoarea=="" AND $sottoarea2=="") 
    			echo "[img]images/indice2.gif[/img] <font size=2><a href=articolo.php?ID=".$rows["ID"].">".$rows["Titolo"]."</a></font>
    
    ";
    
    		//Se è indicato un link me lo crea
    		if ($link!="" AND $sottoarea=="" AND $sottoarea2=="")
    			echo "[img]images/indice2.gif[/img] <font size=2>".$rows["Titolo"]."</font>
    
    ";
    
    		//Qui casca l'asino. Se è indicata una sottoarea fa una terza query, quindi il titolo lo legge da una nuova tabbella, ma lo ripete una seconda volta, mente io lo voglio una volta
    		if ($sottoarea!="" AND $link=="" AND $sottoarea2=="") 
    		{
    			$query2 = "SELECT ID,Titolo,Area,Link FROM sottoaree WHERE Area = $ID_areesx 	AND ID = $sottoarea";
    			$result2 = mysql_query($query2, $db);
    
    			while ($rows2 = mysql_fetch_array($result2)) 
    			{
    			//Qui non ci sono problemi, va bene... credo
    				if ($rows2["Link"]=="")
    					echo "[img]images/indice2.gif[/img] <font size=2><a href=sottoarea.php?ID=".$rows2["ID"]."&ID1=".$ID_areesx.">".$rows2["Titolo"]."</a></font>
    
    ";
    				else
    					echo "[img]images/indice2.gif[/img] <font size=2>".$rows2["Titolo"]."</font>
    
    ";
    			}//while ($rows2 = mysql_fetch_array($result2)) 
    		}//if ($sottoarea!="" AND $link=="" AND $sottoarea2=="") 
    	}//while ($rows = mysql_fetch_array($result)) 
    ?>

  8. #8
    D'accordo per le indicazioni, ma questo si era capito. Quello che non si capisce e': quanti record ti aspetti o ci sono?

    Perche' se i record sono due, è corretto, se il record e' uno solo, a prescindere dall'errore doppione, percheè usi while?

    Leggendo lo script la presenza di while suppone la presenza di record multipli.

    Il silenzio è spesso la cosa migliore. Pensa ... è gratis.

  9. #9
    avanzo un ipotesi,
    non è che in base a "Area = $ID_areesx AND ID = $sottoarea" tu possa avere effettivamente due record?
    magari cerchi il problema quando questo è altrove

  10. #10
    Non va, anzi è peggio.
    Uso while perché ci dovranno essere più record. Attualmente ce ne uno, che come detto viene letto 2 volte.

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 © 2025 vBulletin Solutions, Inc. All rights reserved.