Aide en PHP et Javascript

Discussion dans 'Web, design' créé par KAMI, 24 Août 2007.

Statut de la discussion:
Fermée.
  1. Offline
    KAMI spim spam spoum
    Bien le bonjour à tou(te)s,

    Alors voilà je réalise un petit site internet pour le club de mini foot d'un copain, seulement je suis bloqué à 2 endroits...

    Le premier :

    Réaliser le classement trié ! Il est évident que par une simple requête SQL je peux faire le classement sur les points mais là ou ça coince c'est en cas d'égalité. Je ne sais pas comment faire pour trier sur le nombre de victoire en fonction des égalités dans les points. Une équipe B ne doit pas se retrouver devant l'équipe A car elle a plus de victoire alors que l'équipe A a plus de points... ( Je ne sais pas si je suis très clair :0) ). J'imagine, qu'il faudrait réaliser un classement provisoire ( donc qui ne sera jamais affiché ). Ensuite parcourir le tableau et si il y a des égalités, comparer les nombres de victoire, défaite, nul,... J'ai peut être la bonne façon de pensé au problème, mais je ne vois pas du tout comment le mettre en pratique... :-(

    Pour vous aidez, voici une partie du code qui gère les résultats.

    Code:
    <?php
    $arrayerrors = array();//tableau de gestion des erreurs !
    echo('<div class="contenu">');
    /*echo($_POST['domicile']);
    echo($_POST['visiteur']);
    echo($_POST['butdomicile']);
    echo($_POST['butvisiteur']);
    echo($_POST['resultat']);*/
    if(isset($_POST['domicile']) || isset($_POST['visiteur']) || isset($_POST['butdomicile']) || isset($_POST['butvisiteur']) || isset($_POST['resultat'])){
    		//echo('Variable existent<br>');
    	}else{
    			array_push($arrayerrors,"Tous les champs doivent être remplis !");
    			//echo('Variable n\'existe pas<br>');
    		}
    
    if($_POST['domicile'] == $_POST['visiteur']){
    		array_push($arrayerrors,"1 équipe ne peut pas s'affonter elle même !");
    		//echo('même équipe<br>');
    	}/*else{
    			echo('2 équipes différentes<br>');
    		}*/
    						
    if(($_POST['domicile'] == 'non') || $_POST['visiteur'] == 'non'){
    		array_push($arrayerrors,"L'une des 2 équipes n'a pas été sélectionnée");
    		//echo('manque une équipe<br>');
    	}/*else{
    			echo('ok y a 2 équipes<br>');
    		}*/
    		
    if($_POST['resultat'] == 'non' ){
    		//echo('Un résultat n\'a pas été sélectionné !<br>');
    		array_push($arrayerrors,"Le résultat du match n'a pas été entré !");	
    	}/*else{
    			echo('Ok le résultat a été entré !<br>');
    		}*/
    	
    if($_POST['resultat'] == '4'){
    		if((($_POST['butdomicile'] != $_POST['butvisiteur']))){
    				//echo('Sélection impossible1<br>');
    				array_push($arrayerrors,"Le résultat est nul mais le score n'est pas identique !");
    			}/*else{
    					echo('OK sélection correcte');
    				}*/
    	}
    		
    if(($_POST['resultat'] == '2' || $_POST['resultat'] == '3') && (($_POST['butdomicile'] == $_POST['butvisiteur']))){
    		//echo('Sélection impossible2<br>');
    		array_push($arrayerrors,"Victoire ou défaite, mais but identique");
    	}else{
    			//echo('Victoire, défaite et bon score<br>');
    		}
    //affichage des erreurs
    if(count($arrayerrors) > 0){
    	echo('Les points suivant n\'ont pas été respecté ! ');
    	echo('<ul class="laliste">');
    	foreach($arrayerrors as $key){
    		echo('<li>'.$key.'</li>');
    		}
    	echo('</ul>');
    	echo('<a class="lien" href="index.php?page=classement">Retour</a>');
    	}					
    
    //Enregistrement de la news si il n'y a pas d'erreur
    if(count($arrayerrors) == 0){
    		mysql_connect("xxx", "xxx", "xxx"); // Connexion à MySQL
    		mysql_select_db("siteq"); // Sélection de la base user
    		
    											//récupération des données existantes
    		//les données de l'équipe à domicile
    		$query1 = "SELECT * INTO classement WHERE idclassement = ".$_POST['domicile'].""
    		$reponse1 = mysql_query($query1);
    		$donnees1 = mysql_fetch_assoc($reponse1);
    		
    		
    		//Les données de l'équipe visiteuse									
    		$query2 = "SELECT * INTO classement WHERE idclassement = ".$_POST['visiteur'].""
    		$reponse2 = mysql_query($query2);
    		$donnees2 = mysql_fetch_assoc($reponse2);
    		
    		//mise en cache des données du formulaire
    		$leresultat = $_POST['resultat'];
    		$nbrbutdomicile = $_POST['butdomicile'];
    		$nbrbutvisiteur = $_POST['butvisiteur'];
    		
    													//ajout des buts
    		//domicile											
    		$finbutpourdomicile = ($donnees1['pour'] + $nbrbutdomicile);
    		$funbutcontredomicile = ($donnees1['contre'] + $nbrbutvisiteur);
    		$differencebutdomicile = ($finbutpourdomicile - $funbutcontredomicile);	
    		
    		//visiteur
    		$finbutpourvisiteur = ($donnees2['pour'] + $nbrbutvisiteur);
    		$finbutcontrevisiteur = ($donnees2['contre'] + $nbrbutdomicile);
    		$differencebutvisiteur = ($finbutpourvisiteur - $finbutcontrevisiteur);
    		
    													//Nombre de match joués		
    													
    		//domicile
    		$matchjouedomicile = ($donnees1['jouer'] + 1);																			
    		//visiteur
    		$matchjouevisiteur = ($donnees2['jouer'] + 1);
    		
    													//les points
    													
    		
    													
    	}	
    				
    echo('</div>');	
    /*valeur de points
    defaite 0
    victoire 2 
    nul 1 */	
    ?>
    2ème problème :

    Cette fois ci, c'est en javascript, mes connaissances dans ce domaine, sont presque nulles :dead:. Je vais donc esayer d'être le plus précis possible dans ce que je vais raconter. Je dois donc faire "une carte de visite" pour chaque joueur, tous les joueurs se trouvent dans ma base de données. Je peux donc si j'ai envie sélectionner chaque joueur et tout plaquer directement sur la zone d'affichage, mais seulement voilà, mon copain voudrait une fenêtre popup pour afficher la carte de chaque joueur. Et bon voilà ouvrir une fenêtre popup je dois être capable de le faire mais là où je ne sais pas du tout comment faire, c'est pour afficher les informations de la base de données dans a fenêtre popup... Et bien évidement, choisir la mise en forme adéquate ( background, police,... ). Donc voilà si vous avez un petit tuto ou alors une explication à me fournir pour réaliser cette manipulation je l'a veut bien :-D


    Merci à tous d'avoir lu la tartine que je viens de mettre :-D :-D
    KAMI, 24 Août 2007
    #1
  2. Offline
    DaBeast Elite
    pour ton premier probleme un simple "order by points, victoires" (j'ai pas lu tout ton code donc c'est peut-etre pas les memes noms.) devrait faire l'affaire....
    DaBeast, 24 Août 2007
    #2
  3. Offline
    KAMI spim spam spoum
    Oui ça je sais. Mais c'est en cas d'égalité de points.
    KAMI, 24 Août 2007
    #3
  4. Offline
    kokotchY Elite
    Il suffit de faire ORDER BY points DESC, victoire DESC.
    Comme cela, il va d'abord trié les points (du plus grand au plus petit), ensuite il va trier les victoires (du plus grand au plus petit).
    kokotchY, 24 Août 2007
    #4
  5. Offline
    DaBeast Elite
    comme j'ai dit ....
    DaBeast, 24 Août 2007
    #5
  6. Offline
    KAMI spim spam spoum
    Oui mais au 2ème ORDER BY il ne va tenir compte du fait que les points ont déjà été trié ? Il na va pas mélanger tout à nouveau ?
    KAMI, 24 Août 2007
    #6
  7. Offline
    kokotchY Elite
    Essaie, tu veras :)
    Ca marche très bien, je l'ai testé en local.

    Ouais, mais je l'ai re-dit avec les DESC :p
    kokotchY, 24 Août 2007
    #7
  8. Offline
    Tifox ou pas
    Pour ton problème javascript, il suffit de faire un window.open(ULR, option_d_affichage), ou url est l'adresse d'une page contenant ce qu'il faut afficher.
    Comme ça, tu fais une simple page contenant ce qu'il faut afficher, et tu ne dois aps te tracasser d'essayer de passer directement le contenu de la page en javascript.
    Tifox, 25 Août 2007
    #8
  9. Offline
    KAMI spim spam spoum
    Merci à tous pour vos réponses.

    J'ai fais le classement, mais je ne sais pas encore le tester car je n'ai pas fini le code de gestion de résultat, je verrai donc à ce moment là si ça marche ou pas. Mais comme je n'ai pas d'erreur pour l'affichage, ça devrait marcher.

    Pour le Javascript :

    Si j'ai bien compris ce que tu m'as dis, je place le window.open(ULR, option_d_affichage) sur le lien du joueur, comme si c'était une simple page, et je fais relier la l'url à la page du joueur, mais j'aimerai ne pas créer une page par joueur. Donc je passerai les arguments dans l'url qui se trouve dans le window.open(ULR, option_d_affichage)

    l'URL sera donc : index.php?page=joueur&nom=nomdujoueur et dans ma page que j'aurai presque faite, je récupère en GET le nom du joueur et j'affiche ?

    C'est bien ça ?
    KAMI, 25 Août 2007
    #9
  10. Offline
    Tifox ou pas
    Oui, c'est bien ça.
    Tifox, 26 Août 2007
    #10
  11. Offline
    KAMI spim spam spoum
    Bon voilà mon classement est enfin fini ! C'est pas trop tôt, je pensais pas que c'était aussi compliqué que ça le foot :pfiou:

    Donc déjà merci à tous pour votre aide à ce niveau :)

    Mais bon j'ai quand même un problème avec le javascript...

    Ca ne marche pas :cry:

    Une partie du code de ma page index ou se trouve le code. J'utilise les includes pour afficher mes pages, je ne sais pas si ça peut avoir une influence sur le code javascript
    Code:
    <?php
    session_start();
    echo('<html>');
    echo('<head>');
    echo('<link rel="stylesheet" type="text/css" href="style.css">');
    ?>
    <script type="text/javascript">
    function ouvrir(url) {
      window.open(url, 'Détail du joueur', 'height=400, width=400,toolbar=no,menubar=no,status=no,resizable=yes')');
    }
    </script>');
    <?php
    echo('</head>');
    echo('<body>');
    echo('<div id="hyperbloc">');
    L'appel de la fonction javascript qui se trouve sur la page joueurA.php et qui est donc appelée en include.
    Code:
    echo('<td width="150px">')
    	echo('<a class="lien" href="javascript:ouvrir(index.php?page=detailjoueur)">Détails</a>');
    echo('</td>');
    Et j'ai comme résultat, RIEN DU TOUT ! :cry: Il n'y a aucun popup qui s'ouvre j'ai même désactiver le filtre de mon navigateur mais rien :beuh:
    KAMI, 28 Août 2007
    #11
  12. Offline
    Tifox ou pas
    Hormis les espaces qu'il y a dans le script, j'ai repéré 2 erreurs : dans ton lien href, tu as oublié d'encadrer l'url par des apostrophes (l'url est un chaine de caractères). Il faut aussi echapper ces apostrophe vu que ta chaine php est définie par des apostrophes.

    Et dans la définition de la fonction, il y a un ') en trop a la fin.


    Donc normalement, ceci devrait fonctionner (en tout cas chez moi ça fonctionne)

    Code:
    function ouvrir(url) {
      window.open(url, 'Détail du joueur', 'height=400, width=400,toolbar=no,menu  bar=no,status=no,resizable=yes');
    }
    
    
    echo('<td width="150px">')
    	echo('<a class="lien" href="javascript:ouvrir(\'index.p  hp?page=detailjoueur\')">Détails</a>');
    echo('</td>');
    Tifox, 28 Août 2007
    #12
  13. Offline
    KAMI spim spam spoum
    Un très grand merci Tifox ça marche très bien maintenant. :=)
    KAMI, 28 Août 2007
    #13
Statut de la discussion:
Fermée.